用 PolarDB - X + Flink 搭建实时数据大屏|学习笔记(一)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云服务器 ECS,每月免费额度200元 3个月
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 快速学习用 PolarDB - X + Flink 搭建实时数据大屏

开发者学堂课程【用 PolarDB-X+Flink 搭建实时数据大屏用 PolarDB - X + Flink 搭建实时数据大屏】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/988/detail/14931


用 PolarDB - X + Flink 搭建实时数据大屏

 

内容介绍

一、PolarDB - X 主要讲解内容

二、用 PolarDB - X + Flink 搭建实时数据大屏

 

一、PolarDB - X 主要讲解内容

用 PolarDB - X + Flink 搭建实时数据大屏,这个所依赖的能力是PolarDB - X 比较有特色的能力,就是全局的变log,以前课程中也涉及到过这个能力,今天再来展示一下。

image.png

首先是围绕社区版本对应于商业2.0版本进行讲解,面向的群体是应用视角,不管是开发者还是架构师DBA还是学生想学习一下DB-X都可以听此次课程,主要内容是使用PolarDB - X过程中分场景化来介绍PolarDB - X的一些功能项.

image.png

目前为止已经进行了六讲,今天是第七讲,第一讲讲的是如何安装部署 PolarDB - X,后面讲的是如何连接使用PolarDB - X,后面讲了 PolarDB - X如何与大数据互通,在后面讲了 PolarDB - X 集群动态的扩充和缩容,后面讲了onlineddl,今天讲解 PolarDB - X 和 fink 的配合,后面也会继续讲一些其他的场景,后续内容和前面呈现的有一些不同,稍微做了一些调整,内容做了扩充

 

二、用 PolarDB - X + Flink 搭建实时数据大屏

1.环境准备

如果自己想体验需要一个这样的环境,有Linux或Mac的系统,里面需要装好dockerK8S以及PolarDB - X以及今天需要配合的 flink 这样的环境

2. PolarDB - X基本架构

image.png

在开始之前先简单了解一下PolarDB - X基本架构,PolarDB - X是一个分布式的系统,核心的有四个组件来,组成,第一个是cn分布式的计算层,负责分布式事务,数据的拆分,路由等等,第二个组件是DN数据存储的节点,为了便于理解可以简单的看成是my clar不过是深度定制的my clar,第三个组件是GMS系统,可以把它看成半圆的特殊角色的DN,最后一个组件是CDC是全局日志的节点,也是在本次演示中所相关的组件,会生成PolarDB - X基本架构系统当中全局增量的日志

3.演示内容

今天会演示两个场景,第一个是 PolarDB - X MySQL

image.png

具体来说就是PolarDB - X为主,mySQL为备,搭建一个主被同步的系统,这个场景是在第三讲demo的场景,那时出现一个问题导致链表没有搭建起来,mySQL crash表出来的时候查到了原因,所以今天会把这个demo重做一遍.

第二个场景是今天的主题,用PolarDB - X➕flink➕VUE基于vue的前端来模拟阿里的双十一的交易的大屏。

具体来说他的电路是上面这张小图所示,首先这张图分为上下两个部分,上面是业务视角或者应用开发视角,与我们打交道的一个是业务系统APP把他的数据写到下面的数据库也就是PolarDB - X里面,最终会通过大屏也就是vue的框架来展示交易实时的情况,下面显示的是数据流的方向,也就是我们今天会将PolarDB - X作为数据的源端,通过PolarDB - X提供的全局变log能力,因为是从mySQL电路板是完全兼容的,所以可以借助blink CDC mySQL connect连接到他这边获取到增量的日志,之后会建一个实时的计算,然后flink会把计算的结果写到一个 DB 里面,交易大屏就是读取 DB 数据并且进行呈现,在今天的 demo 里面,blink 计算好的结果写到了 PolarDB - X 中,所以一会儿会在PolarDB - X 中建两个库,一个用来模拟业务库,一个用来缓存实时计算结果的库。

4.PolarDB - X MySQL

接下来开始第一个demo,也就是 PolarDB - X 为主 MySQL 为备来搭建主备同步的场景,今天用的是之前在阿里云购买的ECS,先登录远端的ECS,为了便于演示,提前把今天所需要的PolarDB - X集群创建好了,他的名字叫做PolarDB - X.

可以看到有一个GMS,一个CN,两个DN和一个CDC组成的集群,现在做一下端口转发,port - forward sVc / polardb -×8527:3306-- addresS = g ,将这个PolarDB - X集群3306这个端口转发到ECS端口8527,用8527进行服务是因为会起一个mySQL,mySQL默认会占用3306,这时已经将PolarDB - X的集群端口转换好了,在启动另外一个终端连接上ECS,尝试先登陆一下PolarDB - X ,看一下里面的情况。

可以看到,目前可以正常的连接,里面没有任何库是一个空的实例,现在打开第三个终端,在这个终端中会做一件事情,启动一个mySQL的容器,然后用这个容器作为PolarDB - X 的备用库,先来看一下目前docker目前是没有与mySQL相关的容器的,现在过来启动一个,简单来看一下这个命令,启动了一个名字叫做mySQL的mySQL容器,注册密码是123456,占用的端口也是3306,用的版本是mySQL8.0.11,上次的crash也是和mySQL版本相关的,mySQL刚好是在最新的版本里面将解析blog的一段逻辑稍微做了一个调整,导致在解析所给的blog时crash为了兼容mySQL更新版本解析blog的行为,在PolarDB - X 的最新版本里面做的格式的调整,后续PolarDB - X 发了新版之后,用最新版的mySQL做同步也不会有问题,现在就创建一个这样的容器,来登录一下。

image.png

是正常的,可以看到里面除了系统的库没有其他的库,现在来做一下主备同步的链路,准备同步会在原端PolarDB - X 去做一个转账测试来模拟业务,同时下游mySQL会见一个blog 同步的链路,希望能够实时的把转账测试的变更同步到mySQL这边,同时会对数据做一致性的校验来确保同步的过程当中也是没有问题的。接下来在PolarDB - X 创建转账测试所需要的库。

image.png

创建好了,在mySQL里面也创建一个同样的库,接下来先把主备同步的链路搭建起来,首先在PolarDB - X 里看一下当前Binlog的情况。

image.png

有一个Binlog文件,他的位点是161626,在mySQL通过change master指令与PolarDB - X 进行链路,为了方便演示,已经提前将这个命令写好了。

这就是mySQL用来去和主之间进行搭建同步链路的指令,简单看一下,这个命令就是change master做一个ipe端口,用户名,密码给他,然后指明一下从哪个Binlog文件的什么位置开始消费开始同步,这就是这条指令的含义,写好之后再 mySQL 这边 start slave,这样两边的同步链路就开起来了,现在看一下同步链路的状态

image.png

已经在等待主节点给他发送 Binlog 的 event,再回到 PolarDB - X ,看一下test库

目前可以看到里面是没有表的,下面来启动业务也就是转账测试,这个业务简单来讲就是会连接上PolarDB - X ,然后在里面transfer test库里面创建一张表,这个表叫做counts,然后会初始化一些账号并且开始这些账户之间的转账,会有insert和update这些操作,因为这些实例都是跑在远端ECS,代码是在本地的,所以需要做一个端口转发,将远程ECS上的8527端口转换到现在演示的这台机器的8527端口上,这样本地的代码就可以直接连上了,现在已经连接好了,启动测试,转账测试已经启动,再来看一下 PolarDB - X 目前情况。

image.png

tables 这张表已经建立出来了,看一下这里面都有什么数据,使用 select*from accounts order by id命令

image.png

可以看到里面有100条数据,也就是有100个账户,每个账户初始都有1000的资金,因为已经开始转账了所以有些账户多于一千,有些少于一千,使用 select sum(balance) fromaccounts 命令来看一下他们拥有的总的钱数,因为每一笔转账都是一个事务所以总的钱数是不变的。

可以看到总的钱数一直是10万,刚才所有的操作,包括转账测试的代码都是连接上了原端 PolarDB - X 的,现在看一下 mySQL 这边是不是与预期的一样,将 account 这张表的建表同步过来了并且将里面的变更也同步过来了,首先切到主库里面看 mySQL 中是不是有了同样一种表。

相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
2月前
|
存储 弹性计算 数据可视化
使用PolarDB-X与Flink搭建实时数据大屏
使用PolarDB-X与Flink搭建实时数据大屏
|
4月前
|
SQL 关系型数据库 MySQL
基于 Flink CDC 打造企业级实时数据集成方案
基于 Flink CDC 打造企业级实时数据集成方案
|
9月前
|
SQL 关系型数据库 MySQL
基于阿里云 Flink+Hologres 搭建实时数仓
本文为您介绍如何通过实时计算 Flink 版和实时数仓 Hologres 搭建实时数仓。
2114 0
基于阿里云 Flink+Hologres 搭建实时数仓
|
6月前
|
搜索推荐 BI Apache
「Flink+Hologres 搭建实时数仓」训练营重磅开启
Flink+Hologres 搭建实时数仓训练营火热报名中!文末有 Flink Forward Asia 2023 赠票福利~
903 0
「Flink+Hologres 搭建实时数仓」训练营重磅开启
|
SQL 数据可视化 关系型数据库
实践教程之使用PolarDB-X与Flink搭建实时数据大屏
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。 本期实验将指导您使用 PolarDB-X 与Flink搭建实时数据大屏。
实践教程之使用PolarDB-X与Flink搭建实时数据大屏
|
前端开发 数据可视化 关系型数据库
用 PolarDB - X + Flink 搭建实时数据大屏|学习笔记(三)
快速学习用 PolarDB - X + Flink 搭建实时数据大屏
344 0
用 PolarDB - X + Flink 搭建实时数据大屏|学习笔记(三)
|
数据可视化 前端开发 关系型数据库
用 PolarDB - X + Flink 搭建实时数据大屏|学习笔记(二)
快速学习用 PolarDB - X + Flink 搭建实时数据大屏
411 0
用 PolarDB - X + Flink 搭建实时数据大屏|学习笔记(二)
|
数据挖掘 流计算
《基于Hologres和Flink的实时数据分析方案》电子版地址
《基于Hologres和Flink的实时数据分析方案》PPT
203 0
《基于Hologres和Flink的实时数据分析方案》电子版地址
|
存储 SQL 运维
淘菜菜 (一):基于Flink和Hologres的实时数仓架构升级之路
淘菜菜 (一):基于Flink和Hologres的实时数仓架构升级之路
2478 0
淘菜菜 (一):基于Flink和Hologres的实时数仓架构升级之路
|
消息中间件 存储 SQL
阿里云Flink x Hologres:构建企业级一站式实时数仓
阿里云Flink x Hologres:构建企业级一站式实时数仓
3352 0
阿里云Flink x Hologres:构建企业级一站式实时数仓