文档章节

MongoDB 最佳实践及2.8版本特性与功能

1899
 1899
发布于 2015/04/18 21:51
字数 1033
阅读 88
收藏 1

主要流程

  1. MongoDB 2.8 版本特性与功能

  2. MongoDB 在赶集网的应用

  3. 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

  1. 复制集

  2. 分片架构

  3. 监控和备份

  • 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)

MongoDB 在赶集网的应用

赶集网 DBA

  1. 选型失败的案例

  2. 选型成功的案例

  3. 服务化与运维

  • 失败案例

    • 不支持 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功能预览:http://pan.baidu.com/s/1k2UfW

MongoDB在赶集网的应用:http://pan.baidu.com/s/1bngxgLp

MongoDB在京东的使用:http://pan.baidu.com/s/1qWkawv6 

本文转载自:http://blog.xtao.me/articles/beijing-mongodb-user-group/

共有 人打赏支持
1899
粉丝 51
博文 206
码字总数 106081
作品 0
宝山
运维
私信 提问
加载中

评论(1)

星辰大海88
星辰大海88
懒人镜像包MongoDB3.01默认压缩引擎,一键构造MongoDB集群分片,一键初始化数据并且分片
https://github.com/supermy/mytools/tree/master/mymongodb
Oracle 的 NoSQL 恶梦 MongoDB

Oracle的NoSQL恶梦MongoDB (暨MongoDB发布2.6版本之际) 这次发布描绘出了一个极具前景的公司或将引领未来超过十年的创新。 By Jack Clark, 8 Apr 2014 翻译:无若 快速崛起的数据库MongoDB...

溪边九节
2014/04/09
10.5K
40
MongoDB 4.0 RC 版本强势登陆

MongoDB 因其灵活的文档模型、可扩展分布式设计广受开发者喜爱,在此基础上,MongoDB 4.0 推出了更强大的功能支持,目前4.0第一个RC版本已经发布,本文将介绍 MongoDB 4.0 核心的一些新特性。...

张友东
2018/05/30
0
0
MongoDB 4.0 首个 RC 版发布,支持多文档事务

MongoDB 因其灵活的文档模型、可扩展分布式设计广受开发者喜爱,在此基础上,MongoDB 4.0 推出了更强大的功能支持,目前 4.0 第一个 RC 版本已经发布。 开始体验 MongoDB 4.0 RC:下载地址 ...

局长
2018/06/05
1K
5
MongoDB 宣布收购 WiredTiger 存储引擎

MongoDB 网站上发布公告,宣布 WiredTiger 加入 MongoDB 团队。WiredTiger 将直接参与 MongoDB 2.8 以支持 WiredTiger 存储引擎,同时为以后的 MongoDB 版本继续开发 WiredTiger 。同时 Wire...

oschina
2014/12/17
4.8K
23
MongoDB【最新版V2.6】- 发行说明

开发团队表示,MongoDB 2.6是迄今为止改进最大的版本,全面增强了核心服务器,引入了新的开创性的自动化工具、重要的企业特性等等。 MongoDB 2.6版本的主要改进包括: 1 重写了整个查询执行引...

止静
2014/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
9
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
5
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部