一分钟读懂MySQL分布式消息的处理
在很多MYSQL环境中,对于MYSQL的分布式事物处理一直是个难题,在当前互联网环境中,大多数应用系统是基于SOA的很多复杂接口之间的调用,并且事物之间的处理优先级也是有先后的,所以对于实际入库的数据而言,不同的系统,对于当前入库的处理方式是不一样的,这样就衍生出了对于订阅MYSQL消息的需求。
在公司内部,这套分布式消息系统负责了各个子接口之间数据的衔接,同时肩负后端DW数据仓库的实时消息计算,多数的RDBMS数据,被分解成各种子消息队列,通过不同的topic被各种消费者订阅。
一、如何分解消息
后端订阅程序(基于阿里巴巴的canal)通过解析不同应用的binlog (mysql线上产生的二进制日志) 通过模拟slave的行为,将binlog顺序的订阅到本地,通过内部解析程序,将binlog events解析成对应的消息,通过MetaQ 固化解析完成的消息,自定义存放时间,从而让consumer 自行订阅到对应的系统,进行相关处理。

具体roma文档可以参考我的blog:
http://www.vmcd.org/docs/roma_system.pdf
二、何时订阅
通常当支付系统需要做异步分布式事务调用的时候,可以采用roma消息。采用水平拆分DB而需要一些统计类的需求的时候(合表) 可以订阅合并的topics。当需要一个汇总的数据仓库,执行跨库join查询的时候 可以订阅roma消息。

上图中,各类系统通过RPC框架进行异步调用,同时将订阅到的消息(roma异步消息)进行相处理,将操作类型,操作细节发送给对应子系统,从而实现了操作的异步化(而roma对于前端数据库日志的实时解析保证了事物消息的实时性)。
三、对于数据仓库
在我们的系统中,很多核心表被水平拆分成了N份,对于后端实时数据仓库来说,希望通过合并所有的拆分表,进行多维度的查询工作 (对job来说,可以通过定期任务抽取水平拆分的表,但是实时性是滞后的)。
在中转服务器上,使用java程序直接订阅roma的消息,拼接成相应的SQL在后端DW上直接执行。

通过订阅同步消息,将前端更新实时同步到后端的数据仓库,从而达到实时分析的需求。后期结合binlog server的改进还可以进行所有系统的binlog 集中化分层订阅。
具体可以参考:
https://www.mariadb.com/blog/binlog-server
四、对于实时分析平台
同样可以订阅前端RDBMS操作到后端大数据平台,通过流式计算实现秒级的分析。

后期需要改进的:
roma的订阅能力,对于前端log并发解析的粒度
智能的存储策略 动态调整没有被订阅消息的保存时间
一分钟读懂MySQL分布式消息的处理的更多相关文章
- 再见乱码:5分钟读懂MySQL字符集设置
一.内容概述 在MySQL的使用过程中,了解字符集.字符序的概念,以及不同设置对数据存储.比较的影响非常重要.不少同学在日常工作中遇到的"乱码"问题,很有可能就是因为对字符集与字符 ...
- 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路
原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路 针对新手入门的普及,有过大型网站技 ...
- 一分钟读懂互联网广告竞价策略GFP+GSP+VCG
原文:http://ju.outofmemory.cn/entry/116780 一分钟读懂互联网广告竞价策略GFP+GSP+VCG 两个广告位,三家广告主竞价,广告平台究竟应该制定广告竞价策略呢?这 ...
- 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
参考这篇文章: http://ju.outofmemory.cn/entry/116780 一分钟读懂互联网广告竞价策略GFP+GSP+VCG 两个广告位,三家广告主竞价,广告平台究竟应该制定广告竞价 ...
- 一分钟读懂低功耗蓝牙(BLE)连接数据包
一分钟读懂低功耗蓝牙(BLE)连接数据包 1.概述 BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ. SCAN_REQ: 扫描请求,由主设备(M ...
- 一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...
- 五分钟读懂UML类图
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 五分钟读懂UML类图(转)
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
- 五分钟读懂UML类图(转)
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...
随机推荐
- Android 自定义线程池的实战
前言:在上一篇文章中我们讲到了AsyncTask的基本使用.AsyncTask的封装.AsyncTask 的串行/并行线程队列.自定义线程池.线程池的快速创建方式. 对线程池不了解的同学可以先看 An ...
- 小白挑战:AsyncTask源码分析
//AsyncTask从本质上讲,是对ThreadPool和handler的封装. 在学习线程池相关的知识时,看到书中提到AsyncTask的实现中使用到了ThreadPool,于是把源码翻了出来, ...
- IOS 多线程分类以及多线程的相关操作
直接附上援助链接:http://www.cnblogs.com/kenshincui/p/3983982.html 分享内容还关联到了生产者与消费者模式(其实看明白了整片文章,也就理解了生产者与消费者 ...
- 如何在 ASP.NET 4.6 与 IIS10 中运用 HTTP/2 ?
在过去十年中,Web 技术已经取得了种种进展.从基本的 HTML 开始,网页发展出更丰富的外观和感觉,变得更加直观,对用户更加友好并且越来越大放异彩.这些变化的关键贡献来自于一些新的和翻新技术,且借力 ...
- 报文格式:xml 、定长报文、变长报文
目前接触到的报文格式有三种:xml .定长报文.变长报文 . 此处只做简单介绍,日后应该会深入学习到三者之间如何解析,再继续更新.——2016.9.23 XML XML 被设计用来传输和存储数据. H ...
- Java中GC的工作原理
转文: 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率,才能提高整个 ...
- 配置git同时push到两个远端库的简单方法
最近在写一个开源的论坛系统,在发布代码时选择了github和coding这两个平台,我手懒,不想敲两次git push了,所以说突然有了一个很奇怪的需求:用一条git push同时push到两个远端代 ...
- [AlwaysOn Availability Groups]排查:Primary上的修改无法在Secondary体现
排查:Primary上的修改无法在Secondary体现 客户端进程在primary上修改成功,但是在Secondary上却无法看到修改结果.这个case假设你的可用性组有同步的健康问题.很多情况下这 ...
- (转载)SQL Reporting Services (Expression Examples)
https://msdn.microsoft.com/en-us/library/ms157328(v=SQL.100).aspx Expressions are used frequently in ...
- HTML5 兼容IE浏览器
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...