《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存储引擎,实现了数据行级别的锁,性能提升巨大;
支持压缩,省存储空间;
集群副本集,分片等方式,新增了管理工具,运维成本降低;
- App后台开发运维和架构实践读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》读书笔记
- 《App后台开发运维和架构实践》前言
- 《App后台开发运维和架构实践》推荐序
- 《App 后台开发运维和架构实践》完整目录
- 《App后台开发运维和架构实践》样章下载
- 《App后台开发运维和架构实践》资源汇总
- 《App后台开发运维和架构实践》勘误
- 《App后台开发运维和架构实践》勘误
- App后台开发运维和架构实践学习总结(7)——RESTful API 设计规范
- App后台开发运维和架构实践学习总结(1)——App后台核心技术之用户验证方案
- App后台开发运维和架构实践学习总结(6)——App客户端与后台交互方式总结
- App后台开发运维和架构实践学习总结(8)——后台产品设计的4个原则
- JVM中的对象创建、内存布局和访问定位
- Wireless Network
- Java MongoDB 删除
- java 用getClass()获取对象的类型类
- 对换
- 《App后台开发运维和架构实践》读书笔记
- Java MongoDB 保存图片
- Nutz 设计模式应用 --- 前言
- C语言用异或的方法将两个数的值互换
- learn python the hard way (personal) -- Ex1
- There is no getter for property named 'user' in 'class com.gao.model.Message
- Centos7-Python3.6.3安装
- 求某个范围内的完全数
- 表单校验-validate.js