CN108075989A - 一种基于可扩展协议的负载均衡网络中间件实现方法 - Google Patents
一种基于可扩展协议的负载均衡网络中间件实现方法 Download PDFInfo
- Publication number
- CN108075989A CN108075989A CN201611043144.0A CN201611043144A CN108075989A CN 108075989 A CN108075989 A CN 108075989A CN 201611043144 A CN201611043144 A CN 201611043144A CN 108075989 A CN108075989 A CN 108075989A
- Authority
- CN
- China
- Prior art keywords
- message
- thread
- size
- thread pool
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于可扩展协议的负载均衡网络中间件实现方法:1、服务端接收到客户端的多帧报文;步骤2、将多帧报文解析为单帧报文后,获取消息类型;步骤3、将读消息放入读线程池,将写消息放入写线程池,其中,小尺寸消息使用栈上分配方式,大尺寸消息采用堆上分配方式;步骤4、读线程池和写线程池分别调用负载均衡算法选定具体的处理线程,并将消息内容放入对应的线程消息队列;步骤5、对于写消息,写线程将数据写入磁盘文件,并返回确认消息;对于读消息,读线程则根据索引查询对应的磁盘文件,将数据读入缓存,并组装好消息返回给对应的客户端。具有高性能、可扩展协议和负载均衡等优点,能有效节省网络流量和提高响应速率。
Description
技术领域
本发明涉及一种基于可扩展协议的负载均衡网络中间件实现方法。
背景技术
时序数据处理技术被广泛应用于广域测量***(WAMS)、变电站监控、调度、直流、稳控等多个电力自动化***中,以满足其存储海量、高频数据的需求。时序数据库主要用于处理秒级、毫秒级高频数据,每个存储周期(毫秒或是秒)会产生一批数据,因此数据量极大,对网络流量和网络中间件的读写性能要求极高,该需求不同于传统的网络中间件,需要定制开发适用于时序数据库的网络中间件,针对报文、网络和存储特点进行优化。
传统的网络中间件实现方法如下:
(1)基于远程调用的网络中间件(RPC,Remote Procedure Call)
远程调用中间件的基本通信模型是基于Client/Server进程间通信模型的一种同步通信形式,是过程式程序设计风范在分布式应用中的扩展。该中间件为Client提供了远程服务的过程抽象,其底层消息传递操作对Client是完全透明的。在RPC中,Client即是请求服务的调用者(Caller),而Server则是执行Client的请求而被调用的程序。
(2)基于分布式对象的网络中间件(ORB,Object Request Broker)
这种形式的网络中间件以DCOM(分布式组件对象模型,分布式组件对象模式)和CORBA(Common Object Request Broker Architecture)为代表,但无论哪种标准与实现,均由以下部份组成。
A、实际完成服务和功能的远程对象,负责实际完成***服务,接受远程请求。
B、访问客户端代理,负责从客户端接受请求,并将请求转换为远程调用发送到服务端。
C、对象请求代理ORB,提供一个通信框架,透明的在异构分布式计算环境中传递对象请求,负责定位对象实现并将请求传输给对象实现后返回结果,在分布式网络中间件中处于核心地位。
(3)基于消息队列的网络中间件(Message-oriented Middleware)
基于消息的网络中间件主要用于在不同应用间投递消息,专注于异构环境的消息交换,目前最流行的面向消息的网络中间件是Apache的ActiveMQ。消息可不包括语意和状态,因此面向消息的网络中间件对应用而言是最透明的选择。应用无需关心消息的来源、连接方式,而中间件无需关心消息的语意,这样可以很好的实现与应用解耦。
以上网络中间件虽然都是较为成熟的框架,但并不适用于大数据量、高性能要求的时序数据处理。首先、这些框架都是通用框架,针对时序数据的键值对特性无法优化,使得通讯协议过于庞大而造成资源浪费;其次、通用框架需要考虑过多的场景,因此中间件过于复杂,例如CORBA就是一个重量级框架,将会拖累整个时序数据库部署;再次、传统中间件很好的屏蔽了底层操作***相关性,做到通用性和跨平台,但这是在损失一定的***性能基础上,因此无法满足时序数据的大数据量和低响应时延的要求。
发明内容
针对上述问题,本发明提供一种基于可扩展协议的负载均衡网络中间件实现方法,具有高性能、可扩展协议和负载均衡等优点,能有效节省网络流量和提高响应速率。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种基于可扩展协议的负载均衡网络中间件实现方法,其特征在于,包括如下步骤:
步骤1、服务端接收到客户端的多帧报文,其中每一帧报文均为258个字节,每一帧报文的格式为:
1个字节的消息类型+1个字节的消息大小+消息内容:
消息类型用于读消息和写消息的判断、以及小尺寸消息和大尺寸消息的判断;
对于小尺寸消息,消息大小用于设置消息内容的有效字节位数,消息内容最大为256个字节;对于大尺寸消息,消息大小置空,消息内容用于记录实际数据的地址,消息内容最大为256个字节;
步骤2、将多帧报文解析为单帧报文后,获取消息类型;
步骤3、将读消息放入读线程池,将写消息放入写线程池,其中,小尺寸消息使用栈上分配方式,大尺寸消息采用堆上分配方式;
步骤4、读线程池和写线程池分别调用负载均衡算法选定具体的处理线程,并将消息内容放入对应的线程消息队列;
步骤5、对于写消息,写线程将数据写入磁盘文件,并返回确认消息;对于读消息,读线程则根据索引查询对应的磁盘文件,将数据读入缓存,并组装好消息返回给对应的客户端。
负载均衡算法包括权重轮询算法、随机算法、权重随机算法、响应时间优先算法、最少连接优先算法。
优选,读线程池和写线程池分别包括多个读线程和多个写线程。
优选,消息内容最小为8个字节。
本发明的有益效果是:
(1)可以通过扩展消息帧数的方式扩展通讯协议。
(2)不需要为每个客户端创建处理线程,降低了***资源开销,支持客户端最大并发数显著提高。显著提高报文处理能力,每秒处理500万事件。
(3)降低了网络流量,服务端占用的CPU和内存也明显减少。
附图说明
图1是本发明多帧消息结构示意图;
图2是本发明栈上报文格式示意图;
图3是本发明堆上报文格式示意图;
图4是本发明负载均衡策略示意图;
图5是本发明一种基于可扩展协议的负载均衡网络中间件实现方法的流程示意图。
具体实施方式
下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
如图1-5所示,一种基于可扩展协议的负载均衡网络中间件实现方法,包括如下步骤:
步骤1、如图1所示,服务端接收到客户端的多帧报文,其中每一帧报文均为258个字节,由常量在编译时指定,每一帧报文的格式为:
1个字节的消息类型+1个字节的消息大小+消息内容:
消息类型用于读消息和写消息的判断、以及小尺寸消息和大尺寸消息的判断,小尺寸消息和大尺寸消息是相对的,其临界值可根据实际***调整,通过代码宏定义设置,比如,消息内容在256字节以内为小尺寸消息,超过256字节的为大尺寸消息。
对于小尺寸消息,消息大小用于设置消息内容的有效字节位数,消息内容最大为256个字节,最小为8个字节,当消息内容为256个字节时,每一帧报文的尾部均是有效消息,否则,每一帧报文的尾部会存在无效消息,通过消息大小来设置消息内容的有效字节位数,如图2所示。
对于大尺寸消息,消息大小置空,消息大小放到具体数据帧里,消息内容用于记录实际数据的地址,指向的地址空间包含数据指针、数据大小、定制化的析构函数、引用计数和数据内容等信息。同样的,消息内容最大为256个字节,最小为8个字节,如图3所示。
根据每一帧报文长度固定解析,从多帧报文中获取需要的信息,如消息头、消息类型等,该多帧消息格式可以方便的进行消息内容扩展,采用扩展消息帧的方式扩展通讯协议,而无须破坏现有结构与应用消息结构。消息头也被视为一个独立的消息帧,这样可以通过扩展消息帧数的方式扩展通讯协议。
步骤2、将多帧报文解析为单帧报文后,获取消息类型:即读写类型和大小尺寸消息类型。
步骤3、将读消息放入读线程池,将写消息放入写线程池,进行读写分离后放入对应的线程池,可以尽量减少数据共享,以降低共享的互斥开销,避免互斥量、信号量、竞争条件等同步手段。读写都有多个(默认创建8个读线程和8个写线程)线程组成线程池,共同处理事务。
其中,小尺寸消息因消息长度有限,如果使用内存堆分配、析构,会造成性能瓶颈,易造成内存碎片化,所以使用栈上分配方式性能更佳。如果单帧消息为大尺寸消息,需要防止栈溢出,同时支持引用计数以避免大内存拷贝开销,采用堆上分配方式。
步骤4、读线程池和写线程池分别调用负载均衡算法选定具体的处理线程,并将消息内容放入对应的线程消息队列。
如图4所述,负载均衡算法包括权重轮询算法、随机算法、权重随机算法、响应时间优先算法、最少连接优先算法。读写线程池依据选择的负载均衡算法,选定具体的处理线程。网络中间件默认选择的策略为权重轮询算法。每一个读写线程池根据配置预先创建一定数量线程的读线程池和写线程池,通过统一的线程管理器进行管理,通过多线程进行IO读写可明显提高***资源利用率,而采用预先创建线程可以明显减少后期频繁创建销毁线程的开销。每个线程都有自己的消息队列,从消息队列中获取处理报文。
步骤5、对于写消息,写线程将数据写入磁盘文件,并返回确认消息;对于读消息,读线程则根据索引查询对应的磁盘文件,将数据读入缓存,并组装好消息返回给对应的客户端。
综上所述,本发明的基于可扩展协议的负载均衡网络中间件实现方法,可以实现网络中间件的负载均衡和可扩展,解决传统网络中间件无法适应时间序列数据库大数据量和低响应时延的要求,使得服务节点资源得到合理利用,整体服务性能有显著提高。同时,对网络协议采用多帧可扩展协议,并将小尺寸消息在栈上创建、大尺寸消息在堆上创建,减少了内存碎片化和内存拷贝的时间,降低了网络整体流量,具有较好的可扩展性。读写分离技术减轻了各个线程间数据的耦合度,线程间不存在共享数据,减少了大量的互斥量、信号量、竞争条件等同步手段。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (4)
1.一种基于可扩展协议的负载均衡网络中间件实现方法,其特征在于,包括如下步骤:
步骤1、服务端接收到客户端的多帧报文,其中每一帧报文均为258个字节,每一帧报文的格式为:
1个字节的消息类型+1个字节的消息大小+消息内容:
消息类型用于读消息和写消息的判断、以及小尺寸消息和大尺寸消息的判断;
对于小尺寸消息,消息大小用于设置消息内容的有效字节位数,消息内容最大为256个字节;对于大尺寸消息,消息大小置空,消息内容用于记录实际数据的地址,消息内容最大为256个字节;
步骤2、将多帧报文解析为单帧报文后,获取消息类型;
步骤3、将读消息放入读线程池,将写消息放入写线程池,其中,小尺寸消息使用栈上分配方式,大尺寸消息采用堆上分配方式;
步骤4、读线程池和写线程池分别调用负载均衡算法选定具体的处理线程,并将消息内容放入对应的线程消息队列;
步骤5、对于写消息,写线程将数据写入磁盘文件,并返回确认消息;对于读消息,读线程则根据索引查询对应的磁盘文件,将数据读入缓存,并组装好消息返回给对应的客户端。
2.根据权利要求1所述的一种基于可扩展协议的负载均衡网络中间件实现方法,其特征在于,负载均衡算法包括权重轮询算法、随机算法、权重随机算法、响应时间优先算法、最少连接优先算法。
3.根据权利要求1所述的一种基于可扩展协议的负载均衡网络中间件实现方法,其特征在于,读线程池和写线程池分别包括多个读线程和多个写线程。
4.根据权利要求1所述的一种基于可扩展协议的负载均衡网络中间件实现方法,其特征在于,消息内容最小为8个字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611043144.0A CN108075989B (zh) | 2016-11-11 | 2016-11-11 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611043144.0A CN108075989B (zh) | 2016-11-11 | 2016-11-11 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108075989A true CN108075989A (zh) | 2018-05-25 |
CN108075989B CN108075989B (zh) | 2021-05-28 |
Family
ID=62161515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611043144.0A Active CN108075989B (zh) | 2016-11-11 | 2016-11-11 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108075989B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286572A (zh) * | 2018-09-30 | 2019-01-29 | 郑州冰川网络技术有限公司 | 动态域名解析方法 |
CN116089414A (zh) * | 2023-04-10 | 2023-05-09 | 之江实验室 | 基于海量数据场景的时序数据库写入性能优化方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801683A (zh) * | 2004-12-31 | 2006-07-12 | 华为技术有限公司 | 消息流控的方法 |
US20070115939A1 (en) * | 2005-10-12 | 2007-05-24 | Samsung Electronics Co., Ltd. | Network on chip system employing an advanced extensible interface protocol |
CN101194482A (zh) * | 2003-08-13 | 2008-06-04 | 高通股份有限公司 | 用于更高数据速率的信号接口 |
US8090873B1 (en) * | 2005-03-14 | 2012-01-03 | Oracle America, Inc. | Methods and systems for high throughput information refinement |
CN103095591A (zh) * | 2012-12-12 | 2013-05-08 | 南京南瑞继保电气有限公司 | 一种增强gmrp组播注册可靠性的方法 |
CN103645862A (zh) * | 2013-12-12 | 2014-03-19 | 北京同有飞骥科技股份有限公司 | 一种磁盘阵列初始化性能提升方法 |
CN105242882A (zh) * | 2015-10-13 | 2016-01-13 | 东方网力科技股份有限公司 | 时序数据的帧存储方法及装置、时序数据查询方法及装置 |
CN105491150A (zh) * | 2015-12-28 | 2016-04-13 | 中国民航信息网络股份有限公司 | 基于时间序列的负载均衡处理方法及*** |
-
2016
- 2016-11-11 CN CN201611043144.0A patent/CN108075989B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101194482A (zh) * | 2003-08-13 | 2008-06-04 | 高通股份有限公司 | 用于更高数据速率的信号接口 |
CN1801683A (zh) * | 2004-12-31 | 2006-07-12 | 华为技术有限公司 | 消息流控的方法 |
US8090873B1 (en) * | 2005-03-14 | 2012-01-03 | Oracle America, Inc. | Methods and systems for high throughput information refinement |
US20070115939A1 (en) * | 2005-10-12 | 2007-05-24 | Samsung Electronics Co., Ltd. | Network on chip system employing an advanced extensible interface protocol |
CN103095591A (zh) * | 2012-12-12 | 2013-05-08 | 南京南瑞继保电气有限公司 | 一种增强gmrp组播注册可靠性的方法 |
CN103645862A (zh) * | 2013-12-12 | 2014-03-19 | 北京同有飞骥科技股份有限公司 | 一种磁盘阵列初始化性能提升方法 |
CN105242882A (zh) * | 2015-10-13 | 2016-01-13 | 东方网力科技股份有限公司 | 时序数据的帧存储方法及装置、时序数据查询方法及装置 |
CN105491150A (zh) * | 2015-12-28 | 2016-04-13 | 中国民航信息网络股份有限公司 | 基于时间序列的负载均衡处理方法及*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286572A (zh) * | 2018-09-30 | 2019-01-29 | 郑州冰川网络技术有限公司 | 动态域名解析方法 |
CN116089414A (zh) * | 2023-04-10 | 2023-05-09 | 之江实验室 | 基于海量数据场景的时序数据库写入性能优化方法及装置 |
CN116089414B (zh) * | 2023-04-10 | 2023-09-08 | 之江实验室 | 基于海量数据场景的时序数据库写入性能优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108075989B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459418B (zh) | 一种基于rdma的键值存储***传输方法 | |
CN105635298B (zh) | 一种基于业务隔离原理的数据采集设备统一接入*** | |
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
CN104731569B (zh) | 一种数据处理方法及相关设备 | |
CN108055255A (zh) | 一种事件库、可扩展数据管理***及其管理方法 | |
WO2023046141A1 (zh) | 一种数据库网络负载性能的加速框架、加速方法及设备 | |
CN110120919A (zh) | 一种用于容器网络的网络资源隔离方法和*** | |
CN111404818B (zh) | 一种面向通用多核网络处理器的路由协议优化方法 | |
CN114710571B (zh) | 数据包处理*** | |
US8135851B2 (en) | Object request broker for accelerating object-oriented communications and method | |
CN108075989A (zh) | 一种基于可扩展协议的负载均衡网络中间件实现方法 | |
CN109829094A (zh) | 分布式爬虫*** | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN109828842A (zh) | 一种基于dpdk技术开发的高性能数据采集引擎方法 | |
CN110737530A (zh) | 一种提升handle标识解析***收包能力的方法 | |
US20130117405A1 (en) | System and method for managing an object cache | |
CN102902593A (zh) | 基于缓存机制的协议分发处理*** | |
Li et al. | Improving spark performance with zero-copy buffer management and RDMA | |
CN115499889A (zh) | 基于vpp的upf转发面实现方法、装置、***及相关设备 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
CN116841720A (zh) | 资源配置方法、装置、计算机设备、存储介质及程序产品 | |
CN111400034B (zh) | 一种面向多核处理器的波形资源分配方法 | |
CN105389355B (zh) | 数据处理方法和终端 | |
CN113835904A (zh) | 一种远程过程调用控制方法、装置、设备及存储介质 | |
US8176117B2 (en) | Accelerator for object-oriented communications and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |