ITPub博客

首页 > 数据库 > SQL Server > 阿里云体验有奖:使用PolarDB-X与Flink搭建实时数据大屏

阿里云体验有奖:使用PolarDB-X与Flink搭建实时数据大屏

原创 SQL Server 作者:bainana 时间:2022-06-29 14:03:54 0 删除 编辑

### **体验简介**


场景将提供一台配置了CentOS 8.5操作系统的ECS实例(云服务器)。通过本教程的操作带您体验如何使用PolarDB-X与Flink搭建一个实时数据链路,模拟阿里巴巴双十一GMV大屏。


![](https://oscimg.oschina.net/oscnet/up-9f033b17654762a6a7989c556eacfea8b4f.jpg)


### 实验准备


1\. 创建实验资源


开始实验之前,您需要先创建ECS实例资源。


1.  在实验室页面,单击**创建资源**。

    

2.  (可选)在实验室页面左侧导航栏中,单击**云产品资源**列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

    


**说明**:资源创建过程需要1~3分钟。


2\. 安装PolarDB-X


本步骤将指导您如何安装PolarDB-X。


1.  安装并启动Docker。

    

    1.  执行如下命令,安装Docker。


```

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun



```


2.  执行如下命令,启动Docker。


```

systemctl start docker



```


2.  执行如下命令,安装PolarDB-X。


```

docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x:2.1.0



```


3\. 在PolarDB-X中准备订单表


PolarDB-X支持通过MySQL Client命令行、第三方客户端以及符合MySQL交互协议的第三方程序代码进行连接。本实验使用MySQL Client命令行连接到PolarDB-X数据库。


本步骤将指导您如何连接PolarDB-X数据库,并创建测试库、测试表和测试数据。


1.  执行如下命令,安装MySQL。


```

yum install mysql -y



```


2.  执行如下命令,查看MySQL版本号。


```

mysql -V



```


返回结果如下,表示您已成功安装MySQL。


![](https://oscimg.oschina.net/oscnet/up-ff79c6132b504c8fb98c411bab06f34ce8a.png)


3.  执行如下命令,登录PolarDB-X数据库。


**说明**:


-   本实验场景中的PolarDB-X数据库用户名和密码已预设,请您使用下方命令登录即可。

    

-   如遇到mysql: \[Warning\] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,重新执行登录命令即可。

    


```

mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456



```


返回结果如下,表示您已成功登录PolarDB-X数据库。


![](https://oscimg.oschina.net/oscnet/up-d9095ec2c8dd2262e470beae45acd4cc4fc.png)


4.  执行如下SQL语句,创建测试库mydb。


```

create database mydb;



```


5.  执行如下SQL语句,使用测试库mydb。


```

use mydb;



```


6.  执行如下SQL语句,创建订单表orders。


```

CREATE TABLE `orders` (

 `order_id` int(11) NOT NULL AUTO_INCREMENT,

 `order_date` datetime NOT NULL,

 `customer_name` varchar(255) NOT NULL,

 `price` decimal(10, 5) NOT NULL,

 `product_id` int(11) NOT NULL,

 `order_status` tinyint(1) NOT NULL,

 PRIMARY KEY (`order_id`)

)AUTO_INCREMENT = 10001;



```


7.  执行如下SQL语句,给订单表orders中插入数据。


```

INSERT INTO orders

VALUES (default, '2020-07-30 10:08:22', 'Jark', 50.50, 102, false),

       (default, '2020-07-30 10:11:09', 'Sally', 15.00, 105, false),

       (default, '2020-07-30 12:00:30', 'Edward', 25.25, 106, false);



```


8.  输入exit退出数据库。


![](https://oscimg.oschina.net/oscnet/up-2c8b791fd0e815b6f3b975e9b4fe17fe8a4.png)


4\. 运行Flink


本步骤将指导您如何下载并运行Flink。


1.  安装JDK。


a.执行如下命令,使用yum安装JDK 1.8。


```

yum -y install java-1.8.0-openjdk*



```


b.执行如下命令,查看是否安装成功。


```

java -version



```


返回结果如下,表示您已成功安装JDK 1.8。


![](https://oscimg.oschina.net/oscnet/up-88491396a5a8f9fd8178b98fbaa85e0b690.png)


2.  下载Flink和Flink CDC MySQL Connector。


a.执行如下命令,下载Flink。


```

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/flink-1.13.6-bin-scala_2.11.tgz



```


b.执行如下命令,解压Flink。


```

tar xzvf flink-1.13.6-bin-scala_2.11.tgz



```


c.执行如下命令,进入lib目录。


```

cd flink-1.13.6/lib/



```


d.执行如下命令,下载flink-sql-connector-mysql-cdc。


```

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/PolarDB-X/flink-sql-connector-mysql-cdc-2.2.1.jar



```


e.执行如下命令,返回Flink目录。


```

cd ..



```


3.  启动Flink。


a.执行如下命令,启动Flink。


```

./bin/start-cluster.sh



```


b.执行如下命令,连接Flink。


```

./bin/sql-client.sh



```


4.  在Flink中创建与PolarDB-X关联的订单表orders。


a.执行如下SQL语句,创建订单表orders。


```

CREATE TABLE orders (

 order_id INT,

 order_date TIMESTAMP(0),

 customer_name STRING,

 price DECIMAL(10, 5),

 product_id INT,

 order_status BOOLEAN,

 PRIMARY KEY (order_id) NOT ENFORCED

) WITH (

'connector' = 'mysql-cdc',

'hostname' = 'localhost',

'port' = '8527',

'username' = 'polardbx_root',

'password' = '123456',

'database-name' = 'mydb',

'table-name' = 'orders'

);



```


b.执行如下SQL语句,查看订单表orders。


```

select * from orders;



```


返回结果如下,您可以查看到PolarDB-X的订单表orders的数据已经同步到Flink的订单表orders中。


![](https://ucc.alicdn.com/pic/developer-ecology/da252fdc07c643ce99b73943787e3088.png)![](https://oscimg.oschina.net/oscnet/up-4e5e208df2ffac07be69099993132bf945f.png)


c.按q键退出。


5\. 启动压测脚本并实时获取GMV


经过前面几步操作后,我们在PolarDB-X中准备好了原始订单表,在Flink中准备好了对应的订单表,并通过 PolarDB-X Global Binlog与Flink CDC MySQL Connector打通了两者之间的实时同步链路。 本步骤将指导您如何创建压测脚本,模拟双十一零点大量订单涌入的场景。


1.  准备压测脚本。


a.在实验页面,单击右上角的![](https://oscimg.oschina.net/oscnet/up-d89a28658dfa0f0d42c0914c2705d4d2005.png)图标,创建新的终端二。


![](https://oscimg.oschina.net/oscnet/up-afea9828d9483794ba5bdbaf6db97cf1070.png)


b.执行如下命令,创建配置文件mysql-config.cnf。


```

vim mysql-config.cnf


```


c.将如下代码添加到配置文件mysql-config.cnf中。


```

[client]

user = "polardbx_root"

password = "123456"

host = 127.0.0.1

port = 8527


```


d.添加完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。


e.执行如下命令,[创建脚本buy.sh](http://xn--buy-th2el20dxsluh8b.sh)。


```

vim buy.sh


```


f.将如下代码添加到脚本buy.sh中。


```

#!/bin/bash


echo "start buying..."


count=0

while :

do

 mysql --defaults-extra-file=./mysql-config.cnf -Dmydb -e "insert into orders values(default, now(), 'free6om', 1024, 102, 0)"

 let count++

 if ! (( count % 10 )); then

  let "batch = count/10"

  echo $batch": got 10 products, gave 1024¥"

 fi

 sleep 0.05

done


```


g.添加完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。


h.执行如下命令,为脚本buy.sh增加执行权限。


```

chmod +x buy.sh


```


2.  启动Flink实时计算。


本实验场景通过Flink SQL实时呈现GMV计算结果。


切换至终端一,在Flink中执行如下SQL语句,查询GMV(gmv列)和订单数(orders列)。


```

select 1, sum(price) as gmv, count(order_id) as orders from orders;


```


返回结果如下,您可在Flink的实时计算结果中查看到实时的GMV(gmv列)和订单数(orders列)。


![](https://oscimg.oschina.net/oscnet/up-233d9a241cd3c49ab611a4bfd2d53084b3b.png)


3.  启动压测脚本。


a.切换至终端二,执行如下命令,启动压测脚本,开始创建订单。


```

./buy.sh


```


返回结果如下,您可看到压测脚本启动后,不断有订单被创建出来。


![](https://oscimg.oschina.net/oscnet/up-9c59ea37528ea5612089407e8a774862c2f.png)


b.切换至终端一,在Flink的实时计算结果中,可查看到实时的GMV(gmv列)和订单数(orders列)。


![](https://oscimg.oschina.net/oscnet/up-7d72e93f1e1f531c8abf89e84ffb9e5f505.png)


恭喜完成


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975905/viewspace-2903335/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-06-02

  • 博文量
    142
  • 访问量
    71685