在hadoop或docker环境下基于kafka和flink的实时计算大屏展示

第一章 总体需求

1.1.课题背景

某股票交易机构已上线一个在线交易平台,平台注册用户量近千万,每日均 接受来自全国各地的分支机构用户提交的交易请求。鉴于公司发展及平台管理要 求,拟委托开发一个在线实时大数据系统,可实时观测股票交易大数据信息,展 示部分重要业绩数据。

1.2.数据源

为提供更真实的测试环境,公司的技术部门委托相关人员已设计了一个股票交易数据模拟器,可模拟产生客户在平台中下单的信息,数据会自动存入指定文件夹中的文本文件。

该模拟器允许调节进程的数量,模拟不同量级的并发量,以充分测试系统的性能。数据的具体字段说明详见下表:

1.3.要求

运用实时计算技术,采用不同的数据接入、实时计算方法构建一个股票实时交易的大数据看板,实现以下功能: 

(1) 可采用成熟的数据看板开源组件(要求有使用许可,如阿里的 DataV平台),或者自主开发本地展示平台;界面要求每秒刷新一次;

(2) 界面应美观大方、简洁的信息;

(3) 展示的信息应至少包含以下内容:

a) 订单的已处理速度,单位为“条/秒”;

b) 近 1 分钟与当天累计的总交易金额、交易数量;

c) 近 1 分钟与当天累计的买入、卖出交易量;

d) 近 1 分钟与当天累计的交易金额排名前 10 的股票信息;

e) 近 1 分钟与当天累计的交易量排名前 10 的交易平台;

f) 展示全国各地下单客户的累计数量(按省份),在地图上直观展示;

g) 展示不同股票类型的交易量分布情况;

h) [可选]对单支股票的交易量爆发式增长进行预警

(4) 数据统计误差(数据丢失、统计错误)不超过 1%,应设计实验计算数据误差率;

(5) 展示的数据延迟应不超过 30 秒,每次刷新时应显示获取的数据最新时间;

(6) 测试出系统的最大承载负荷量,即你搭建系统每秒最多能处理的订单数量;

(7)特色功能,根据业务场景及展示需要增加的特色功能。

  • 方案分析

本文结合实时计算的相关技术,制定了两种方案实现课题需求。

2.1.方案一

方案一的架构如图 1 所示利用kafka直接读取股票数据模拟器产生的数据,再使用Strom作为流计算平台,将统计的消息直接存入mysql数据库中去。datav直接读取mysql云数据库中的数据,并在大屏上展示出来

图一 方案一

该方案的优点是:

  1.  Kafka是一个高吞吐量、低延迟的分布式消息队列,可以快速处理和传递大量的实时数据。通过将股票数据模拟器产生的数据直接写入Kafka,可以实现实时的数据流处理,保证了数据的及时性。
  2.  Storm是一个分布式、容错的实时计算系统,它支持快速、可靠地处理大规模数据流。通过使用Storm作为流计算平台,可以对从Kafka中读取的股票数据进行实时的统计和计算,提供即时的数据分析和预测功能。
  3.  采用阿里云的数据库可以直接连接Datav不需要进行其他操作。

2.2.方案二

图二 方案二

方案二的架构如图 2 所示。利用kafka直接读取股票数据模拟器产生的数据,再使用Flink作为流计算平台,将统计的消息利用flinkjdbc直接存入mysql数据库中去。datav直接读取mysql云数据库中的数据,并在大屏上展示出来。

该方案的优点是:

  1.  Flink 对窗口事务的支持较为完善,自带窗口聚合方式实现数据统计;
  2.  Flink提供的与MySQL数据库的集成的连接方式;
  3.  Flink 提供了事件驱动的流处理模型,能够实现毫秒级的低延迟处理,同时具备很高的吞吐量,适合处理实时数据流。
  • 总体方案

方案的总体架构如图3所示,主要由数据源、消息中间件、流计算系统、实时数据存储和实时数据应用五大板块组成。

股票数据模拟器不断的产生股票数据,消息中间件为 Kafka,Kafka将股票模拟器产生的数据依次读取出来,并每秒读取一次excel表,将新生产的数据发送到kafka消费者。流计算系统选取的是flink,通过flink消费kafka生产的数据,并利用多线程的方式将计算结果保存的阿里云的Mysql数据库中去。最后利用datav直接连接阿里云的mysql数据库。

3

  • 单元实现

4.1.数据采集

由于股票数据模拟器会将数据实时保存Excel中,因此本文选择在 Kafka 生产者中建立与Excel表的连接,将最新的数据依次读取出来,并将读取到的数据发送到Kafka的topic主题中。

图4 生产者配置信息

图5 循环读取每一个csv文件

4.2.数据的分发与订阅

Kafka生产者生产来自股票数据模拟器产生的数据后,利用flink作为消费者,去消费kafka生产的内容。Flink消费者的配置如图6所示,然后利用flink的sink对消费的数据进行实时计算,如图7。

图6 flink配置

猜你喜欢

转载自blog.csdn.net/qq_63042830/article/details/135091224