在很多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分布式消息的处理的更多相关文章

  1. 再见乱码:5分钟读懂MySQL字符集设置

    一.内容概述 在MySQL的使用过程中,了解字符集.字符序的概念,以及不同设置对数据存储.比较的影响非常重要.不少同学在日常工作中遇到的"乱码"问题,很有可能就是因为对字符集与字符 ...

  2. 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路

    原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路   针对新手入门的普及,有过大型网站技 ...

  3. 一分钟读懂互联网广告竞价策略GFP+GSP+VCG

    原文:http://ju.outofmemory.cn/entry/116780 一分钟读懂互联网广告竞价策略GFP+GSP+VCG 两个广告位,三家广告主竞价,广告平台究竟应该制定广告竞价策略呢?这 ...

  4. 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG

    参考这篇文章: http://ju.outofmemory.cn/entry/116780 一分钟读懂互联网广告竞价策略GFP+GSP+VCG 两个广告位,三家广告主竞价,广告平台究竟应该制定广告竞价 ...

  5. 一分钟读懂低功耗蓝牙(BLE)连接数据包

    一分钟读懂低功耗蓝牙(BLE)连接数据包 1.概述 BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ. SCAN_REQ: 扫描请求,由主设备(M ...

  6. 一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...

  7. 五分钟读懂UML类图

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  8. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  9. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

随机推荐

  1. vmwawre 虚拟机优化配置

    vmware虚拟机如何设置不当的话会造成运行速度慢,并影响主机运行,甚至会出现死机. 一下是提高vmware虚拟机运行速度的几个技巧, 文章来自:http://blog.csdn.net/shanzh ...

  2. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q128-Q130)

    Question  128 You are designing a SharePoint 2010 solution that includes a custom site definition an ...

  3. Android自定义对话框

    在android中有自带的对话框,为了美观,很多开发者会使用自定义对话框,如下图: 点击“弹出自定义对话框按钮后”显示如图效果. 首先要自己定义一个xml文件定义自己对话框的样式: <?xml ...

  4. Android Couldn't load BaiduMapSDK

    什么都不用多说,看代码 Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[DexPathLis ...

  5. compileDebugJavaWithJavac

    学习笔记 compileDebugJavaWithJavac,缺少插件,在module app gradle文件最上面添加一段 apply plugin: 'me.tatarka.retrolambd ...

  6. php设计模式 装饰器模式

    装饰器模式,可以动态地添加修改类的功能. 一个类提供了一项功能,如果要修改并添加额外的功能,传统的编程模式需要写一个子类继承它,并重新实现类的方法.使用装饰器模式,仅需要在运行时添加一个装饰器对象即可 ...

  7. [C#6] 6-表达式形式的成员函数

    0. 目录 C#6 新增特性目录 1. 老版本的代码 internal class Person { public string FirstName { get; set; } public stri ...

  8. TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库

    TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库 SVN客户端程序:TortoiseSVN SVN服务器程序:VisualSVN-Server ######## ...

  9. iPhone被盗后续更新二:被换机!已取机!没扣住新机!怎么找新机呢?事发半年后跟进...

    先说下情况 MEID/IMEI:3544 2706 9380 456 我的序列号:F17NL088G5MY 新的IMEI:3569 7606 5956 097 新的序列号:DNPNV69ZG5MY 我 ...

  10. CentOS 6.5 安装 MySQL5.6 并用Navicat for MySQL 连接

    环境 : MySQL 5.6.21 64位 CentOS 6.5 64位 VMware 10 Navicat for MySQL 11 1.卸载自带mysql [root@localhost  ~]# ...