文档章节

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

eui988
 eui988
发布于 2015/04/18 21:51
字数 1033
阅读 83
收藏 1
点赞 0
评论 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 

© 著作权归作者所有

共有 人打赏支持
eui988
粉丝 48
博文 156
码字总数 83777
作品 0
拉萨
系统管理员
加载中

评论(1)

瘦-马
瘦-马
懒人镜像包MongoDB3.01默认压缩引擎,一键构造MongoDB集群分片,一键初始化数据并且分片
https://github.com/supermy/mytools/tree/master/mymongodb
MongoDB 4.0 RC 版本强势登陆

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

张友东 ⋅ 05/30 ⋅ 0

MongoDB 4.0 首个 RC 版发布,支持多文档事务

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

局长 ⋅ 06/05 ⋅ 0

MongoDB 3.0新特性概述

MongoDB 在 2015年3月3日 跳过了 MongoDB 2.8版本,直接在 MongoDB 2.6版本后,发布了MongoDB 3.0版本。 随后在 2015年3月17日 发布了 MongoDB 3.0.1 版本; 在 2015年4月9日发布了 MongoDB ...

xinsir999 ⋅ 05/02 ⋅ 0

大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据 ⋅ 04/17 ⋅ 0

一文读懂Spring Boot、微服务架构和大数据治理之间的故事

微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用...

纯洁微笑 ⋅ 05/10 ⋅ 0

redis, memcached, mongo性能比较

1、性能 都比较高,性能对我们来说应该都不是瓶颈 总体来讲,TPS方面redis和memcache差不多,要大于mongodb 2、操作的便利性 memcache数据结构单一 redis丰富一些,数据操作方面,redis更好一...

无精疯 ⋅ 04/23 ⋅ 0

如何在Ubuntu 18.04 LTS上安装和配置MongoDB

如何在Ubuntu 18.04 LTS上安装和配置MongoDB IMCN 18分钟前暂无评论 阅读 9 次 MongoDB是一款非关系型数据库,提供高性能,高可用性和自动扩展企业数据库。 MongoDB是一个非关系型数据库,因...

IMCN ⋅ 05/05 ⋅ 0

OneinStack 1.7 发布,一键 PHP/JAVA 安装工具

OneinStack 1.7 发布了,这个脚本是使用 shell编写,为了快速在生产环境上部署lnmp/lamp/lnmpa/lnmt(Linux、Nginx/Tengine/OpenResty、 MySQL/MariaDB/Percona/MongoDB/PostgreSQL、PHP、A...

lj2007331 ⋅ 04/25 ⋅ 0

MongoDB 4.0.0-rc4 发布,分布式文档存储数据库

MongoDB 4.0.0 RC 4 已发布。 该版本更新情况请查看提交记录。 下载地址: Source code (zip) Source code (tar.gz) 未发现官方对该 RC 版的更新描述,不过 MongoDB 4.0.0 的核心特性官方早已...

淡漠悠然 ⋅ 06/10 ⋅ 0

waylau/mongodb-file-server

MongoDB File Server(基于 MongoDB 的文件服务器) MongoDB File Server is a file server system based on MongoDB. MongoDB File Server is committed to the storage of small files, su......

waylau ⋅ 04/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部