售前咨询
技术支持
渠道合作

利用binlog完成实时计算

由于业务的发展,一些实时统计的需求越来越多。有些东西通过记录日志然后实时分析日志可以解决。但是对于有入库还有自己记录到日志的这显然是多此一举。因为MySQL本身就有帮你记录日志, 而且记录的日志比自己应用程序的要准确的多(MySQL 需要开启row模式)。

  1. 解析MySQL Binlog,并获取我们想要的Event。
  2. 过滤出我们关心的表。
  3. 将获得的相关数据实时的保存到相关存储中(一般使用redis存数据,之后再定时刷入MySQL)。

模拟步骤:

这边模拟实时算订销售总额,和订单量。

  1. 使用python-mysql-replication作为实时解析MySQL Binlog的日志利器(推荐使用 阿里的 canal,这里主要看公司的开发人员擅长什么而决定)。
  2. 我们只关心 WriteRowsEvent (事件号 30)。
  3. 我们只关心 ord_order 表产生的 WriteRowsEvent 事件。
  4. 在原来统计的基础上加上本次订单的信息并保存到Redis(使用打印来代替保存到Redis)。

老套的 SQL 代码

青涩的 Python 代码

运行代码

  1. MySQL 挂掉要如何处理。
  2. 如何实现程序的高可用。
  3. 如何记录解析的 log file 和 log pos。
  4. 需不需要将解析的数据统一管理和存储。

 

 

文章转载来自:trustauth.cn

上一篇:

下一篇:

相关新闻

 

领取优惠
免费预约

申请试用SSL证书

提交成功!

咨询客服