最新要闻
- 从三岁到八十二岁的武则天(转载)---王晓磊著 之简介|每日视讯
- 现场视频可怕!四川一特斯拉撞飞路人致身亡:被撞者腾空而起-热门
- 6月1日开市!大观园早市回来啦
- 全球视讯!69㎡三房,72㎡四房,广州的户型都卷成这样了?
- 蛋白质纳米“计算机”问世:未来有望治疗癌症
- 贾跃亭造车梦成 李想:理想很多优秀负责人都来自法拉第未来 当前信息
- 快看:高颜值更有强悍性能 超频可解锁200W!影驰RTX 4060 Ti星曜OC显卡评测
- 砸手里了!推特估值大减:只剩马斯克收购价三分之一
- 马斯克高调收购“看走眼”?Twitter最新估值大跌近70%_世界时快讯
- 火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
- 环球快消息!福星股份董秘回复:截止5月29日公司股东人数约为5.48万
- 仓网升级,链通全国 顺丰供应链为小米打造原料央仓
- 性能超苹果A17 天玑9300卷出新高度:4个X4超大核详细规格出炉
- 【新视野】捷克一女婴出生2天就被母亲打耳洞 妈妈:应该是不疼的
- 微星发布全新Z790系主板:首次支持Wi-Fi 7 及5千兆网卡 世界热消息
- 又稳又圆 比亚迪仰望U8原地掉头为何这么慢?比快更难实现!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
当前讯息:淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?
文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版为您奉上珍贵的学习资源 :
免费赠送 :《尼恩Java面试宝典》持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备免费赠送 :《尼恩技术圣经+高并发系列PDF》,帮你 实现技术自由,完成职业升级, 薪酬猛涨!加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
(相关资料图)
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
说在前面
在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如拼多多、极兔、有赞、希音的面试资格,遇到一几个很重要的面试题:
- 说5种mysql 和 elasticsearch 数据一致性方案
与之类似的、其他小伙伴遇到过的问题还有:
Mysql 和 ES 数据一致性问题及方案?
Mysql 和 redis 数据一致性问题及方案?
如果保证 Mysql 和 redis 数据一致性?
如果保证 Mysql 和 HBase数据一致性?
等等等等.....
这里尼恩给大家做一下系统化、体系化的线程池梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”。
也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典》V70版本,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。
最新《尼恩 架构笔记》《尼恩高并发三部曲 》、《尼恩Java面试宝典》 的PDF文件,请通过公众号【技术自由圈】获取
本文目录
目录- 说在前面
- 本文目录
- 问题场景分析
- 方案一:同步双写
- 方案二:异步双写
- 方案2.1 使用内存队列(如阻塞队列)异步
- 方案2.2 使用消息队列(如阻塞队列)异步
- 方案三:定期同步
- 方案四:数据订阅
- 方案五:etl 工具
- 说在最后
- 参考文献:
- 技术自由的实现路径:
- 实现你的 架构自由:
- 实现你的 响应式 自由:
- 实现你的 spring cloud 自由:
- 实现你的 linux 自由:
- 实现你的 网络 自由:
- 实现你的 分布式锁 自由:
- 实现你的 王者组件 自由:
- 实现你的 面试题 自由:
- 获取11个技术圣经PDF:
问题场景分析
咱们的生产需求上,为了便于商品的聚合搜索,高速搜索,采用两大优化方案:
- 把商品数据冗余存储在Elasticsearch中,实现高速搜索
- 把商品数据冗余存储在redis 中,实现高速缓存
很多的时候,要求保持很高的数据一致性。
比如:
- 要求 mysql 与 es 做到秒级别的数据同步。
- 要求 mysql 与 redis 做到秒级别的数据同步。
- 要求 mysql 与 hbase 做到秒级别的数据同步。
接下来,以 mysql 与 es 的数据一致,作为业务场景进行分析, 其他的场景比如mysql 与 redis 的数据一致性方案,都是差不多的。
只要大家能把下面的 5大数据一致性方案, 滔滔不绝的说出来,面试官一定会爱到 “不能自已、口水直流”。
方案一:同步双写
同步双写是一种最为简单的方式,在将数据写到 MySQL 时,同时将数据写到 ES。
同步双写优点:
这种方式简单粗暴,实时写入能做到秒级。
同步双写缺点:
- 业务耦合,这种方式代码侵入性强,商品的管理中耦合大量数据同步代码,要在之前写 mysql 的地方加写 es 的代码。以后写 mysql 的地方也要加写 es 的代码。
- 影响性能,写入两个存储,响应时间变长,本来 MySQL 的性能不是很高,再加一个 ES,系统的性能必然会下降。
- 不便扩展:搜索可能有一些个性化需求,需要对数据进行聚合,这种方式不便实现
- 高风险:存在双写失败丢数据风险
方案二:异步双写
同步操作性能低,异步性能高。
异步双写,分为两种:
- 使用内存队列(如阻塞队列)异步
- 使用消息队列进行异步
方案2.1 使用内存队列(如阻塞队列)异步
先把商品数据写入DB后,然后把 数据写入 BlockingQueue 阻塞队列
消费线程异步从 drain 数据,batch 写入 ElasticSearch, 保证数据一致性
方案2.2 使用消息队列(如阻塞队列)异步
如果内存队列里边数据丢失,那么es 当中的数据和DB就不一致了
如果解决呢?
- 方式1:定期同步 db数据到 es ,同步周期一般比较长,这里有比较长时间的不一致
- 方式2: 保证队列的可靠性,使用高可靠消息队列
生产场景中,一般会有一个搜索服务,由搜索服务去订阅商品变动的消息,来完成同步。
异步双写优点:
- 性能高;
- 不易出现数据丢失问题,主要基于 MQ 消息的消费保障机制,比如 ES 宕机或者写入失败,还能重新消费 MQ 消息;
- 多源写入之间相互隔离,便于扩展更多的数据源写入。
异步双写缺点:
- 硬编码问题,接入新的数据源需要实现新的消费者代码;
- 系统复杂度增加,引入了消息中间件;
- MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。
方案三:定期同步
为了保证 DB和ES /HBase 数据一致性,包括两个方面:
- 增量数据一致性
- 全量数据一致性
为了保证 DB和ES /HBase 的全量数据一致性, 往往需要进行定期的全量数据同步
数据增量数据,很少,并且,一致性要求不高,那么可以把增量数据一致性行的 同步双写、异步双写去掉。
定期同步优点:
实现比较简单
定期同步缺点:
- 实时性难以保证
- 对存储压力较大
当然,增量数据,可以考虑用定时任务来处理:
- 数据库的相关表中增加一个字段为 timestamp 的字段,任何 CURD 操作都会导致该字段的时间发生变化;
- 原来程序中的 CURD 操作不做任何变化;
- 增加一个定时器程序,让该程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来;
- 逐条写入到 ES 中。
方案四:数据订阅
如果要提高实时性,又要低入侵, 可以利用 MySQL 的 Binlog 来进行同步。
MySQL通过binlog订阅实现主从同步,canal Server 是一个伪装的slave节点,接收到binlog日志后,发送到MQ, 其他的 存储消费 MQ里边 的binlog日志,实现数据订阅。
架构图如下
这种方式和异步双写比较像,但是有两个优点:
- 第一降低了商品服务的入侵性,
- 第二数据的实时性更好。
所以使用数据订阅:
- 优点:
- 业务入侵较少
- 实时性较好
至于数据订阅框架的选型,主流的大体上是这些:
Cancal | Maxwell | Python-Mysql-Rplication | |
---|---|---|---|
开源方 | 阿里巴巴 | Zendesk | 社区 |
开发语言 | Java | Java | Python |
活跃度 | 活跃 | 活跃 | 活跃 |
高可用 | 支持 | 支持 | 不支持 |
客户端 | Java/Go/PHP/Python/Rust | 无 | Python |
消息落地 | Kafka/RocketMQ 等 | Kafka/RabbitNQ/Redis 等 | 自定义 |
消息格式 | 自定义 | JSON | 自定义 |
文档详略 | 详细 | 详细 | 详细 |
Boostrap | 不支持 | 支持 | 不支持 |
注意,尼恩的100Wqps三级缓存组件架构实操中,也介绍了,这种架构,存在秒级延迟。
如果不允许有秒级延迟的场景,不能使用这种架构。
具体请参见 尼恩的100Wqps三级缓存组件架构实操。
方案五:etl 工具
MySQL同步到Redis、MySQL同步到hbase、MySQL同步到es、或机房同步、主从同步等,都可以考虑使用elt工具。
什么是etl 工具呢?
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
常用的etl工具有: databus、canal (方案四用了这个组件,有etl 的部分功能)、otter 、kettle 等
下面以 databus为例,介绍一下。
Databus 是一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。由 LinkedIn 于 2013 年开源。
Databus 通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化 client 实时获取变更并进行其他业务逻辑。
特点:
- 多数据源:Databus 支持多种数据来源的变更抓取,包括 Oracle 和 MySQL。
- 可扩展、高度可用:Databus 能扩展到支持数千消费者和事务数据来源,同时保持高度可用性。
- 事务按序提交:Databus 能保持来源数据库中的事务完整性,并按照事务分组和来源的提交顺寻交付变更事件。
- 低延迟、支持多种订阅机制:数据源变更完成后,Databus 能在毫秒级内将事务提交给消费者。同时,消费者使用D atabus 中的服务器端过滤功能,可以只获取自己需要的特定数据。
- 无限回溯:对消费者支持无限回溯能力,例如当消费者需要产生数据的完整拷贝时,它不会对数据库产生任何额外负担。当消费者的数据大大落后于来源数据库时,也可以使用该功能。
再看看 Databus 的系统架构。
Databus 由 Relays、bootstrap 服务和 Client lib 等组成,Bootstrap 服务中包括 Bootstrap Producer 和 Bootstrap Server。
- 快速变化的消费者直接从 Relay 中取事件;
- 如果一个消费者的数据更新大幅落后,它要的数据就不在 Relay 的日志中,而是需要请求 Bootstrap 服务,返回的将会是自消费者上次处理变更之后的所有数据变更快照。
开源地址:https://github.com/linkedin/databus
说在最后
数据一致性的方案,是非常常见的面试题。
以上的5大方案,如果大家能对答如流,如数家珍,基本上 面试官会被你 震惊到、吸引到。
最终,让面试官爱到 “不能自已、口水直流”。 offer, 也就来了。
学习过程中,如果有啥问题,大家可以来 找 40岁老架构师尼恩交流。
本文题目以及参考答案,收入咱们的 《尼恩Java面试宝典》V70版本,可以找尼恩领取
参考文献:
清华大学出版社 《尼恩 Java 高并发核心编程 卷2 加强版》
4000页《尼恩Java面试宝典》
[1]. https://www.infoq.cn/article/1afyz3b6hnhprrg12833
[2].https://www.iamle.com/archives/2900.html
[3].https://blog.51cto.com/lianghecai/4755693
[4].https://qinyuanpei.github.io/posts/1333693167/
[5].https://github.com/alibaba/canal/wiki/ClientAdapter
技术自由的实现路径:
实现你的 架构自由:
《吃透8图1模板,人人可以做架构》
《10Wqps评论中台,如何架构?B站是这么做的!!!》
《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》
《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》
《100亿级订单怎么调度,来一个大厂的极品方案》
《2个大厂 100亿级 超大流量 红包 架构方案》
… 更多架构文章,正在添加中
实现你的 响应式 自由:
《响应式圣经:10W字,实现Spring响应式编程自由》
这是老版本 《Flux、Mono、Reactor 实战(史上最全)》
实现你的 spring cloud 自由:
《Spring cloud Alibaba 学习圣经》 PDF
《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》
《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》
实现你的 linux 自由:
《Linux命令大全:2W多字,一次实现Linux自由》
实现你的 网络 自由:
《TCP协议详解 (史上最全)》
《网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!》
实现你的 分布式锁 自由:
《Redis分布式锁(图解 - 秒懂 - 史上最全)》
《Zookeeper 分布式锁 - 图解 - 秒懂》
实现你的 王者组件 自由:
《队列之王: Disruptor 原理、架构、源码 一文穿透》
《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》
《缓存之王:Caffeine 的使用(史上最全)》
《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》
实现你的 面试题 自由:
4000页《尼恩Java面试宝典 》 40个专题
获取11个技术圣经PDF:
关键词:
-
当前讯息:淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?
文章很长,且持续更新,建议收藏起来,慢慢读![**疯狂创客圈总目录博客园版**](https: www cnblogs com c
来源: 当前讯息:淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?
世界热点!2022 Kube-OVN开源社区年度报告
天天视讯!可配置Modbus网关 嵌入式设备联网解决方案
从三岁到八十二岁的武则天(转载)---王晓磊著 之简介|每日视讯
现场视频可怕!四川一特斯拉撞飞路人致身亡:被撞者腾空而起-热门
6月1日开市!大观园早市回来啦
全球视讯!69㎡三房,72㎡四房,广州的户型都卷成这样了?
可视化探索开源项目的 contributor 关系 环球最新
蛋白质纳米“计算机”问世:未来有望治疗癌症
贾跃亭造车梦成 李想:理想很多优秀负责人都来自法拉第未来 当前信息
快看:高颜值更有强悍性能 超频可解锁200W!影驰RTX 4060 Ti星曜OC显卡评测
砸手里了!推特估值大减:只剩马斯克收购价三分之一
马斯克高调收购“看走眼”?Twitter最新估值大跌近70%_世界时快讯
火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
环球新动态:MySQL之DDL表创建及DML数据处理操作
今日视点:直播软件源码,审核的“中坚力量”鉴黄功能!
环球快消息!福星股份董秘回复:截止5月29日公司股东人数约为5.48万
仓网升级,链通全国 顺丰供应链为小米打造原料央仓
性能超苹果A17 天玑9300卷出新高度:4个X4超大核详细规格出炉
【新视野】捷克一女婴出生2天就被母亲打耳洞 妈妈:应该是不疼的
微星发布全新Z790系主板:首次支持Wi-Fi 7 及5千兆网卡 世界热消息
又稳又圆 比亚迪仰望U8原地掉头为何这么慢?比快更难实现!
肯德基麦当劳儿童节玩具断货:黄牛线上倒卖 焦点热门
猛打价格战,手术机器人市场要变天了
柏子滋心丸怎么样
稳增长政策接续发力预期升温 每日快讯
国内新一轮油价调整6月13日开启!大概率还是上涨
1599元 雷蛇战锤狂鲨专业极速版耳机发布:蓝牙、2.4GHz双模连接 焦点报道
天天新动态:《暗黑破坏神4》部分皮肤需氪金28刀 但不影响游玩
今天是世界无烟日 专家:电子烟同样有害健康 世界微头条
官方回应广东汕尾海滩突现百米生蚝带:建议尽量不要食用
JS的严格模式 天天日报
会流程图却不会UML活动图?活动图深度剖析,就怕你学不会! 世界快资讯
广西融安县市场监管局开展专项检查守护“美丽经济” 天天观点
旧了也是香饽饽!iPhone二手受追捧:保值好、iOS流畅、苹果够大牌 全球观察
每日速看!曾被认为女版乔布斯!“滴血验癌”创始人入狱:被判11年
杭州被赖车司机称将起诉两名乘客!超24小时不下车 被行拘
火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
一洗脸就进水:女子3千割眼袋3个月眼睛闭不合 医生提醒爱美要适当
深圳最好的医院是哪个医院正规_深圳最好的医院
张青松出席东亚及太平洋 中央银行行长会议组织 第64届副手会暨第33届 货币与金融稳定委员会会议_看点
今日热文:keycloak~自定义登出接口
快播:Blazor 跨平台的、共享一套UI的天气预报 Demo
天天热资讯!Linux中设置’sudo’的10个小技巧
广西启用上线一批机构编制和绩效管理信息化应用成果_今日视点
微软-动视收购案夏季听证
你能接受调休吗?2023年端午节放3天后连上6天:高速不免费
4块RTX 4090显卡都够用 全汉ATX 3.0电源上新:2500W功率
环球看热讯:达实智能05月30日获深股通增持251.81万股
近九成债基今年以来收益为正 股债市场“跷跷板”效应显现
【看新股】10家拟上市银行更新业绩数据:湖北银行增长较快 药都银行不良率居首
国产显卡已追上RTX 3060 英伟达黄仁勋发声:不能轻视
环球最资讯丨6月6日开售 国服暴雪让谁来接盘!《暗黑4》媒体口碑解禁 值得一玩
世界观焦点:618白菜价 国产32GB DDR4内存杀到329元(三星颗粒+XMP超频)
顶配1999元!卢伟冰:Redmi Note 12T Pro卖的很好 很多人钟爱LCD 当前速读
简讯:全球最高芯片公司!英伟达市值突破万亿美元 GPU无敌:Intel的CPU再见
环球看热讯:ps中怎么画矩形框(ps画矩形框的操作方法)
读数据压缩入门笔记03_VLC
天天微动态丨业内人士:随着高估值隐忧基本出清 当前基础设施REITs具备较好的分红吸引力
【独家】神十六成功对接空间站组合体 太空中国人数量超越美国人
天天热讯:沙特、俄罗斯减产也没用?国际原油跌超4%:美国开始“耍赖”
世界通讯!林草碳汇政策划重点
【世界速看料】流媒体协议之RTMP详解20230513
字节狂问1小时,小伙offer到手,太狠了!(字节面试真题) 全球速读
kali-linux运行python脚本时出现”word unexpected (expecting ")")“错误的解决 热点聚焦
抄底信号?基金公司出手自购!投研人士:市场迎来左侧布局较好时点
广东汕尾海滩突现大量生蚝!官方回应:建议尽量不要吃
互联网大厂学会“放弃”:风吹过 摔不死 全跑了 环球要闻
中国人2030年前登陆月球!美国真急了
比亚迪给国产大飞机C919当引航车:国产致敬国产 比肩同行
小米汽车又有大料!博主直接实拍MS11实车 造型帅呆
慎言笃行怎么读(慎言)
乙肝表面抗体阳性是什么意思呀_乙肝表面抗体阳性是什么意思_当前信息
揭秘新疆棉背后的硬核高科技
国家发展改革委:5月30日24时起国内汽、柴油价格每吨分别提高100元和95元
汽车报道:特斯拉人才流失严重电池工程总监或另起炉灶 世界观天下
因夜间跳闸导致养猪场内空气不流通 造成5000头猪在高温下被闷死
日本专家三年研究表明 中学生入学得到手机或将导致脑力直接停滞在小学
冰淇淋已成为茅台产业生态中最具代表性前沿产品 未来加大研发新产品
《英雄联盟》外服宣布将在13.7版本后 停止支持32位Windows操作系统
意大利威尼斯主河道部分水域水体颜色变成荧光绿 改变原因暂不明确
大熊猫“园润”遭一男子泼水 成都大熊猫繁育研究基地禁止其入内
荆州海事局持续优化营商环境助力港航企业健康发展_每日关注
君主立宪制国家是什么意思(君主立宪制)-今热点
SD协议-基本概念
计算画布内旋转元素的边界坐标|今日视点
世界观焦点:售15.29-20.39万元 奇瑞瑞虎9正式上市
79888元!大疆空中电影机DJI Inspire 3正式开售_滚动
仅1399元!米家净水器600G发布:双芯7级精滤 母婴可直饮_世界播报
全球快报:工信部发布无线充电新规:手机等不能超80W
iOS网络数据指标收集
Java 集合类详解(一)_全球焦点
Java并发(七)----线程sleep、yield、线程优先级
即时设计—小组项目原型示例(附AI功能)
周二银行间回购定盘利率涨跌互现(05-30)
荣耀90系列发布:两款机型详解-世界快报
玩家在《塞尔达传说:王国之泪》造出二极管!信息时代要来了 环球播资讯
商州一出村道路泥泞出行难,主管部门:将用卵石铺设
2023-05-30:Redis6.0为什么要引入多线程呢?
《小美人鱼》真人电影首映三天票房为9540万美元 低于业界预期