【阿里云MVP月度分享】如何基于MYSQL做实时计算?

有时候我们会有这样的场景,在某个接口中,数据已经很规范地存入到一张的MYSQL表中,现在想对这样的数据做一些实时或准实时处理,比如数据多模式存储、异步准实时业务流程、业务实时监控等。接口中处理流程如下:

最原始的方法,是改动业务代码,将这些额外的处理流程作为同步流程,在更新MYSQL数据之后同步执行。如下图:

但是这样的处理流程可能会越来越多,如果一直作为同步流程,整个接口会变得越来越庞大、并且耗时越来越长、出问题的风险越来越高。

所以我会考虑异步处理流程。如果可以改动一下代码,将数据额外写一份儿到队列里,再用flink、storm之类的去消费不就好了么。如下图:

但实际上,或许由于架构设计的不规范、或许由于业务场景的繁多,导致在代码中加一遍数据埋点,就如同重构一般的工作量。所以我们需要另一种方式,能实时感知到MYSQL中数据的变化。

MYSQL的binlog可以帮我们记录数据的变化,我们还需要一个工具来收集binlog,并转为我们能读懂的数据。阿里有一款叫canal的开源软件正是做这个用的,可以通过修改源码,增加监控、告警、投递队列功能来实现。但现在,阿里云的日志服务为我们集成了这一功能,我们可以用更短的时间、更少的资源来获得更稳定、更放心的服务。如下图:

日志服务收集binlog的功能还在内测中,不久之后将与大家见面。



比如有这样一个场景,我的MYSQL里有一张订单推送记录表,现在有一个需求,需要将这个表中的数据,按照一定格式再写入一份儿到表格存储TableStore中。
传统的实现方式,是在程序有写入到MYSQL的地方,再加一段代码,写入MYSQL成功后再写入到表格存储中。而现在,为完成这个需求,我选用的技术方案是:

日志服务SLS+流计算StreamCompute+表格存储TableStore

首先使用日志服务,配置对mysql中订单推送记录表所在实例的binlog的收集。

日志服务收集binlog的原理,与canal一致。具体配置这里暂不作叙述。

收集到的日志中,包含:数据库名、表名、事件(row_insert、row_update、row_delete)、全局事务ID、各个字段修改前的值、各个字段修改后的值。

根据场景,我们需要捕获到每个row_insert和row_update操作中,各个字段修改后的值,然后写入到表格存储中。所以我们在流计算中,先配置好日志服务的源表、和表格存储的目标表,中间的逻辑这样写:

INSERT INTO ots_result_order_push (pk, id, order_id, master_id, pull_status
    , offer_time, hire_time, push_time, limit_offer)
SELECT concat(REVERSE(order_id),'|',master_id) as pk,id, order_id, master_id, pull_status, offer_time
    , hire_time, push_time, limit_offer
FROM sls_stream_distribute_canal
WHERE _db_ = 'distribute'
    AND (_event_ = 'row_insert'
        OR _event_ = 'row_update')
    AND _table_ = 'order_push';

即可完成此需求。



再比如有这样一个场景,我的MYSQL里有一张用户信息表,现在想要实时统计每日注册用户数,并通过大屏展示出来。
为完成这个需求,我选用的技术方案是:

日志服务SLS+流计算StreamCompute+表格存储TableStore+数据可视化DataV

首先使用日志服务,配置对mysql中user_info表所在实例的binlog的收集。
根据场景,我们需要捕获到每个row_insert操作的时间,并将时间截取到日期。统计每天有多少条往用户信息表中插入的操作记录。所以我们在流计算中,先配置好日志服务的源表、和表格存储的目标表,中间逻辑这样写:

insert into ots_result_user(pk,val)
select concat('RegUser4General|t|',t.dt) as pk,t.val
from (select from_unixtime(cast(create_time as bigint),'yyyyMMdd') as dt,count(_table_) as val
from sls_stream_user_service_canal
where _event_ = 'row_insert'
and _table_ = 'user_info'
group by from_unixtime(cast(create_time as bigint),'yyyyMMdd')) t
;

即可完成需求。



异步获取MYSQL数据变化,触发异步流程,避免了多个同步流程可能造成的执行时间过长、或者由于网络原因卡住等等导致的风险。同时,异步流程也可以并行,总体上加快了业务流程的速度,使“一份儿数据、多种处理”变得更加方便快捷。

当然,对于上边作为例子的两个场景来说,文中给出的方案并不是唯一的解决办法,还可以使用函数计算代替流计算实现同样的效果

整套流程全部采用阿里云的服务化产品进行,使得本来全部独立开发需要几天的工作量,可以在几分钟之内搞定,方便快捷,且整套流程都有完善的监控、告警机制,安全放心。

时间: 2024-10-09 18:10:53

【阿里云MVP月度分享】如何基于MYSQL做实时计算?的相关文章

【阿里云MVP月度分享】基于PAI平台和Pokemon数据集判断精灵是否为极品精灵

一.背景 Pokemon<精灵宝可梦>,也叫<口袋妖怪>.<宠物小精灵>.<神奇宝贝>,是由Game Freak和Creatures株式会社开发,任天堂发行的系列游戏.精灵宝可梦系列是世界上第二热销的系列电子游戏,仅次于任天堂的超级马里奥系列. 本文采用kaggle上Pokemon数据集,基于阿里云PAI平台进行实验,利用数据集中提供的精灵能力值来判断精灵是否为极品精灵. 数据集包含No, Name, Type1, Type2, HP, Attack, De

【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析

1 背景知识 电力设备在线监测指在不停电的情况下,对电力设备状况进行连续或周期性地自动监视检测,使用的技术包括:传感器技术.广域通信技术和信息处理技术.电力设备在线监测是实现电力设备状态运行检修管理.提升生产运行管理精益化水平的重要手段,对提升电网智能化水平.实现电力设备状态运行管理具有积极而深远的意义. 随着智能电网建设的推进,电力设备在线监测得到了较大发展并成为趋势,监测数据变得日益庞大,逐渐构成电力设备监测大数据,这给电力设备在线监测系统在数据存储和处理方面带来非常大的技术挑战. 电力设备

【阿里云 MVP 月度分享】轻量应用服务器的介绍和开通流程详解

前言 我是2015年加入的阿里云开发者论坛当版主的,到2017年遇到比较多的问题就是很多新手用户并不会操作 ECS 了,很多对云计算产品不理解的用户甚至还会误解为什么会有一个买了却不能开箱即用的产品,这也是我一直坚持做我的入门级场景教程 <云计算的1024种玩法> 订阅的原因.在 2013年前后的时候我记得是那时候万网推出了 轻云服务器 然而仅仅只是实现了资源独享的虚拟主机而已并没有体现出 IaaS 云服务应有的优势,而云市场服务商提供的 ECS 应用镜像质量也是良莠不齐. 很显然目前的痛点:

【阿里云 MVP月度分享】中小企业公有云网络安全保障体系实践初探

许多大中型互联网企业都在建设自己的网络安全保障体系,并且配备了专业的网络安全人员,实现了一体化的网络安全保障.但中小型企业由于资金.人员.技术等众多客观原因,而无法完成:另外由于公有云给中小企业带来了高性价比的资源优势,但在使用云计算过程中,如果操作不当,反而会引入比较高的网络安全风险.下面我们先从大概的了解一下什么是网络安全保障体系,然后再看我们如何把这套体系在一定成本可控的情况下落地实践. 一.网络安全保障体系一般情况下,网络安全保障体系主要由四大部分构成:网络安全策略和体系.网络安全组织和

11月阿里云 MVP 大数据、安全主题分享月博文集锦

大家好,阿里云 MVP 11月大数据+安全主题分享新鲜出路,快来一睹为快吧!哪些MVP分享的内容最吸引你,你想为谁打call? 我们将开启最具人气内容评选,在MVP博文下发表评论,我们将选取最走心最有价值的评论内容赠送淘公仔抱枕或双肩背包,优质评论人还有机会受邀参加阿里云粉丝区域见面会活动,快行动起来吧! 阿里云 MVP11月主题分享直达传送门: **阿里云 MV 郭翔云--中油瑞飞系统架构师** 看美女架构师如何带你聊各种最前沿的技术话题 聚能聊: [沙特首次授予机器人公民身份,此举为何?]

什么才是这个时代最需要的BI人员? —— 阿里云MVP赵玮主题分享【1】

7月8日,阿里云在上海和大家进行了针对数据化运营的讨论--阿里云数加-数据化运营实践分享 很荣幸的请到了阿里云MVP赵玮,收钱吧数据分析专家. 基于"收钱吧"如何使用阿里云QuickBI 产品,阿里云MVP 赵玮给线上线下超过2000人带来分享<面对正在崛起的移动支付,如何做好数据运营>. 以下是花肉根据现场的情况整理的文章,整个分享干货很多,所以会分为三个部分,读到文末就会看到下一篇内容预告哟. 基于公司的特性,公司里面都每个人都会问自己三个问题: 第一是运营效率的突破:

布道云计算,阿里云MVP已启航

6月10日,在上海召开的阿里云云栖大会上,当阿里云总裁胡晓明宣传"阿里云聆听平台正式发布, MVP计划启动",立刻就得到了参会者的热议.这是中国云计算厂商首次推出全球最有价值技术贡献者计划. 阿里云视MVP为"最有价值的技术合伙人".通过奖励.肯定和支持这些优秀的技术人员,阿里云和MVP群体们一同成长,提供最优质的云服务. 阿里云认为,一个充满活力的全球社群才能帮助客户最大限度地利用解决方案.是用户投资收益最大化的关键.阿里云MVP专家奖正是阿里云用来表彰产生了重大

阿里云 MVP我们又相见在杭州

阿里云 MVP我们又相见在杭州了! 上周我们线上线下同步升级阿里云权益全面启动全球招募.在上海张江阿里巴巴创新中心,阿里云两位MVP从持续交付和数据可视化DataV技术分享踩坑实践,不仅是技术的分享还有项目管理的知识. 本周我们从数据出发,看业务驱动数据,经过大数据的分析挖掘,最终通过数据变现来洞察业务,提升运营策略?这在阿里云大数据团队都已经有了很明确的答案. 本次阿里云MVP Meetup除了邀请了阿里云大数据一线的研发及PD,也邀请到了阿里云MVP,驻云资深架构师翟永东为大家分享基于阿里云

阿里云MVP

       阿里最有价值专家MVP(Most Valuable Professional) 是专注于帮助他人充分了解和使用阿里云技术的意见领袖.        MVP是一些拥有丰富知识和实际经验的阿里云技术专家.他们不是阿里云的员工,但是非常乐于通过在线或离线社区的方式帮助技术人士.        网址:https://mvp.aliyun.com/ 有丰富的实战经验,并且有较深的行业理解才能称之为专家.阿里云MVP正是这样一群拥有着丰富的云计算领域和实践经验的专家.他们不是阿里云的员工,但是