CN103428270A - 一种适用于分布式环境的网络通信方法 - Google Patents
一种适用于分布式环境的网络通信方法 Download PDFInfo
- Publication number
- CN103428270A CN103428270A CN2013102881150A CN201310288115A CN103428270A CN 103428270 A CN103428270 A CN 103428270A CN 2013102881150 A CN2013102881150 A CN 2013102881150A CN 201310288115 A CN201310288115 A CN 201310288115A CN 103428270 A CN103428270 A CN 103428270A
- Authority
- CN
- China
- Prior art keywords
- message
- communication
- client
- module
- communication service
- 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.)
- Pending
Links
Images
Abstract
本发明涉及一种适用于分布式环境的网络通信方法。本发明首先在分布式环境里的各个节点上分别对通信服务模块和客户端模块进行自定义配置,主要配置通信服务模块监听端口、客户端模块标识等信息;然后在各个节点上分别启动通信服务模块和客户端模块,以通信服务进程和客户端进程两个独立的进程形式运行;然后单个节点上的客户端进程与通信服务进程之间,以及两个节点之间的通信服务进程之间会自动建立全双工非阻塞式通信连接;采用基于消息驱动的消息总线型通信方法。本发明解决了分布式环境下有频繁而灵活通信需求的瓶颈问题,可应用于云计算各个节点之间的通信上。
Description
技术领域
本发明涉及网络通信技术领域,特别是一种适用于分布式环境的网络通信方法。
背景技术
分布式环境下尤其是云计算体系架构中,保证各个计算机节点之间灵活而稳定的通信是非常重要。而如今越来越多的云计算解决方案中各个节点的通信采用web service形式提供接口给用户;这种方式使用方便,但同时会带来以下问题:
一是通信形式固定,不能满足于对通信有灵活需求的要求。web service为了实现简易性,会以XML文件的形式将通信的信息格式提供给用户,用户虽然可以通过改变各个接口来达到通信要求的目的,但是对于一个不懂axis2c架构的程序员来说,这样会非常麻烦;
二是通信量小,现有采用web service形式通信的云计算解决方案,如eucalyptus,节点之间每一次通信都必须只能是一个小的功能参数列表,而无法做到一次通信实现多个功能的相关处理;
三是开销大,正是由于第二项所述,每一个功能通信都必须建立一次连接,当节点间通信并发量比较大时,很容易出现通信瓶颈,导致通信异常;
四是不灵活,很多分布式环境下的通信方式由于没有采用全双工非阻塞方式,导致节点之间的通信非常依赖:必须是管理节点向非管理节点主动发送或接收。
发明内容
本发明解决的技术问题在于提供一种适用于分布式环境的高灵活性的网络通信方式,提供一种全双工非阻塞、基于消息驱动的消息总线型通信方法;解决了为满足各个节点之间频繁通信而必须大量建立基于http协议的单双工阻塞形式的短连接而存在高消耗低效率的问题;提升分布式环境下各个节点之间的通信效率,增强灵活性和稳定性。
本发明解决上述技术问题的技术方案是:
包括如下步骤:
步骤1:分布式环境下的各个节点分别对通信模块和客户端模块进行自定义配置,主要配置步骤2中启动进程的进程标识、监听端口等信息;
步骤2:各个节点分别启动通信服务模块和客户端模块,以通信服务进程和客户端进程两个独立的进程形式运行;
步骤3:单个节点上的客户端进程与通信服务进程之间,以及节点之间的通信服务进程之间建立通信连接;
步骤4:客户端进程向本节点的通信服务进程发送携带有目的客户端标识的消息;
步骤5:通信服务进程受到消息后解析消息获得目的客户端标识;
步骤6:通信服务进程采取相应的路由选择算法,选取现存可用路径中的最优路径;
步骤7:通信服务进程根据选取的最优路径将消息转发到目的客户端节点的目的通信服务进程;
步骤8:目的客户端通信服务进程将消息送达其客户端进程;
步骤9:目的客户端进程消费消息执行相应操作,并将操作结果以步骤4至步骤8的过程向客户进程回送反馈消息包。
所述的通信模块和客户端模块分别是分布式环境下各个节点计算机的两个独立运行的进程;
所述的通信模块是指分布式环境下负责消息转发的、具有路由功能的模块,该模块只负责传递消息,与具体的业务逻辑无关;
所述的客户端模块是指分布式环境下消息的产生与消费者,与具体功能相关。
所述的通信模块进程和客户端进程,以及,通信进程与通信进程之间自动建立全双工非阻塞式通信连接;可以同时互发消息,并且监听线程及时反馈。
客户端模块与通信模块之间传递两种消息——数据消息和控制消息,它们之间是分离通信;
所述的数据消息是指具体业务功能相关消息,控制消息是指客户端向服务端注册等信息,数据消息与控制消息分离通信是指这两种消息分别走不同的socket通道。
通信服务模块之间建立的是一种基于消息驱动方式的消息总线,围绕消息的产生与处理展开的,并依靠消息循环机制来实现的一条大通道。
所述路由选择算法是指通信模块具有路由器类似的各种机制和算法。
传递的消息采用了类似json形式的消息包格式,满足json整形、字符串、数组、字典等格式。
本发明提供了一种全双工非阻塞、基于消息驱动的消息总线型通信方法;解决了为满足各个节点之间频繁通信而必须大量建立基于http协议的单双工阻塞形式的短连接而存在高消耗低效率的问题;提升分布式环境下各个节点之间的通信效率,增强灵活性和稳定性。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图;
图2为本发明的一个具体应用流程图;
图3为本发明在分布式环境下典型的部署场景。
具体实施方式
如图1所示,本发明的通信方法包括如下步骤:
步骤1:分布式环境下的各个节点分别对通信模块和客户端模块进行自定义配置,主要配置步骤2中启动进程的进程标识、监听端口等信息;
步骤2:各个节点分别启动通信服务模块和客户端模块,以通信服务进程和客户端进程两个独立的进程形式运行;
步骤3:单个节点上的客户端进程与通信服务进程之间,以及两个节点的通信服务进程之间会自动建立全双工非阻塞式通信连接;
步骤4:客户端进程A向本节点的通信服务进程A发送携带有目的客户端标识的消息;
步骤5:通信服务进程A受到消息后解析消息获得目的客户端标识;
步骤6:通信服务进程A采取相应的路由选择算法,选取现存可用路径中的最优路径;
步骤7:通信服务进程A根据选取的最优路径将消息转发到目的客户端节点的目的通信服务进程B;
步骤8:通信服务进程B将消息送达客户端进程B;
步骤9:客户端进程B消费消息执行相应操作,并将操作结果以步骤4至步骤8的过程向客户进程A回送反馈消息包。
所述的通信模块和客户端模块分别是分布式环境下各个节点计算机的两个独立运行的进程;
所述的通信模块是指分布式环境下负责消息转发的、具有路由功能的模块,该模块只负责传递消息,与具体的业务逻辑无关;
所述的客户端模块是指分布式环境下消息的产生与消费者,与具体功能相关。
所述的通信方式是全双工非阻塞的,通信模块进程和客户端进程,通信进程与通信进程之间可以同时互发消息,并且监听线程是及时反馈的;
所述的数据消息是指具体业务功能相关消息,控制消息是指客户端向服务端注册等信息,数据消息与控制消息分离通信是指这两种消息分别走不同的socket通道;
所述的通信服务模块之间建立的是一种基于消息驱动方式的消息总线,围绕消息的产生与处理展开的,并依靠消息循环机制来实现的一条大通道;
所述采用相应路由选择算法是指通信模块具有路由器类似的各种机制和算法;
所述的消息采用了类似json形式的消息包格式,满足json整形、字符串、数组、字典等格式。
如图2、3所示,本发明分布式环境下的每台物理机即各个节点都会安装一个通信服务模块gTunnel和客户端模块Client,然后该台物理机上的客户即Client通过连接此gTunnel进行消息的收发,而gTunnel通过和其他物理机上的gTunnel通信实现消息在网络上的转发。任意一个gTunnel的客户可以和任意一个同样连接到此gTunnel网络上的其他客户进行通信。
本发明的gTunnel有两个版本,python版和cpp版,下面以python版来描述在linux环境下的具体的实施方式。
首先创建几个gTunnel需要用到的目录:
$sudo mkdir-p/var/{run,log}/gTunnel
$sudo chmod a+rw/var/{run,log}/gTunnel
分别创建了gTunnel和Client运行时socket和日志log的存放目录。
然后进行相关配置,如果有超过一台物理机运行gTunnel,则每台物理机都要有一份gTunnel的软件包,每台物理机上的gTunnel都要分别进行配置,配置监听什么IP和端口(指linux环境可能有多张网卡的情况),连接什么IP和端口,哪台负责监听哪台负责连接(其实gTunnel没有主从之分,大家都是对等的,只要配置好让各个gTunnel相互连接起来即可)。
gTunnelLauncher.py配置相关代码:
if_name_=="_main_":
_listenPort=[("",10088),(“”,10086),]#========》这里设置监听的端口
_connectList=[("192.168.5.125",10088),(“12.13.14.15”,10089)]#========》设置连接的目标IP和端口。
然后,配置好gTunnel之后,被连接的gTunnel先启动,再启动要连接的gTunnel。
$python gTunnelLauncher.py
然后配置Client客户,gTunnel的客户是根据不同的业务功能自定义的,例如云计算解决方案中,Client可能是具体的功能实现方法,例如创建虚拟机、关闭虚拟机、重启虚拟机、挂载卸载逻辑卷等。这里仅以python版gTunnel自带的一个简单Client进行说明。
client.py配置相关代码:
if_name_=="_main_":
#gTunnel control interface
handler=kvPacketHandler()
nm="gtclient_desktop"#===》唯一要设置的是这里,每个client的名字都必须唯一的。
然后,启动Client。启动Client后,就可以到/var/log/gTunnel/目录下查看对应gTunnel服务端和Client客户端的通信日志了。
现假设客户端A要向客户端B发送创建虚拟机的消息,首先客户端A会将消息发送给本地节点的gTunnelA,然后gTunnelA有一个路由选择的相关过程选取到达gTunnelB的最优路径,假设中间经历了gTunnelC和gTunnelD,然后消息到达gTunnelB,gTunnelB发现消息目的客户端为客户端B,则将消息推送给本地客户端,本地客户端解析消息并进行创建虚拟机的相关操作,最后将操作结果按以上流程发回给客户端A。流程如图2所示。
Claims (10)
1.一种适用于分布式环境的网络通信方法,其特征在于:包括如下步骤:
步骤1:分布式环境下的各个节点分别对通信模块和客户端模块进行自定义配置,主要配置步骤2中启动进程的进程标识、监听端口等信息;
步骤2:各个节点分别启动通信服务模块和客户端模块,以通信服务进程和客户端进程两个独立的进程形式运行;
步骤3:单个节点上的客户端进程与通信服务进程之间,以及节点之间的通信服务进程之间建立通信连接;
步骤4:客户端进程向本节点的通信服务进程发送携带有目的客户端标识的消息;
步骤5:通信服务进程受到消息后解析消息获得目的客户端标识;
步骤6:通信服务进程采取相应的路由选择算法,选取现存可用路径中的最优路径;
步骤7:通信服务进程根据选取的最优路径将消息转发到目的客户端节点的目的通信服务进程;
步骤8:目的客户端通信服务进程将消息送达其客户端进程;
步骤9:目的客户端进程消费消息执行相应操作,并将操作结果以步骤4至步骤8的过程向客户进程回送反馈消息包。
2.根据权利要求1所述的网络通信方法,其特征在于:所述的通信模块和客户端模块分别是分布式环境下各个节点计算机的两个独立运行的进程;
所述的通信模块是指分布式环境下负责消息转发的、具有路由功能的模块,该模块只负责传递消息,与具体的业务逻辑无关;
所述的客户端模块是指分布式环境下消息的产生与消费者,与具体功能相关。
3.根据权利要求1所述的网络通信方法,其特征在于:所述的通信模块进程和客户端进程,以及,通信进程与通信进程之间自动建立全双工非阻塞式通信连接;可以同时互发消息,并且监听线程及时反馈。
4.根据权利要求2所述的网络通信方法,其特征在于:所述的通信模块进程和客户端进程,以及,通信进程与通信进程之间自动建立全双工非阻塞式通信连接;可以同时互发消息,并且监听线程及时反馈。
5.根据权利要求1至4任一项所述的网络通信方法,其特征在于:客户端模块与通信模块之间传递两种消息——数据消息和控制消息,它们之间是分离通信;
所述的数据消息是指具体业务功能相关消息,控制消息是指客户端向服务端注册等信息,数据消息与控制消息分离通信是指这两种消息分别走不同的socket通道。
6.根据权利要求1至4任一项所述的网络通信方法,其特征在于:通信服务模块之间建立的是一种基于消息驱动方式的消息总线,围绕消息的产生与处理展开的,并依靠消息循环机制来实现的一条大通道。
7.根据权利要求5所述的网络通信方法,其特征在于:通信服务模块之间建立的是一种基于消息驱动方式的消息总线,围绕消息的产生与处理展开的,并依靠消息循环机制来实现的一条大通道。
8.根据权利要求1至4任一项所述的网络通信方法,其特征在于:所述路由选择算法是指通信模块具有路由器类似的各种机制和算法。
9.根据权利要求5所述的网络通信方法,其特征在于:所述路由选择算法是指通信模块具有路由器类似的各种机制和算法。
10.根据权利要求1至4任一项所述的网络通信方法,其特征在于:传递的消息采用了类似json形式的消息包格式,满足json整形、字符串、数组、字典等格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102881150A CN103428270A (zh) | 2013-07-09 | 2013-07-09 | 一种适用于分布式环境的网络通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102881150A CN103428270A (zh) | 2013-07-09 | 2013-07-09 | 一种适用于分布式环境的网络通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103428270A true CN103428270A (zh) | 2013-12-04 |
Family
ID=49652435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102881150A Pending CN103428270A (zh) | 2013-07-09 | 2013-07-09 | 一种适用于分布式环境的网络通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103428270A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746977A (zh) * | 2013-12-27 | 2014-04-23 | 东软熙康健康科技有限公司 | 一种Linux服务器的连接方法和装置 |
WO2015090225A1 (zh) * | 2013-12-20 | 2015-06-25 | 国云科技股份有限公司 | 基于Linux下的自适应组件间通信方法 |
CN110147288A (zh) * | 2019-05-13 | 2019-08-20 | 浙江商汤科技开发有限公司 | 信息交互方法及装置、电子设备和存储介质 |
CN110768866A (zh) * | 2019-10-23 | 2020-02-07 | 通号城市轨道交通技术有限公司 | 一种分布式底层框架搭建方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458637A (zh) * | 2007-12-13 | 2009-06-17 | 华为技术有限公司 | 一种实现进程通信的方法、装置及系统 |
CN101572710A (zh) * | 2009-06-03 | 2009-11-04 | 杭州华三通信技术有限公司 | 一种进程间通信方法和系统 |
CN101883108A (zh) * | 2010-06-29 | 2010-11-10 | 中兴通讯股份有限公司 | 动态认证的文件传输方法及系统 |
CN103179133A (zh) * | 2013-04-12 | 2013-06-26 | 北京工业大学 | 基于实体类的客户端与服务器通信的方法 |
-
2013
- 2013-07-09 CN CN2013102881150A patent/CN103428270A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458637A (zh) * | 2007-12-13 | 2009-06-17 | 华为技术有限公司 | 一种实现进程通信的方法、装置及系统 |
CN101572710A (zh) * | 2009-06-03 | 2009-11-04 | 杭州华三通信技术有限公司 | 一种进程间通信方法和系统 |
CN101883108A (zh) * | 2010-06-29 | 2010-11-10 | 中兴通讯股份有限公司 | 动态认证的文件传输方法及系统 |
CN103179133A (zh) * | 2013-04-12 | 2013-06-26 | 北京工业大学 | 基于实体类的客户端与服务器通信的方法 |
Non-Patent Citations (2)
Title |
---|
胡俊: "构建分布式系统的关键技术研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
魏扬: "基于JAVA Socket网络通信模型设计与实现", 《内江科技》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015090225A1 (zh) * | 2013-12-20 | 2015-06-25 | 国云科技股份有限公司 | 基于Linux下的自适应组件间通信方法 |
CN103746977A (zh) * | 2013-12-27 | 2014-04-23 | 东软熙康健康科技有限公司 | 一种Linux服务器的连接方法和装置 |
CN110147288A (zh) * | 2019-05-13 | 2019-08-20 | 浙江商汤科技开发有限公司 | 信息交互方法及装置、电子设备和存储介质 |
CN110768866A (zh) * | 2019-10-23 | 2020-02-07 | 通号城市轨道交通技术有限公司 | 一种分布式底层框架搭建方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8982727B2 (en) | System and apparatus of generalized network controller for a software defined network (SDN) | |
US10270658B2 (en) | Zero touch configuration and synchronization of a service appliance in a network environment | |
EP2621136B1 (en) | Link aggregation in software-defined networks | |
US9755895B2 (en) | System and method for configuration of link aggregation groups | |
EP2553886B1 (en) | Aggregating data traffic from access domains | |
CN107409066B (zh) | 用于自动检测和配置服务器上行链路网络接口的系统和方法 | |
EP3167580B1 (en) | Method, system and logic for configuring a local link based on a remote link partner | |
CN105453487A (zh) | 用于数据中心环境中的双归属部署的扩展虚拟站接口发现协议(vdp)和vdp类协议 | |
CN104754025A (zh) | 可编程分布式联网 | |
WO2017128953A1 (zh) | 服务器虚拟化网络共享的装置和方法 | |
CN110061912B (zh) | 仲裁虚拟节点的冗余控制平面之间的主控权 | |
US10015098B2 (en) | Systems and methods to create highly scalable network services | |
CN104717081A (zh) | 一种网关功能的实现方法及装置 | |
Christodoulopoulos et al. | Performance evaluation of a hybrid optical/electrical interconnect | |
CN103428270A (zh) | 一种适用于分布式环境的网络通信方法 | |
US11425028B2 (en) | Priority based automated network selection for micro-services in service mesh | |
EP3399424B1 (en) | Using unified api to program both servers and fabric for forwarding for fine-grained network optimizations | |
US9300529B2 (en) | Communication system and network relay device | |
EP2852094B1 (en) | A system for remotely controlling and/or monitoring power distribution units or sensor units in a data centre | |
US9686210B2 (en) | Controller based fibre channel over ethernet (FCoE) fabric | |
WO2015040625A1 (en) | Troubleshooting openflow networks | |
EP2842271B1 (en) | Network management | |
CN112448844B (zh) | 一种基于预先配置的时间触发网络重构方法 | |
CN105391711A (zh) | 业务平台及基于tipc协议的通信方法 | |
CN115174654B (zh) | 一种基于FPGA和InfiniBand网络的异地通信方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131204 |
|
RJ01 | Rejection of invention patent application after publication |