开发者学堂课程【用 PolarDB-X+Flink 搭建实时数据大屏:用 PolarDB - X + Flink 搭建实时数据大屏】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/988/detail/14931
用 PolarDB - X + Flink 搭建实时数据大屏
可以看到gmv这张表有ID,gmv是交易总额,用decimalI表答案,还有一个订单叫做orders,PolarDB - X这边已经建立好了,在flink这边有个概念就think,就是将计算结果存储到什么地方?,下面建立一下,会将结果存到PolarDB - X建的gmv库里面,刚才db忘了写,所以稍微改一下,可以看到在flink建的表connect用的是jdbc,库叫做gmv表也叫作gmv
这样就建好了,首先看链路是否是正常打通的
可以的,现在还是空的还没有数据,这样链路就打通了,最后首先看一下交易的大屏是怎么样的
这就是刚才做的交易大屏,比较寒酸,但是会把最关键的信息,一个是总交易额,一个是总订单量这两个数据会展示出来,首先将交易大屏这个应用启动,它分成两个部分,第一部分是后端,也就是用spring boot开发的访问PolarDB - X去获取gmv那张表里面的数据这样的应用,先将它启动起来,然后需要做一下端口转化,连接大家可以忽略,先把前端应用启动起来
现在vue已经将前端的应用起来了,前端应用是在网上找的阿里比较有名的展示数字大屏的应用,有的是用vue做的类似的框架,现在直接把别人的demo拿过来做了一个修改,改完之后就是上面的一个效果
现在前端部分已经启动好了,接下来将后端的也就是数据的部分进行启动。
后端部分已经启动好了,在将后端的端口进行转发,后端监听的是8888端口
这样就转发过来了,首新疆前端的页面加载过来,之后前端页面也会做一个周期性的HTTP查询,这个查询查的是8888端口,也就是用spring boot写的后台提供数据的接口,Spring boot写的应用会去PolarDB - X里面将gmv那张表的数据获取过来,现在刷新一下交易大屏的页面,目前还是空的,接下来做个最关键的部分,也就是在flink里面让流计算跑起来,跑起来的意思是将orders那张表所有数据给查下来,然后计算里面的数据给sum,然后将结果写到gmv这张表里面,这样交易的大屏就可以看到了,可以来看一下c口
用了一个insert into select语句,select是从orders这张表里面你把所有的数据查出来,然后count一下order,然后sum一下price,把这条数据的主件定为一,然后再把这条数据insert回gmv,如果这条语句执行正常的话,PolarDB - X里面的gmv这张表执行完以后是空的,所以现在来看一下回到PolarDB - X这边
可以看到它里面已经有一条数据了,当前总交易额是90.75,订单有三条,说明云计算已经正式的在跑了,再来看一下交易大屏,并没有出来查看一下是什么原因,是spring boot的库表写的不太对,这里稍微改一下,Spring boot连接的库的名字是不对的,这边应该连接的是叫GMV的库,里面会有对应的GMV的表
改完之后重启客户端,再来看一下交易大屏的数据是否能够正确的出来
可以看到交易额已经变成了90元,订单数量是三个,这时交易大屏已经正常了,现在的业务交易库是PolarDB - X里面有订单这张表,通过flink将订单里面数据拉过来后,做了一个计算,计算得到了两个值,一个是总的订单量,一个是总的交易额,然后将这个结果写到PolarDB - X另一个库里,就一大瓶这个应用就会将里面的计算结果拿出来进行展示,这是目前已经做好的工作,接下来是最关键的一步,模拟双十一0点大量的订单进来了,这个交易大屏数据实时的有一个增加的过程,来看一下今天的效果能不能出来,为了演示简单的写了一个去买东西的产品的脚本,其实就是向订单表里面无脑的插入一些订单数据,现在启动另一个终端连接上ECS
可以看到里面有个脚本叫做buy.sh,他是一个shell脚本,简单的打开看一下
#!/ bin / bash
echo “ start buying .….“
ySqL -0eTgULtS- etrg -1LLe mySqL -Cont1g◇ Crt Dmydb e1nsertLnt OrderSVgLuesCdefout , noNO ◇fee6om1024,10Z0)
f !( C count %10); then
Let “ batCh
Count /10
echo Sbatch ": got 10 products , gave 1024¥'
sleep 0.05
这个脚本做的事情特别简单,每循环一次都连接上原端的PolarDB - X往里面insert了一条订单,现在来启动脚本,启动的一瞬间可以想象是0点双十一,按下回车键之后理论上交易大屏会在不停的滚动
可以看到这边每隔一段时间都会打印出现在已经买了十个东西,产生了十个订单,花了1024的钱,交易大屏的数字也在进行一个实时的滚动,交易额在增加,总的订单量也在增加,这个就是完成了,双十一0点时优衣库的交易额,现在因为知道原端比较小,所以交一个饭馆起来不如双十一交易额,不过,有效果,现在这个链路已经完全打通了,最源端是一个交易的系统,里面是用PolarDB - X创建的数据库做数据的存储,其中最关键的一张表就做订单表,用flink去拉取这张表增量的数据并进行实时计算,将总的订单数量,总交易额进行了计算,之后再写回PolarDB - X的另外一个库里面,之后交易大屏这个应用去PolarDB - X的库里面去获取实时的交易额以及订单量,呈现在了网页上面,这就是今天主要所讲内容。
所要讲解的重点是flink cdc里面用了他的mySQL cdc这样一个ID,也就是把原端的PolarDB - X当成一个mySQL去调用,这样也能够获取原端总量的数据,这样就证明了PolarDB - X全局Binlog以及mySQL Binlog一些参数上面的兼容性,这就是今天做的第二个demo,今天的demo大家可以看到其实依赖的重要特性是全局Binlog。
在即将结束的时候做一个预告,PolarDB - X是从去年开源的也就是10月20号,之后在1月份的时候做了一个小版本的更新,现在有三个月过去了,按照更新迭代的速度是时候应该再发布一个版本,只不过这次发布的版本会比较重量级,首先有了一个统一的产品的版本号叫做PolarDB - X2.1.0,里面会包含非常多,非常多的特性,其中有一项就是大家特别关心的三副本能力,还有其他n多的能力,这个发布会在近期非常短的时间。