《App后台开发运维和架构实践》读书笔记

来源:互联网 发布:arm linux内核 编辑:程序博客网 时间:2024/06/05 06:11

8.1 优点:

读写性能高;灵活的文档模型;水平扩展


8.2 核心机制

8.2.1 MMAP(内存文件映射):出去了"内存缓冲区"这么一个环节;

文件映射到进程空间,访问的时候才会加载到物理内存;物理内存不够时,会导致Swap至磁盘,导致性能严重下降!

每分钟/每5秒,把修改过的数据flush到磁盘上(这就是修改后当时看不到变化的原因!)

8.2.2 Journal日志:两次flush之间的数据修改操作,会“一条一条"的append在Journal日志,宕机后会读这个进行数据恢复;


8.3 集合(数据表), 文档(数据行)

数组,使得每个数据行可以有不同的字段!!:

{"name":"大衣",

"price":110.00,

"params":[

  {"name": "尺寸", "value":"S"},

  {"name": "颜色", "value":"红"}

]

}


8.4 高可用集群

8.4.1 主从(已淘汰)

一主一从备份;一主多从分解压力,主节点负责所有写操作,从节点负责读操作;

缺点:主节点写压力大;主节点宕机后,不能自动切换副节点当主节点;

8.4.2 副本集

主节点:负责写;  副本节点:负责读;  仲裁节点:负责选举主节点

还是一主多副;

通过心跳发现主节点宕机;自动发起选举;

8.4.3 分片


Router: 接收客户端请求,路由到Shard上;

Shard: 存储实例;可主从副本集配置;

Config Servers: 存储配置信息(路由,分片,等信息),存在磁盘上的,重启可恢复。多副本备份;

参考:https://docs.mongodb.com/manual/sharding/


8.5 LBS支持

8.5.1 查找附近的人

8.5.2 查找某个范围内的坐标(矩形,圆,多边形)


8.6 MongoDB 3.0

存储架构更丰富:老版本MMAP有库锁,限制了最大并发客户端个数;新版本改为集合锁;新支持WiredTiger存储引擎,实现了数据行级别的锁,性能提升巨大;

支持压缩,省存储空间;

集群副本集,分片等方式,新增了管理工具,运维成本降低;

阅读全文
0 0
原创粉丝点击