MongoDB功能预览:http://pan.baidu.com/s/1k2UfW
MongoDB在赶集网的应用:http://pan.baidu.com/s/1bngxgLp
MongoDB在京东的使用:http://pan.baidu.com/s/1qWkawv6
MongoDB 在赶集网的应用
赶集网 DBA
-
选型失败的案例
-
选型成功的案例
-
服务化与运维
-
失败案例
-
不支持 join,数据库支持反范式
-
过多内联数据,索引庞大,性能过低
-
过多聚合及计算功能,数据库不堪重负
-
基于地理位置, mongodb 二级索引
-
schema free,无传统 DB DDL 负担
-
document 丰富的数据结构类型
-
mongodb 1.8 全局锁,读写超时非常严重
-
直到 2.0 DB 级锁,才有单库单表设计
-
技术选型过于激进,调研及测评不够充分
-
发帖过滤,实时性要求高
-
编辑审核,条件非常复杂
-
时间段集中,高峰期大量读写
-
发布审核
-
失败原因
-
社区系统
-
失败原因
-
成功案例
-
之前用 MySQL,13年底全部切到 MongoDB
-
提供登录,注册,收藏功能
-
第三方登录,绑定,手机注册认证,绑定
-
pv 浏览技术
-
redis: 浪费内存,数据持久化慢
-
ssdb: 解决内存问题,但仍需客户端实现分片
-
mongodb: 自动分片,弱跨机房应用
-
other?
-
用户中心
-
mongodb 2.7.7,32 replicate sets,128 shards
-
18 台 2U,64G,普通磁盘,raid 0
-
线上 13 亿,
-
Proxy vs DBrouter
-
tddl
-
cobar, atlas
-
服务高可用
-
服务端 netscaler 硬件负载均衡
-
优先选本机 mongos,失败后请求 LVS
-
运维3板斧
-
归档: 隔离冷数据,提高内存利用率
-
SSD: scale up,提升单机性能
-
分片: scale out,mongo 提前分片,横向扩展
-
跨机房问题
-
慎用 IP,尽量用内网 DNS
-
特别是 config,迁移时需要重启集群
-
MongoDB 无跨机房 replset mirror 的概念
-
硬件差异问题
-
主从复制延迟,slaveok出现数据不一致
-
api 分级,个别功能调用 getlasterr 确保关键业务写入成功
-
调整 votes 和 priority,使高性能主库抢占
-
磁盘与内存
-
mongodb 使用磁盘非常豪放,定期瘦身
-
小步快跑,内存脏页均匀刷入磁盘,减少IO冲击
-
官方jira,别人采的坑
主要流程
-
MongoDB 2.8 版本特性与功能
-
MongoDB 在赶集网的应用
-
MongoDB 最佳实践
MongoDB 2.8 版本特性与功能
TJ MongoDB 开发者
TJ 强调 MongoDB 没有实际意义上的锁,只有 Latch,门栓。
2.6 库级锁 Latch,没有 Lock,写内存的一刹那锁住内存
2.8 无锁的 MVCC 并发,WIREDTIGER,snapshot isolation
-
2.6 MMAP 内存映射,库级锁
-
2.8 MMAP 集合级锁
-
2.8 WIREDTIGER 无锁
-
WIREDTIGER 存储模式
-
LSM(HBASE, Cassandra) - Log Structured Merge
-
B-TREE
-
LSM
-
数据写内存,异步写硬盘
-
读性能有问题,性能一般
高并发写应用场景
-
压缩算法
-
SNAPPY - 默认压缩方式,速度快,压缩率OK,32k cache 压缩
-
ZLIB - 压缩率高,占用 CPU 高,随时压缩,凑够 32k 落盘
更大的复制集群数: 12 - 50
-
2.6 Logging 控制
-
2.8 Logging 可控制
-
更新的工具集
-
Go 语言重写
-
多线程
-
支持输入校验
-
增强的导入导出性能
-
运维 OpsManager
-
监控,备份,集群管理
MongoDB 最佳实践
京东 DBA
-
复制集
-
分片架构
-
监控和备份
-
MS 不支持读写分离,不支持 HA,已放弃 MS 架构
-
都是副本级架构
-
部署奇数个节点
-
Arbiter
-
primary 和 Secondary 一般放在2个机柜里, 机器是双电, 多机房
-
write concern 的配置,会导致丢数据,默认的配置安全级低?
-
replicate set architecture
-
官方不建议开启读写分离
-
read preference primary
-
sharding architecture
-
monitor
-
zabbix + server status + rs status
-
backup
-
全量备份
-
延迟备份
-
增量备份和增量恢复
-
使用
-
商品信息,大字段,很多不固定的属性(NoSQL)
-
比价系统
-
关注系统
-
日志类,手机短信 (TokuMX压缩,数据量比较大,不稳定,半夜重启,正在测试 2.8 的压缩性能)
-
用户访问日志 (TokuMX)
有疑问加站长微信联系(非本文作者)