一种Linux下的自适应组件间通信方法技术

技术编号:9870717 阅读:172 留言:0更新日期:2014-04-03 23:35
本发明专利技术涉及分布式环境下网络通信技术领域,特别是一种Linux下的自适应组件间通信方法。本发明专利技术通过通信主机上的服务程序建立两两之间的单向长连接;在分布式组件启动后,形成一个组件的地址列表;通信时,消息被封装成JSON格式,根据地址列表查找到地址,根据位置关系通过Linux的本地socket直接发或建立的单向长连接发送到目标组件;组件停止时,从组件地址列表中删除此组件的信息。本发明专利技术解决了在组件通信频繁、通信量大的分布式环境下通信效率低、开销大、实时性低的问题,可应用于分布式应用中各个组件之间的通信上。

【技术实现步骤摘要】
一种Linux下的自适应组件间通信方法
本专利技术涉及分布式环境下网络通信
,特别是一种Linux下的自适应组件间通信方法。
技术介绍
在分布式环境下,特别是在云计算的环境下,由于网络上需要通信的组件非常多,通信数据量大,因此如何减少网络开销,增强通信的实时性就显得尤为重要。由于WebService协议具有使用方便的优势,http协议具有可以穿透防火墙优势,因此,分布式通信中经常采用WebServiceonhttp的模式进行组件间的通信,然而,在通信频繁、通信数据量大的情况下,使用这种方式会带来以下的问题:一是消息的冗余大,WebService采用的XML消息格式,通信时消息的真实载荷比较小,这就表示,传递同样信息量,WebService承载信息的所需要消息量比较大,在带宽一定的条件下,通信的实时性会打折扣;二是系统开销大,http的“请求-响应”模式每次都会新建和销毁连接,给操作系统带来较大的开销,在组件间通信比较频繁的情况下,这会严重影响操作系统的性能,进而影响整个分布式应用的性能,降低通信的实时性;三是使用方式不够灵活,由于http协议规定只能由客户端向服务器发起连接进行通信,不能反过来,因此如果需要双方都能发起通信,需要在通信的双方都拥有服务器和客户端的程序。
技术实现思路
本专利技术解决的技术问题在于提供一种Linux下的自适应组件间通信方法,解决了在组件通信频繁、通信量大的分布式环境下通信效率低、开销大、实时性低的问题。本专利技术解决上述技术问题的技术方案是:包括如下步骤:步骤1:在通信主机上开发一个服务程序,此主机上的分布式组件全部调用此服务进行通信;步骤2:需要通信的主机由服务程序两两之间建立单向长连接;步骤3:主机上的分布式组件启动以后,向服务程序发送一个启动的消息,服务程序通过所有的单向长连接向其他主机的服务程序发送这个启动的消息,并且接收其他服务程序发送过来的启动消息,从而形成一个组件的地址列表;步骤4:分布式组件需要向其他组件发送消息时,服务程序先把消息封装成JSON格式,并向服务程序提供目标组件的名称;步骤5:服务程序从维护的组件地址列表中根据目标组件的名称查找到组件的地址,如果组件是在同一台主机上,则通过Linux的本地socket直接发到目标组件;如果组件是在另外一台主机上,则通过此主机与另外一台主机建立的单向长连接发送到另外一台主机上,再由另外一台主机的服务程序将消息发送到目标组件上;步骤6:主机上的组件停止时,向服务程序发送一个停止的消息,服务程序通过所有的单向长连接向其他主机上的服务程序发送这个停止消息,并且从组件地址列表中删除此组件的信息,其他主机上的服务程序也从组件地址列表中删除此组件的信息。所述的分布式组件是一个独立运行的进程,通过与其他分布式组件交换消息来获取输入并将输出发送到其他分布式组件上;所述的服务程序是Linux的一个自启动的服务进程;所述的分布式组件和服务程序都在同一台主机上,分布式组件与服务程序之间使用Linux的管道方式进行通信。所述的组件的地址列表中的项目包括组件的名称和组件所在主机的地址。所述的自适应表示的是服务程序的自适应,会根据目标组件的地址自动选择是从本地socket还是从单向长连接发送消息。所述的JSON消息格式如下:采用本专利技术的方法进行Linux下的自适应组件间通信,组件通信次数少、通信量小,从而有效提高了通信效率、降低了开销、提升了实时性。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图;图2为本专利技术的一个具体的部署图。具体实施方式如图所示,本专利技术Linux下的自适应组件间通信方法包括如下步骤:步骤1:在通信主机上开发一个服务程序,此主机上的分布式组件全部调用此服务进行通信;步骤2:需要通信的主机由服务程序两两之间建立单向长连接;步骤3:主机上的分布式组件启动以后,向服务程序发送一个启动的消息,服务程序通过所有的单向长连接向其他主机的服务程序发送这个启动的消息,并且接收其他服务程序发送过来的启动消息,从而形成一个组件的地址列表;步骤4:分布式组件需要向其他组件发送消息时,服务程序先把消息封装成JSON格式,并向服务程序提供目标组件的名称;步骤5:服务程序从维护的组件地址列表中根据目标组件的名称查找到组件的地址,如果组件是在同一台主机上,则通过Linux的本地socket直接发到目标组件;如果组件是在另外一台主机上,则通过此主机与另外一台主机建立的单向长连接发送到另外一台主机上,再由另外一台主机的服务程序将消息发送到目标组件上;步骤6:主机上的组件停止时,向服务程序发送一个停止的消息,服务程序通过所有的单向长连接向其他主机上的服务程序发送这个停止消息,并且从组件地址列表中删除此组件的信息,其他主机上的服务程序也从组件地址列表中删除此组件的信息。其中,分布式组件是一个独立运行的进程,通过与其他分布式组件交换消息来获取输入并将输出发送到其他分布式组件上;服务程序是Linux的一个自启动的服务进程;分布式组件和服务程序都在同一台主机上,分布式组件与服务程序之间使用Linux的管道方式进行通信。组件的地址列表中的项目包括组件的名称和组件所在主机的地址。自适应表示的是服务程序的自适应,会根据目标组件的地址自动选择是从本地socket还是从单向长连接发送消息。前述的JSON消息格式如下:如图2所示,本专利技术的实现需要实现服务程序与分布式组件端的收发功能,这里以C++语言实现为例,说明一个具体的实施方式。首先,开发一个服务程序,运行在所有需要通信的主机上,主机负责信息的收发,这里用了四个线程来分别进行本地和远程消息的收发;classgtController{public://控制线程的启动/停止boolthread_control(THREAD_Tthread,boolenable=false);//接收来自本地组件的消息的线程voidlocal_recv_thread(void);//把消息转发给本地的组件voidlocal_listen_thread(void);//接收来自其他主机的消息的线程voidremote_accept_thread(void);//把消息发送到其他主机上的组件的线程voidremote_listen_thread(void);boolstart(void);然后,使用服务程序在需要通信的主机之间两两建立单向长连接,组件启动后,向服务程序发送一个启动消息,服务程序收到消息以后,更新组件地址列表,服务程序获得要发送的地址,并决定是通过网络发送还是本地发送本文档来自技高网...
一种Linux下的自适应组件间通信方法

【技术保护点】
一种Linux下的自适应组件间通信方法,其特征在于: 包括如下步骤: 步骤1:在通信主机上开发一个服务程序,此主机上的分布式组件全部调用此服务进行通信; 步骤2:需要通信的主机由服务程序两两之间建立单向长连接; 步骤3:主机上的分布式组件启动以后,向服务程序发送一个启动的消息,服务程序通过所有的单向长连接向其他主机的服务程序发送这个启动的消息,并且接收其他服务程序发送过来的启动消息,从而形成一个组件的地址列表; 步骤4:分布式组件需要向其他组件发送消息时,服务程序先把消息封装成JSON格式,并向服务程序提供目标组件的名称; 步骤5:服务程序从维护的组件地址列表中根据目标组件的名称查找到组件的地址,如果组件是在同一台主机上,则通过Linux的本地socket直接发到目标组件;如果组件是在另外一台主机上,则通过此主机与另外一台主机建立的单向长连接发送到另外一台主机上,再由另外一台主机的服务程序将消息发送到目标组件上; 步骤6:主机上的组件停止时,向服务程序发送一个停止的消息,服务程序通过所有的单向长连接向其他主机上的服务程序发送这个停止消息,并且从组件地址列表中删除此组件的信息,其他主机上的服务程序也从组件地址列表中删除此组件的信息。...

【技术特征摘要】
1.一种Linux下的自适应组件间通信方法,其特征在于:包括如下步骤:步骤1:在通信主机上开发一个服务程序,此主机上的分布式组件全部调用此服务进行通信;步骤2:需要通信的主机由服务程序两两之间建立单向长连接;步骤3:主机上的分布式组件启动以后,向服务程序发送一个启动的消息,服务程序通过所有的单向长连接向其他主机的服务程序发送这个启动的消息,并且接收其他服务程序发送过来的启动消息,从而形成一个组件的地址列表;步骤4:分布式组件需要向其他组件发送消息时,服务程序先把消息封装成JSON格式,并向服务程序提供目标组件的名称;步骤5:服务程序从维护的组件地址列表中根据目标组件的名称查找到组件的地址,如果组件是在同一台主机上,则通过Linux的本地socket直接发到目标组件;如果组件是在另外一台主机上,则通过此主机与另外一台主机建立的单向长连接发送到另外一台主机上,再由另外一台主机的服务程序将消息发送到目标组件上;步骤6:主机上的组件停止时,向服务程序发送一个停止的消息,服务程序通过所有的单向长连接向其他主机上的服务程序发送这个停止消息,并且从组件地址列表中删除此组件的信...

【专利技术属性】
技术研发人员:莫展鹏杨松季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1