一种基于消息总线的数据高性能分发处理方法与流程
本发明涉及电力系统自动化,尤其涉及一种基于消息总线的数据高性能分发处理方法。
背景技术:
1、消息总线是一种通信架构,常用于分布式系统、企业级应用和微服务架构中,旨在简化各个应用模块或服务之间的消息传递。消息总线的核心作用是提供一个统一的通信平台,使得不同的系统组件可以通过消息的形式进行数据交换,而无需直接了解彼此的实现细节,消息总线使得发送者和接收者之间的通信变得松散耦合。基于事件驱动的消息总线提供进程间(计算机间和内部)的信息传输,具有消息的注册、撤销、发送、接收、订阅、发布等功能,以接口函数的形式提供给各类应用,具有组播和点到点传输形式;
2、而当前电力控制系统多采用基于tcp/ip的点对点通信或传统消息队列,存在以下问题:
3、一、高延迟:跨节点通信需多次协议转换,时延高;
4、二、低吞吐:单通道带宽利用率不足,无法满足毫秒级响应的需求;
5、三、可靠性差:网络抖动时数据丢失率高;
6、四、tcp/ip协议开销较大,传输效率和实时性不如udp
7、五、现有消息总线缺乏电力控制场景专用的qos机制;
8、六、数据序列化/反序列化效率低下;
9、七、缺乏面向电力scada系统的拓扑感知路由能力;
10、针对上述的技术缺陷,现提出解决方案。
技术实现思路
1、本发明的目的在于:可解决电力控制系统中海量实时数据分发存在的延迟高、吞吐量低、可靠性不足的问题,本发明可支持微秒级响应、吞吐量大于1gbps且丢包率小于0.01%。
2、为了实现上述目的,本发明采用了如下技术方案:一种基于消息总线的数据高性能分发处理方法,包括以下步骤:
3、步骤一、构建分层消息总线架构,包括核心交换层和边缘接入层,其中:
4、核心交换层:采用无阻塞网络拓扑结构,部署基于硬件加速的交换矩阵,支持百万级qps吞吐量;
5、边缘接入层:设置动态负载均衡模块,根据实时流量自动调整节点权重;
6、步骤二、实现多级数据传输机制,并完成消息总线环境的初始化,包括消息总线的共享内存、信号灯的创建以及消息收发队列分配,通过端口号区分不同类型的消息,同时建立多组消息通道,避免消息过滤和筛选,降低延迟,提高吞吐量,同时在数据包内增加消息过滤标识特征码,利用位操作快速过滤和筛选同一通道内的消息;
7、步骤三、在数据包内增加qos字段,用于标识不同消息的可靠性要求,所述qos字段标识包括重要消息数据、常规消息数据和紧急消息数据,对重要消息数据进行确认,若超时未收到确认消息,则进行消息重发,保障重要消息及时得到处理,同时采用高效的数据序列化/反序列化算法,降低传输延迟和序列化转换开销;
8、步骤四、当本节点进程需要将消息发往其他节点时,本地消息总线通过udp组播的方式,将消息发送到目的节点的消息总线,目的节点的消息总线收到消息后,再将消息插入到目的进程的队列上;
9、步骤五、建立混合路由分发模型,包括静态路由和动态路由,其中:
10、静态路由:预配置关键业务消息的优先级传输通道;
11、动态路由:基于qos需求实时计算最优路径;
12、步骤六、在终端命令执行时,显示使用消息总线的进程的信息以及消息总线中共享队列的使用情况,当应用进程异常时,显示应用进程的队列的使用情况。
13、进一步的,获取消息总线的处理能力系数ci、消息总线的当前负载数据li和平均处理时延;
14、根据以下公式计算整消费者节点权重:,其中wi为节点i权重,其中α、β、γ为预设的可配置调节因子。
15、进一步的,通过端口号区分不同类型的消息的具体过程如下:
16、s101、当数据包到达目标主机时,网络接口层接收数据帧,解封装得到ip数据包,并传递给核心交换层,核心交换层基于udp协议检查目标ip地址,确认数据包应交付给本机后,将数据包传递给传输层;
17、s102、通过传输层(tcp/udp)从数据包头部提取目标端口号,所述端口号为16位无符号整数(0-65535),包括公认端口、注册端口和动态/私有端口,其中:
18、公认端口(0-1023):如http(80)、https(443)、ftp(21),由iana统一分配。
19、注册端口(1024-49151):用户自定义服务,需向iana注册(如mysql的3306)。
20、动态/私有端口(49152-65535):临时分配给客户端(如浏览器临时端口);
21、s103、通过操作系统维护端口号到进程的映射表(如linux的/etc/services文件),同时传输层根据目标端口号查找映射表,确定对应的应用程序或服务;例如:端口80→web服务(http);
22、端口22→ssh服务;
23、端口443→https服务;
24、s104、根据预设的消息类型区分机制,实现端口号与传输层协议(tcp/udp)结合判断。例如:
25、tcp80→http
26、udp53→dns
27、同时部分协议通过端口号直接标识(如ftp使用21),而其他协议可能需结合数据内容(如http的get请求)。
28、进一步的,所述多级数据传输机制包括协议层、传输层和存储层,其中:
29、协议层用于采用自适应字典编码算法,对消息头进行差分压缩;
30、传输层用于基于业务类型动态选择snappy、zstandard以及lz4算法对数据包进行压缩;
31、存储层用于对持久化消息采用分块式deflate压缩策略。
32、进一步的,在数据包内增加消息过滤标识特征码的具体过程如下:
33、s201、基于端口号区分不同类型的消息,得到消息分类,所述消息分类包括优先级分类、数据类型分类、数据来源分类以及数据存储和处理层级分类;
34、s202、根据消息分类定义定义特征码的格式和长度,所述特征码是一段二进制数据,是一个唯一标识符,用于标识消息的特性或类型,首先需要定义特征码的格式和长度,结合过滤目标生成消息过滤标识特征码;
35、具体的:可以使用8位、16位、32位或更长的字段来存储特征码,特征码可以包括多个部分:
36、标识符:用于唯一标识某类消息(例如:特定的应用协议、消息优先级等)。
37、过滤标记:用于描述如何处理或过滤数据包(例如:通过防火墙、流量控制等);
38、s203、确定特征码的位置:在数据包的头部确定消息过滤标识特征码的嵌入位点,在数据包生成时,通过应用程序将消息过滤标识特征码插入数据包的嵌入位点,消息过滤标识特征码的嵌入位点设置在附加到数据包的头部,紧随源地址、目标地址、协议类型之后;
39、具体的:在ip数据包中,将消息过滤标识特征码放在ip头部的附加字段或tcp/udp头部的扩展字段中,例如,在ip头部的选项部分,或者在传输层协议的标头中插入消息过滤标识特征码;
40、若是自定义协议,消息过滤标识特征码的位置可以灵活设计,可放在数据部分或自定义头部中;
41、对于udp数据包,可以将消息过滤标识特征码放在udp头部之后,或者作为额外的字段添加到数据部分;
42、s204、设置特征码的内容:基于网络设备、路由器以及应用程序生成消息过滤标识特征码的值,根据消息的类型、优先级、应用协议动态设置消息过滤标识特征码的具体值;
43、例如,消息过滤标识特征码可能表示以下内容:
44、消息类型(如请求、响应、命令等)。
45、优先级(如高优先级、低优先级等)。
46、安全标记(如加密、签名等)。
47、流量控制标识(如是否允许转发、是否允许缓冲等)。
48、s205、当数据包被传输时,网络设备利用消息过滤标识特征码对数据包进行过滤或处理。比如:
49、防火墙:根据消息过滤标识特征码检查数据包是否符合允许的访问规则;
50、路由器:根据消息过滤标识特征码确定数据包的转发路径,例如,某些消息过滤标识特征码可以指示数据包通过特定的网络或带宽进行传输;
51、中间设备:中间设备可以根据消息过滤标识特征码优先处理某些数据包,或者根据消息过滤标识特征码对数据进行分类和分流;
52、在接收方,接收到的数据包会被解析,消息过滤标识特征码会被提取出来。接收方的应用程序、协议栈或者中间层会根据消息过滤标识特征码来决定如何处理数据包。
53、进一步的,在数据包内增加qos字段的具体过程:
54、s301、基于mqtt协议设计qos字段:使用2位qos标志位进行字段定义,支持3级可靠性:
55、具体表示为:qos0(最多一次):无确认,类似"即发即弃";
56、qos1(至少一次):通过puback确认,可能重复;
57、qos2(仅一次):四步握手(publish→pubrec→pubrel→pubcomp),确保唯一交付;
58、s302、在数据包的头部固定位置嵌入qos标志位,在标志位处增加一个新的字段来存储qos信息,所述qos字段位于数据包头部的控制信息部分,以实现在传输过程中网络设备优先处理带有可靠性要求的消息,且允许接收方根据qos要求选择性地接收消息。
59、进一步的,计算最优路径的具体过程如下:
60、所述动态路由中的路径代价函数为:,其中dk为第k段链路时延,bk为带宽占用率,λ和μ为预设的权重参数;
61、获取qos需求,根据qos需求配置适配的λ和μ,获取传输过程中的链路时延数据和带宽占用率,将其代入路径代价函数中获取路径代价值j,根据预设的代价评估阈值,将低于代价评估阈值的路径输出作为最优路径
62、综上所述,由于采用了上述技术方案,本发明的有益效果是:
63、该基于消息总线的数据高性能分发处理方法,通过构建分层消息总线架构,同时实现多级数据传输机制,并完成消息总线环境的初始化,通过端口号区分不同类型的消息,在数据包内增加消息过滤标识特征码,利用位操作快速过滤和筛选同一通道内的消息,进而在数据包内增加qos字段,对重要消息数据进行确认,当本节点进程需要将消息发往其他节点时,本地消息总线通过udp组播的方式,将消息发送到目的节点的消息总线,目的节点的消息总线收到消息后,再将消息插入到目的进程的队列上,并建立混合路由分发模型,可解决电力控制系统中海量实时数据分发存在的延迟高、吞吐量低、可靠性不足的问题,本发明可支持微秒级响应、吞吐量大于1gbps且丢包率小于0.01%。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com