MongoDB从入坑到入迷

背景: 我司是一家正处于高速发展,目前拥有数百万用户,年销售额近五十亿的社交电商公司。公司技术部建立之初,为了适应用户量的高速增长,与业务的不断变更迭代,在选用数据库的时候,经过调研对比我们选择了MongoDB!

是的,你没看错,All in MongoDB!

全文大纲:

  1. 为什么使用MongoDB(选择数据的时候我们是怎么考虑的?)
  2. MongoDB架构(99.99%高可用,晚上安心睡大觉!)
  3. MongoDB 分片(海量数据应对之道!)
  4. MongoDB文档模型介绍(灵活!灵活!灵活!)

1. 为什么使用MongoDB

因为我司主要做社交电商的业务,所以对数据库的性能有一定的要求,加上商品交易是公司主要盈利来源,所以对数据库的高可用也有一定的要求。

总结一下我们对数据库的要求:

  • 安全,稳定
  • 高可用
  • 高性能

我们在考虑数据库选型的时候主要考虑什么?

  • 数据规模
  • 支持读写并发量
  • 延迟与吞吐量

从数据规模来说订单和商品SKU,还有会员信息这些重要的数据记录肯定会随着时间源源不断的增长,所以我们需要的不仅仅是满足当下要求,更需要为半年一年后海量数据更为方便的扩容做考量!

下面我们从MongoDB的架构,性能,和文档模型来介绍一下我们选择MongoDB的理由!

2. MongoDB架构

2.1 关于高可用

数据库作为系统核心,要保证99.99%的可用性,而高可用的保证来自于MongoDB冗余数据的复制集模式。MongoDB自带多副本高可用,只需要合理的配置,就能避免单数据库节点故障导致服务的不可用。

一主两从:
一主两从.png

图例说明:

  • 一个Primary主节点,主要接受来自server的读写
  • 两个Secondary从节点,用于同步来自Primary的数据

关于高可用:
当主节点发生故障的时候,两个从节点会进行选举,投票产生一个新的主节点,进而保证服务的可用性。(PS:在选举过程中数据不可写入,但是如果Secnondary节点配置可读,那么此时是可以读取数据的。)这就是MongoDB的高可用,配置简单,不需要引入额外的中间件或者插件去辅助数据库节点间的故障转移。

2.2 关于选举算法《分布式一致性算法—raft》:

raft协议是在leader节点发生故障或者网络分区导致脑裂时如何保证分布式数据一致性的一个算法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值