第一章 总体需求
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云数据库中的数据,并在大屏上展示出来。
图一 方案一
该方案的优点是:
- Kafka是一个高吞吐量、低延迟的分布式消息队列,可以快速处理和传递大量的实时数据。通过将股票数据模拟器产生的数据直接写入Kafka,可以实现实时的数据流处理,保证了数据的及时性。
- Storm是一个分布式、容错的实时计算系统,它支持快速、可靠地处理大规模数据流。通过使用Storm作为流计算平台,可以对从Kafka中读取的股票数据进行实时的统计和计算,提供即时的数据分析和预测功能。
- 采用阿里云的数据库可以直接连接Datav不需要进行其他操作。
2.2.方案二
图二 方案二
方案二的架构如图 2 所示。利用kafka直接读取股票数据模拟器产生的数据,再使用Flink作为流计算平台,将统计的消息利用flinkjdbc直接存入mysql数据库中去。datav直接读取mysql云数据库中的数据,并在大屏上展示出来。
该方案的优点是:
- Flink 对窗口事务的支持较为完善,自带窗口聚合方式实现数据统计;
- Flink提供的与MySQL数据库的集成的连接方式;
- 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。
文章来源:https://www.toymoban.com/news/detail-773116.html
图6 flink配置文章来源地址https://www.toymoban.com/news/detail-773116.html
到了这里,关于在hadoop或docker环境下基于kafka和flink的实时计算大屏展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!