1、标题,公司使命TeambitionMongoDB多数据中心的方案选型之路E叔E叔周李洋 MongoDB Master Teambition运维总监 MongoDB上海用户会会长 初衷选型的路途目的 Active-Standby or Active-Active?直连or专线?Single-Cluster or Multi-Cluster?Repl set tag or Shard tag range?Distributed queue or Trace oplog?目的业务需要?安全级别需要?数据分析需要?目的Teambition业务本身是为了更好的团队协作,并且随着用户量和使用行业、企业的增
2、加,越来越多的跨国协作需求体现出来。对TB的选型来说,目的就是多region(大陆/海外)来提供服务,逐步扩大市场。总结而言,是业务的需要。Active-Standby or Active-Active?场景需求 技术需求 安全级别需求 Active-StandbyRepl Set层面的Active-Standby模式,可以通过上图来进行了解。-复制集节点分布于2个DC-Standby DC中的节点不可成为主-可加入Tag来辅助应用 Active-ActiveRepl Set层面的Active-Active模式,可以通过上图来进行了解。-复制集节点分布于3个DC-每个DC不拥有多数个节点-可加
3、入Tag来辅助应用应用集群到数据库之前的流量带宽情况MongoDB Repl set 节点之间的流量带宽情况直连与专线分别的延时测试,丢包测试业务模式需求带宽流量情况在直连与专线的选型路上,我们进行考量的是多种方案下的带宽、流量问题,而后进行了一系列的延时测试、丢包测试、各类大流量下的测试。贵的有贵的理由Single-Cluster or Multi-Cluster?单集群还是多集群的选择往往受到业务本身,以及希望实现什么样的多数据中心架构影响 是否需要所谓的多primary写入 Repl set tag or Shard tag range?数据库集群模式的选择 对写入位置的需求 Repl
4、Set TagIn tag sets,all tag values must be strings ReadPrefWriteConcern通过Shard Tag Range也可以很好的将同个Sharding集群中的不同节点分布在不同的DC中并有针对性的提供给应用进行访问Shard Tag RangeDistributed queue or Trace oplog?场景需求 已有技术框架是否直接可供使用 分布式消息队列分布式消息队列的解决方案主要是在producer与consumer之间添加一层,通过此来在多个DC之间进行数据同步,并由各个DC的consumer进行消费。Trace Oplog
5、Trace Oplog的解决方案是在数据经由mongodb后对集群中的oplog进行trace,并针对需要部分的oplog进行获取,并在各个DC中进行apply。回顾Teambition多region以提供更好的体验,同时逐步布局海外市场。Active-Active Multi-Cluster Trace Oplog Teambition的实现综合我们的实际需求以及现有架构遗留,TB最后选择了通过上图的方式来实现。回头看看目的 Active-Standby or Active-Active?直连or专线?Single-Cluster or Multi-Cluster?Repl set tag or Shard tag range?问答标题,公司使命