问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

高并发高性能的DB数据同步方案

发布网友 发布时间:2024-09-28 17:51

我来回答

1个回答

热心网友 时间:11小时前

在数据库系统生态中,数据同步机制对于支撑逻辑单元的数据冗余高可用至关重要。例如,Mysql、Redis和MongoDB等都支持多节点实例间的数据同步。当需要跨逻辑单元或跨数据中心的数据同步时,可以实现同城多机房的负载均衡、多机房互备、异地多数据中心容灾和多活。本文将介绍一款名为MongoShake的MongoDB数据同步框架。

MongoShake从源库抓取oplog数据,通过不同的tunnel通道发送至目的库。源库支持多种类型,包括ReplicaSet、Sharding、Mongod等,目的库支持Mongos、Mongod等。现有通道类型包括直接写入、通过net/rpc、tcp、文件和Kafka等方式连接。

在数据同步中,MongoShake支持表级别和文档级别的并发。然而,id级别的并发要求数据库中没有唯一索引约束,而表级别并发在表数量较少或分布不均的情况下性能不佳。因此,MongoShake提供了写入前的冲突检测功能,以解决表内唯一键冲突。目前,MongoShake仅支持唯一索引类型,不支持前缀索引、稀疏索引、TTL索引等其他索引。

冲突检测功能的前提是MongoDB Schema一致,且不监听Oplog的System.indexes表改动。此外,MongoShake在同步过程中对索引的操作可能引发异常,如后台创建索引期间的写请求、前台创建索引导致的用户请求阻塞以及数据不一致情况下的处理方式。

为了支持冲突检测,MongoShake修改了MongoDB内核,使其在Oplog中包含uk字段,标识涉及的唯一索引信息。处理流程包括将连续的oplog打包成batch,分析依赖关系并划分成多个段,以及对段内数据进行并发写入和段间顺序写入。存在依赖关系的oplog将被拆分到两个段中,以确保段内并发和段间顺序执行。

通过插入barrier或基于关系依赖图进行拆分,MongoShake支持数据的并发处理和依赖关系的管理,从而提高数据同步性能。扩展应用场景包括修改数据异步刷盘场景,如个人属性、商品属性、订单信息和评论信息的修改等。对于微博评论内容,可以采用消息队列异步刷盘方式,通过分区和串行化处理实现高效的并发性能。

欲了解更多分布式应用系统架构设计与实践内容,欢迎关注公众号:互联网架构师之路,获取最新架构材料。

热心网友 时间:11小时前

在数据库系统生态中,数据同步机制对于支撑逻辑单元的数据冗余高可用至关重要。例如,Mysql、Redis和MongoDB等都支持多节点实例间的数据同步。当需要跨逻辑单元或跨数据中心的数据同步时,可以实现同城多机房的负载均衡、多机房互备、异地多数据中心容灾和多活。本文将介绍一款名为MongoShake的MongoDB数据同步框架。

MongoShake从源库抓取oplog数据,通过不同的tunnel通道发送至目的库。源库支持多种类型,包括ReplicaSet、Sharding、Mongod等,目的库支持Mongos、Mongod等。现有通道类型包括直接写入、通过net/rpc、tcp、文件和Kafka等方式连接。

在数据同步中,MongoShake支持表级别和文档级别的并发。然而,id级别的并发要求数据库中没有唯一索引约束,而表级别并发在表数量较少或分布不均的情况下性能不佳。因此,MongoShake提供了写入前的冲突检测功能,以解决表内唯一键冲突。目前,MongoShake仅支持唯一索引类型,不支持前缀索引、稀疏索引、TTL索引等其他索引。

冲突检测功能的前提是MongoDB Schema一致,且不监听Oplog的System.indexes表改动。此外,MongoShake在同步过程中对索引的操作可能引发异常,如后台创建索引期间的写请求、前台创建索引导致的用户请求阻塞以及数据不一致情况下的处理方式。

为了支持冲突检测,MongoShake修改了MongoDB内核,使其在Oplog中包含uk字段,标识涉及的唯一索引信息。处理流程包括将连续的oplog打包成batch,分析依赖关系并划分成多个段,以及对段内数据进行并发写入和段间顺序写入。存在依赖关系的oplog将被拆分到两个段中,以确保段内并发和段间顺序执行。

通过插入barrier或基于关系依赖图进行拆分,MongoShake支持数据的并发处理和依赖关系的管理,从而提高数据同步性能。扩展应用场景包括修改数据异步刷盘场景,如个人属性、商品属性、订单信息和评论信息的修改等。对于微博评论内容,可以采用消息队列异步刷盘方式,通过分区和串行化处理实现高效的并发性能。

欲了解更多分布式应用系统架构设计与实践内容,欢迎关注公众号:互联网架构师之路,获取最新架构材料。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 4步打造高性能MySQL数据库4高性能mysql 华为荣耀8死机黑屏怎么办? 荣耀8 手机一直没反应怎么办 新华社与人民日报是否直接相关? 适宜性的教育有什么意义呢? 12306原本的手机号停用如何改-铁路资讯 冻到7甘,仲来食牛杂煲广东话什么意思 三10了时顶60来什同度角过度原的3样因是计2么后出怎算,镜为棱0,要最 iso2768公差是多少? 三米高10米长的坡度是多少? 中国移动怎么查自己手机号码 附属单据附属单据的类型 考研二战 户口档案问题 什么原因导致脸部皮肤起皮? 脸起皮什么原因 为什么脸会起皮 你认为一家人最重要的是什么?用二个字表达.或四个字.?? 割过包皮一个月多了为什么还有浮肿 割了包皮一个月了,系带水肿还很历害,每天洗完澡,用碘伏... 包皮手术后浮肿怎么办 如何实现MySQL上亿条数据的同步mysql上亿数据同步 MySQL数据库为何不使用雪花算法mysql不使用雪花算法 由数字0,1,2,3这四个数字,可以组成多少个无重复数字的三位偶数 ...可以组成多少个不同的三位数。(2)可组成多少个没有重复数_百度... ...0123这四个数字可组成多少个无重复数字的三位偶数。。。求多解... 考研二战报名需要现场确认吗 ...为了专心考研也没有找工作,像这种状况现场确认需要准备哪些额外的... 二战考研,没去调剂院校,档案还在调剂院校里,这样算退学吗?现场确认时... ...打算14年考研,我不知道报名和现场确认怎么办,请高手指教! 梦见韭菜生蛆是什么意思 如何关闭海尔空调的灯光功能? 海尔空调如何关闭灯光? 圈子什么意思 老习酒是坤沙酒吗 包青天经典台词精选120句 谁会武藏shotmaster300点胶机如何编程,如果有全部编程教程更好!万分... 全自动点胶机的调试方法视频教程 象征物型作文 为什么没法充话费了 网上充话费为什么充不了