计算机存储设计理论概述不同的数据库存储系统都会设计不同的索引结构来优化查询/写入效率, 在讨论这些结构之前, 我们先从头回顾一下计算机存储的一些设计 计算机存储分级设计计算机的存储器设计采用了一种分层次的结构。寄存器、高速缓存、主存和硬盘,从顶至底,这些存储器的速度逐级递减而容量逐级递增,并且伴随越来越低的价钱,如图 在现代计算机里面, 上面的存储实际上分为CPU(寄存器,高速缓存L1、L2、L3)、内存、硬盘( 2024-05-24 操作系统 > 算法 #lsm #存储
网络IO多路复用前置阅读对阻塞、非阻塞, 同步、异步的描述参考之前的文章: 网络IO编程(阻塞/非阻塞/同步/异步) Linux wakeup callback 机制Linux(2.6+)内核的事件wakeup callback机制,这是IO多路复用机制的核心: Linux 通过 socket 睡眠队列(sleep list)来管理所有等待socket的某个事件的 process,同时通过 wakeup 机制来异 2024-04-16 IO
ES快照原理ES Snapshot 快照 概览快照模块是 ES 备份、迁移数据的重要手段。ES 快照支持增量备份,支持多种类型的仓库存储。 仓库用于存储快照,支持共享文件系统(例如 nfs),以及通过插件支持的HDFS、Amazon S3、Microsoft Azure、Google GCS。譬如云上对象存储: elasticsearch-repository-cos elasticsearch-repos 2024-03-08 中间件 #es
单元化架构思考架构演进单体架构单体架构最初就是打一个大包, 将UI、后台服务都打在一起。 早期的 ASP、JSP、PHP 技术体系中非常流行。随着业务的发展, 架构的复杂性、流量的增长, 单体架构的逐渐产生了一些单点瓶颈: 应用数据库竞争 应用瓶颈 数据库瓶颈 应用数据库竞争最开始应用和数据库部署在同一台机器很容易产生资源竞争 所以第一步就是把程序和数据库分开部署 应用瓶颈-集群部署当流量增多后, 单应 2024-02-20 系统设计
mongoDB知识总结MongoDB 简介MongoDB 是基于文档的 NoSql 存储引擎。MongoDB 的数据库管理由数据库、Collection(集合,类似MySql的表)、Document(文档,类似MySQL的行)组成,每个Document都是一个类JSON结构BSON结构数据。 MongoDB 的核心特性是:No Schema、高可用、分布式(可平行扩展),另外MongoDB自带数据压缩功能,使得同样的数 2024-01-12 中间件 #mongo
docker网络原理Docker 网络架构目前围绕着 docker 的网络,目前有两种比较主流的声音,docker主导的 Container network model(CNM) 和社区主导的 Container network interface(CNI) CNI(Container Networking Interface)架构CNI(Container Networking Interface)提供了一种lin 2023-10-26 云原生 #docker #网络
go net/http标准库源码go 快速实现一个 HttpServergo 的标准库 net/http 可以快速实现一个 web 服务器: 1234567891011121314151617181920func index(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World")}type HelloH 2023-10-08 go
深入理解 go 反射反射反射是可以让我们在程序运行时(runtime)访问、检测和修改对象本身状态或行为的一种机制。 GO 反射的基础是interface和类型系统: 结合 interface 的结构, 可以看出 go 的 interface 是由 type 和 data 两部分组成的, type 承载类型信息, data承载类型的数据。详细请参考深入理解 go interface 反射对象 reflect.Typ 2023-07-31 go
深入理解 go interfaceinterface 是什么在 go 里面通过 interface 实现了泛型、多态等面相对象特性, 那么在 go 的 interface 到底是什么 省略掉繁琐的编译过程(暂时对go tool 生成的汇编代码看的不是很懂), 拿出结论: 空接口 interface{} 底层结构是 eface 具体的 interface 类型底层结构是 iface iface 和 eface 2023-07-11 go #interface
go pprof使用pprof 简介工欲善其事必先利其器, java 中有 async-profile、 arthas、jstack/jmap/jstat 等一系列工具来辅助排查性能问题 在 linux 下,常用的调试定位工具: vmstat、iostat、 mpstat、netstat、 sar 、top:查看系统、程序信息等 gprof、perf、perf top:定位到具体函数、调用等 strace、ltra 2023-06-25 go #tools