论文部分内容阅读
摘 要:文中提出了基于分布式服务的组态图形数据更新方案。数据监测服务监测到数据变化时,变化的数据更新到redis实时库缓存,同时把变化的数据推送到Kafka总线,Kafka消费者监听到消息后通过Websocket把变化的数据推送到前端页面,前端页面解析数据后展示,完成图形数据的刷新。
关键词:组态图形;分布式;数据更新;实时推送
中图分类号:TM734 文献标识码:A
1 主要技术简介
1.1 Websocket技术
Websocket 是 HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议。在Websocket API 中,浏览器和服务器只需完成一次握手,两者就直接可以创建持久性的連接,进行双向数据传输。传统技术下实现推送,所用的方案都是 Ajax 轮询。这种传统的模式浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。这种场景下,Websocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
1.2 Kafka技术
Kafka是一种高吞吐量的分布式发布订阅消息系统和强大的分布式消息队列,能够将消息从一个端点传递到另一个端点,具有高性能、持久化、多副本备份、横向扩展能力,可以处理大量的数据。Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。
1.3 redis技术
redis 是一个完全开源的、高性能的 key-value 内存型数据库,可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合等。 Redis 内置了复制,LUA脚本, LR驱动事件,事务和不同级别的磁盘持久化,并通过 Redis哨兵和自动分区提供高可用性。
2 系统设计与实现
2.1 系统架构
系统主要包含数据监测服务、Kafka总线服务、redis实时数据缓存服务、Websocket消息推送服务和文件服务等(如图1)。
2.2 数据更新流程
(1)前端页面请求组态文件。前端页面初始化加载时,向文件服务发送带有文件版本信息的请求,文件服务判断文件版本信息后通知页面是否需要下载组态文件,前端页面接收到返回信息后下载相应的组态文件或读取本地缓存的组态文件。
(2)前端页面初始化。页面加载完成DOM元素后,使用js解析组态文件,完成组态图形绘制,并与Websocket服务器创建连接,等待数据推送。
(3)页面数据初始化。页面初始化完成后,首先读取redis缓存中的最新数据,用于刷新组态画面中各图符的当前状态。
(4)数据监测服务实时监测数据变化。在数据变化时将数据更新到redis实时库中,并调用Kafka生产者的接口把变化的数据推送到Kafka总线上。
(5)Kafka消费者侦听到总线数据后获取数据。调用Websocket服务接口,把数据推送到前端页面,通过前端js解析处理后展示,完成组态图形数据刷新(如图2)。
2.3 技术要点
(1)数据变化检测机制。服务端只向前端页面发送变化的数据,而不是发送所有数据,数据量更小,节省了带宽,传输效率更高。为了保障实时性,数据检测服务端通过对比站端设备上送的最新数据和redis实时库中缓存数据值来判断数据是否变化,如果数据有变化,则更新实时库缓存,并立即发送变化的数据到Kafka总线,Kafka消费者监听到消息后立即推送到页面,数据即可刷新。
(2)页面缓存机制。页面初始化加载时,会读取Cookie中的文件版本信息,然后向文件服务发送带有版本信息的请求,格式如下:
{
"name":”s1.xml”,
"version":”1.0”, //版本信息
"time":1566530919566, //时间戳,记录了最后一次修改时间
}
如果未读取到Cookie中版本信息,或者当前缓存文件版本与文件服务器中文件版本不一致,则重新下载相关文件并缓存到本地,同时更新文件版本信息到Cookie中。页面缓存机制避免了重复大量的文件传输过程,节省了带宽。
3 结束语
本文提出了一种基于分布式服务的组态图形数据更新方案,采用了主流的redis、Kafka、Websocket等中间件来作为技术支撑,通过数据变化更新机制和页面缓存机制来优化数据传输,保证了数据的实时性、高效性、稳定性。由于研究工作的局限性,目前尚未具体评估高并发情景下的性能瓶颈,但经实际验证能够满足电力系统日常运行需求。
参考文献:
[1]汪映辉,吾喻明.基于SVG的电力调度自动化系统实时画面的WEB发布[J].应用科技,2008,21(14):5-76.
[2]吴志芳,陈传波,刘昕.电力生产实时画面的WEB发布[J].实践经验,2000,19(10):54-56.
[3]陈传波,王菁,邓凯.基于SVG的实时数据动态发布技术的研究[J].小型微型计算机系统,2008,29(05):609-612.
[4]张荣,郭立君,刘箴.基于SVG的实时监控系统设计与实现[J].微电子学与计算机,2006,35(06):223-226.
关键词:组态图形;分布式;数据更新;实时推送
中图分类号:TM734 文献标识码:A
1 主要技术简介
1.1 Websocket技术
Websocket 是 HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议。在Websocket API 中,浏览器和服务器只需完成一次握手,两者就直接可以创建持久性的連接,进行双向数据传输。传统技术下实现推送,所用的方案都是 Ajax 轮询。这种传统的模式浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。这种场景下,Websocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
1.2 Kafka技术
Kafka是一种高吞吐量的分布式发布订阅消息系统和强大的分布式消息队列,能够将消息从一个端点传递到另一个端点,具有高性能、持久化、多副本备份、横向扩展能力,可以处理大量的数据。Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。
1.3 redis技术
redis 是一个完全开源的、高性能的 key-value 内存型数据库,可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合等。 Redis 内置了复制,LUA脚本, LR驱动事件,事务和不同级别的磁盘持久化,并通过 Redis哨兵和自动分区提供高可用性。
2 系统设计与实现
2.1 系统架构
系统主要包含数据监测服务、Kafka总线服务、redis实时数据缓存服务、Websocket消息推送服务和文件服务等(如图1)。
2.2 数据更新流程
(1)前端页面请求组态文件。前端页面初始化加载时,向文件服务发送带有文件版本信息的请求,文件服务判断文件版本信息后通知页面是否需要下载组态文件,前端页面接收到返回信息后下载相应的组态文件或读取本地缓存的组态文件。
(2)前端页面初始化。页面加载完成DOM元素后,使用js解析组态文件,完成组态图形绘制,并与Websocket服务器创建连接,等待数据推送。
(3)页面数据初始化。页面初始化完成后,首先读取redis缓存中的最新数据,用于刷新组态画面中各图符的当前状态。
(4)数据监测服务实时监测数据变化。在数据变化时将数据更新到redis实时库中,并调用Kafka生产者的接口把变化的数据推送到Kafka总线上。
(5)Kafka消费者侦听到总线数据后获取数据。调用Websocket服务接口,把数据推送到前端页面,通过前端js解析处理后展示,完成组态图形数据刷新(如图2)。
2.3 技术要点
(1)数据变化检测机制。服务端只向前端页面发送变化的数据,而不是发送所有数据,数据量更小,节省了带宽,传输效率更高。为了保障实时性,数据检测服务端通过对比站端设备上送的最新数据和redis实时库中缓存数据值来判断数据是否变化,如果数据有变化,则更新实时库缓存,并立即发送变化的数据到Kafka总线,Kafka消费者监听到消息后立即推送到页面,数据即可刷新。
(2)页面缓存机制。页面初始化加载时,会读取Cookie中的文件版本信息,然后向文件服务发送带有版本信息的请求,格式如下:
{
"name":”s1.xml”,
"version":”1.0”, //版本信息
"time":1566530919566, //时间戳,记录了最后一次修改时间
}
如果未读取到Cookie中版本信息,或者当前缓存文件版本与文件服务器中文件版本不一致,则重新下载相关文件并缓存到本地,同时更新文件版本信息到Cookie中。页面缓存机制避免了重复大量的文件传输过程,节省了带宽。
3 结束语
本文提出了一种基于分布式服务的组态图形数据更新方案,采用了主流的redis、Kafka、Websocket等中间件来作为技术支撑,通过数据变化更新机制和页面缓存机制来优化数据传输,保证了数据的实时性、高效性、稳定性。由于研究工作的局限性,目前尚未具体评估高并发情景下的性能瓶颈,但经实际验证能够满足电力系统日常运行需求。
参考文献:
[1]汪映辉,吾喻明.基于SVG的电力调度自动化系统实时画面的WEB发布[J].应用科技,2008,21(14):5-76.
[2]吴志芳,陈传波,刘昕.电力生产实时画面的WEB发布[J].实践经验,2000,19(10):54-56.
[3]陈传波,王菁,邓凯.基于SVG的实时数据动态发布技术的研究[J].小型微型计算机系统,2008,29(05):609-612.
[4]张荣,郭立君,刘箴.基于SVG的实时监控系统设计与实现[J].微电子学与计算机,2006,35(06):223-226.