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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核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和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
存储 分布式计算 运维
云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
零跑科技基于Flink构建一体化实时计算平台,应对智能网联汽车海量数据挑战。从车机信号实时分析到故障诊断,实现分钟级向秒级跃迁,提升性能3-5倍,降低存储成本。通过Flink+Hologres+MaxCompute技术栈,打造高效、稳定、可扩展的实时数仓,支撑100万台量产车背后的数据驱动决策,并迈向流批一体与AI融合的未来架构。
366 3
云栖实录|驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
人工智能 大数据 Apache
Flink Forward Asia 2024 即将盛大开幕!
Flink Forward Asia 2024是由Apache官方授权的技术大会,聚焦流式湖仓、流批一体、AI大模型等热点方向,旨在分享Flink社区最新动态及实践经验,是Flink开发者和使用者不容错过的盛会。大会不仅探讨了Flink在实时大数据分析中的应用,还深入讨论了Data+AI领域的新成果,如基于Flink和Elasticsearch的企业级高级RAG架构设计,展示了Flink在多模态数据处理、实时数据向量化等方面的强大能力。
|
监控 Java API
死磕xxl-job(一)
死磕xxl-job(一)
|
机器学习/深度学习 人工智能 算法
人工智能-大语言模型-微调技术-LoRA及背后原理简介
人工智能-大语言模型-微调技术-LoRA及背后原理简介
|
关系型数据库 分布式数据库 数据库
基于PolarDB Ganos的实时时空计算:电子围栏篇
文章着重介绍了PolarDB Ganos如何应用于实现实时电子围栏计算。这是一种依赖于位置技术来创建虚拟地理边界的解决方案,广泛应用于交通安全、应急管理、营销推广等多个领域。通过与阿里云实时计算Flink版产品的集成,PolarDB Ganos能够高效地进行空间计算和数据分析,显著提高了地理围栏应用的实时性和准确性。文章还提供了使用Ganos进行电子围栏计算的实际步骤、性能测试及优化建议,并强调了PolarDB Ganos在提高数据处理效率和降低成本方面的优势。
|
设计模式 JavaScript 前端开发
Vue之Mixin【一种代码重用机制】
Vue之Mixin【一种代码重用机制】
296 0
|
SQL 关系型数据库 数据库
Flink CDC数据同步问题之处理更新业务失败如何解决
Flink CDC数据同步是指利用Flink CDC实现不同数据源之间的实时数据同步任务;本合集旨在提供Flink CDC数据同步的操作指南、性能优化建议和常见问题处理,助力用户高效实施数据同步。
|
SQL 消息中间件 存储
Flink(十三)【Flink SQL(上)SqlClient、DDL、查询】(2)
Flink(十三)【Flink SQL(上)SqlClient、DDL、查询】