一种实现进程通信的方法、装置及系统的制作方法

文档序号:6572147阅读:155来源:国知局

专利名称::一种实现进程通信的方法、装置及系统的制作方法
技术领域
:本发明涉及网络通信领域,尤其涉及一种实现进程通信的方法、装置及系统。
背景技术
:在分布式的程序应用过程中,不同系统之间的进程或者同一个系统内部不同的进程间都需要进行信息的交互,图1示出了现有的两个进程的交互过程,包括进程A和进程B,在进程A和进程B之间需要进行信息的交互。一般情况下,进程A调用进程B的接口,直接从进程B中获取特定的信息,这种情况下通过进程A的主动调用过程,可以从进程B中获取的信息来判断信息交互是否成功,如果失败,则进程A重新调用进程B的接口获取该特定的信息。在另外一种情况中,当进程B的某些状态发生改变时,进程B需要通过事件的方式主动通知进程A其状态发生改变,进程B要保证其发送的消息被进程A正确的接收到,这里需要采用一种策略来保证进程A是正确接收了该消息。图2示出了现有的事件结构示意图,一个事件的结构主要包括事件头(EventHeader)和事件体(EventBody)两部分,事件头包括事件ID(EventID)、事件序列号(SerialNo)和事件类型(EventType)等部分,其中,EventID为事件的标识,可以唯一标识一种类型的事件,SerialNo可以唯一标识一条事件,EventType用于标识事件的分类,EventBody是事件内容的集合,包括了该条事件相关的属性。一个事件的通讯过程是多个进程间相互协商合作的过程,一般包括了事件的发送进程、事件的接收进程和事件的传递进程等三个部分。而现有的事件通信是通过事件服务中间件完成的,它给事件的发送者和事件的接收者提供了一种基于公共对象请求代理结构(CommonObjectR叫uestBrokerArchitecture,CORBA)技术的编程接口。事件的发送者和事件的接收者可以基于该接口编程进程,完成事件的发送和事件的接收等功能。但是该事件服务中间件是一个独立的组件,需要集成第三方的对象请求代理(ObjectRequestBroker,ORB)软件完成部署。事件服务中间件基于CORBA技术实现,在进行事件开发时,需要开发人员掌握CORBA技术,由于该技术本身比较复杂,因而对开发人员的技能要求较高。事件服务的中间件受限于中间件所釆用的技术,常常与具体的计算机语言、协议等进行绑定,并且在使用事件服务中间件时需要集成第三方的ORB平台,因此使用的系统相对比较复杂,使用过程也需要增加外购的第三方软件的成本。
发明内容鉴于上述现有技术所存在的问题,本发明实施例提供了一种实现进程通信的方法、装置及系统。通过设置事件通道完成事件的接收和转发,完成了进程之间的信息交互。为了解决上述技术问题,本发明实施例提出了一种实现进程通信的方法,该方法包括以下步骤事件通道接收并存储提供者进程产生的事件;确定需要所述事件的消费者进程,将所述事件传递给所述确定的需要所述事件的消费者进程。相应的,本发明还提供了一种通信装置,包括事件提供模块,用于将提供者进程产生的事件发送给事件通道;事件通道模块,用于接收并存储事件提供模块发送的事件,并确定需要所述事件的消费者进程,其中,所述事件将传递给所述确定的需要所述事件的消费者进程;事件消费模块,用于从事件通道模块获得发送的所述事件,并将所述事件发送给消费者进程。相应的,本发明还提供了一种网络系统,包括包括多个提供者进程单元,以及与提供者进程单元相对应的至少一个消费者进程单元,所述提供者进程单元与消费者进程单元之间设置有实现进程间信息交互的通信装置,该通信装置包括多个事件提供模块、至少一个事件通道模块及多个事件消费模块,其中所述事件提供模块,用于将提供者进程单元产生的事件发送给事件通道模块;所述事件通道模块,用于存储事件提供模块发送的事件,并确定需要所述事件的消费者进程,将所述事件发送给事件消费模块进行转发;所述事件消费模块,用于接收事件通道发送的事件,并将事件发送给消费者进程单元。实施本发明实施例,通过数据库的方式实现了分布式系统中各个进程之间的可靠性事件的通信方法,使得技术人员不必去掌握复杂的CORBA编程技术,降低对开发人员技能的要求,在实现所述分布式系统中的进程通信时,不需要集成额外的第三方软件,减少了系统的复杂度和软件成本。所述实现进程通信的方法,基于数据库实现,而与协议、编程环境、编程语言都没有关系,支持不同数据库的系统,适用于各种跨操作系统平台,生存能力强。图1是本发明实施例中现有的两个进程之间进行信息交互的示意图2是本发明实施例中的现有分布式系统进程中事件的结构示意图3是本发明实施例中的分布式网络中实现进程通信的系统图4是本发明实施例中事件提供者的结构示意图5是本发明实施例中事件通道的结构示意图6是本发明实施例中事件消费者的结构示意图7是本发明实施例中的分布式网络中实现进程通信方法的流程图。具体实施例方式本发明实施例提供了一种实现进程通信的方法、装置及系统。通过设置的事件通道完成事件的接收和转发,完成了进程之间的信息交互。下面结合附图详细说明本发明的优选实施例。首先请参阅图3,图3示出了本发明实施中的分布式网络中实现进程通信的系统图,包括了提供者进程、多个事件提供者,如事件提供者l、事件提供者2至事件提供者n、至少一个事件通道、多个事件消费者,如事件消费者l、事件消费者2至事件消费者n和提供者进程相对应的消费者进程。如果网络的系统足够大,参与的进程很多,如包括多个提供者进程,以及与提供者进程相对应的至少一个消费者进程时,可以在网络系统中的相应的通信装置中部署多个事件通道以及相对应的事件提供者和事件消费者。一个事件提供者一般对应于提供者进程的一个进程实体,事件提供者部署在消息事件的提供方,即提供者进程所在的网络中,由提供者进程产生新的事件发送给事件提供者,提供者进程发送的事件可由一个或多个事件提供者发送给事件通道,事件消费者部署在消息事件的接收方,实现事件的接收,事件消费者一般位于消费者进程所在的网络中,事件消费者可以为一个或者多个消费者进程实现事件的接收。在一个网络系统中,存在网元管理进程、拓朴管理进程等进程。这里的网元管理进程就相当于事件的提供者,拓朴管理进程即为事件的消费者,网元管理进程和拓朴管理进程之间的信息传递是通过事件消息实现的。如果用户从网元管理进程中将某一个网元删除,则网元管理进程需要通知拓朴管理进程在拓朴管理进程中将该网元相关的拓朴连接关系删除。在实现某一进程的通信过程中,可以通过某一事件提供者接收提供者进程产生的事件,通过事件通道的传递发送给事件消费者,消费者进程从事件消费者中获得事件。事件的发送方,即提供者进程,将需要发送的事件数据信息编码成一个事件的结构,将事件通过事件通道发送给事件的接收方,即消费者进程,消费者进程再按照这种组织的规则将事件数据信息获取到,通过这种方式实现了提供者进程与消费者进程之间的信息交互过程。图4示出了本发明实施例中的事件提供者的结构示意图,包括初始化单元41、4企测单元42、緩存单元43以及发送单元44,其中初始化单元41用于建立提供者进程和事件通道的通信连接,检测单元42用于定时4企测初始化单元41建立的通信连接状况,如检测到通信连接断开时,则通知初始化单元41重新建立通信连接;緩存单元43用于在检测单元42检测到通信连接断开时,存储提供者进程产生的事件;发送单元44用于在4企测单元42^r测到通信连接正常时,将提供者进程产生的事件或存储单元43存储的事件发送给事件通道。事件提供者(EventS邵plier)由提供者进程所在的网络提供,当事件的提供者进程内某些数据发生改变时,需要通知事件消费者所对应的消费者进程时,将消费者进程需要的事件写入到事件通道中,该事件通道为一个数据库(DB.Event)。事件提供者可以接收至少一个提供者进程发送的事件;提供者进程可以通过多个事件提供者向事件通道写入事件。在实现本发明实施例的过程中,事件提供者通过表格l中的消息体即可实现将提供者进程产生的事件写入事件通道,该消息体为事件提供者中的成员,其中类是对某种类型的对象定义变量和方法的原型;成员是某一类型下的对象定义变量,为类中定义变量的一员;属性为是指对象地特征和对象可以包含的信息类型,对于每个对象类别中的成员,该架构定义一个类别实例必须具有什么属性以及该类别实例可能具有哪些其他属性。<table>tableseeoriginaldocumentpage10</column></row><table>表1图5示出了本发明实施例中的事件通道的结构示意图,包括第一接收单元51、第一存储单元52、删除单元53、确定单元54、第二发送单元55、第二接收单元56、第二存储单元57和第一发送单元58,其中第一接收单元51用于接收事件提供者发送的事件;第一存储单元52用于存储第一接收单元51接收的事件;第二接收单元56用于接收事件消费者发送的消费者进程所需要事件的订阅信息;第二存储单元57用于存储第二接收单元56接收的订阅信息;确定单元54用于根据第二存储单元57存储的订阅信息确定所述存储在第一存储单元52中的事件所需要发送的消费者进程;第二发送单元55用于在确定单元54确定消费者进程后,向消费者进程发送事件达到的消息;第一发送单元58用于收到事件消费者中请求单元64请求所需要的事件后,将存储在第一存储单元52中的事件发送给事件消费者;删除单元53用于在第一发送单元58将事件发送给相应的消费者进程后,删除存储在第一存储单元51中的事件。事件通道可以根据订阅信息确定需要所述事件的事件消费者,并将所述事件发送给订阅有该事件的事件消费者。这里事件通道向订阅有该事件的消费者进程发送事件到达的信息,事件消费者监听到有所述事件到达的消息,并向事件通道发送请求消息获取相应的事件,事件通道根据所述请求消息,将所请求的事件发送给所述事件消费者,事件消费者将事件转发给消费者进程。这里也可在事件通道确定需要所述事件的消费者进程后,事件通道所述事件发送给事件消费者,事件消费者将所述事件发送给订阅有该事件的消费者进程。事件通道(DB.Event)完成的主要功能包括提供数据库存储过程的接口,为事件提供者发送的事件提供存储的数据库;为事件消费者提供数据库的访问接口,消费者进程可以通过所述访问接口获取到达的事件;提供触发器功能,当有新的事件写入数据库时,通知事件消费者有新的事件达到事件通道。事件通道一般对应有多个事件消费者和事件提供者,为它们提供信息的转发。在实现本发明实施例的过程中,事件通道通过表格2中的消息体即可实现将提供者进程产生的事件转发给消费者进程,该消息体为事件通道中的成员。序号类成员属性功能1DB.Eventtbl一EventBuffer数据表存储事件提供者发送的事件tbl_SubscribeInfo数据表存储消费者进程订阅信息tbl一EventTable数据表事件表,存储需要向各个消费者进程发送的事件标识tbl一EventCount数据表事件引用计数表usp一SendEvent存储过程事件提供者调用该存储过程将事件存储到事件通道中。usp一RecvEvent存储过程事件的消费者调用该存储过程,从事件通道中获取相关的事件tg—UpdateEventTable触发器根据tbl—EventBuffer表的操作更新lt据表tb1—EventTabletg一SendNotification触发n通知消费者进程有新的事件到达事件通道tg一UpdateEventC触发器根据数据表tbl一EventTable的ount才喿作更新tbl_EventCount数据数据表tg_UpdateEventBuffer触发器根据数据表tbl_EventCount操作更新lt据表tb1—EventBuffer表2图6示出了本发明实施例中的事件消费者的结构示意图,包括初始化单元61、检测单元62、监听单元63和请求单元64,其中初始化单元61用于建立消费者进程与事件通道的通信连接;检测单元61用于定时检测初始化单元61建立的通信连接状态,若通信连接状态断开,则通知初始化单元61重新建立通信连接;监听单元63用于在通信连接正常时,监听事件通道发送的事件达到的消息,并通知请求单元64获取事件;请求单元64用于从事件通道中请求获取消费者进程所需要的事件。事件消费者由接收事件的消费者进程所在的网络提供,当收到新事件达到的消息时,事件消费者从事件通道的数据库中获取新达到的数据,并传递给消费者进程。事件消费者可以为至少一个消费者进程提供服务,获取事件通道中消费者进程所需要的事件;消费者进程可以通过多个事件消费者从事件通道中获取所需要的事件。在实现本发明实施例的过程中,事件消费者通过表格3中的消息体即可实现从事件通道中获取消费者进程所需要的事件,该消息体为消费者进程中的成员。序号类成员属性功能1EventGonsInit函数初始化消费者进程和事件通道的连接umcrTimer函数定时器4企测,完成定时^r测和维护消费者进程和事件通道的连接RecvEvent函数从事件通道中获取事件提供者发送的事件Svc函数循环监听,当^r测到有新的事件到达事件通道时,通过RecvEvent方法/人事件通道中获取事件表3下面结合图3至图6,以及表1至表3来详细说明本实施例中实现进程通信的方法,以某一进程实体的提供者进程需要通过事件提供者1向事件通道写入事件,通过事件消费者1向接收该某一进程实体的消费者进程提供事件,完成所述某一进程实体之间的信息交互过程,具体流程图如图7所示,具体步骤如下步骤S701:提供者进程的进程启动,调用事件提供者的Init消息初始化提供者进程和事件通道的连接;步骤S702:事件提供者通过Timer消息定时检测提供者进程和事件通道的连接状态,当检测到连接中断时,调用事件提供者的Init消息进行重新连接;步骤S703:消费者进程的进程启动,调用事件消费者的Init消息初始化消费者进程和事件通道的连接;步骤S704:事件消费者向事件通道注册该消费者进程需要接收的事件,该信息由tbl—Subscribelnfo消息存储,存储消费者进程注册的订阅信息;步骤S705:事件消费者通过Timer消息定时检测消费者进程和事件通道的连接状态,当检测到连接中断时,调用事件消费者的Init消息进行重新连接;步骤S706:事件消费者启动Svc消息监听事件达到的消息;需要说明的是,步骤S701的初始化和步骤S703的初始化是几乎是同时进行的,不分执行的先后顺序;步骤S702和步骤S705中的定时检测从进程通信的开始到进程通信的结束,当检测到所对应的通信连接断开时,调用Init消息进行重新连接;步骤S706在步骤S704注册需要接收的事件后,在以下的步骤中都会参与事件的监听过程,直至所需要接收的事件都传递给了消费者进程,进程通信的结束。步骤S707:提供者进程产生新的事件,将事件传递给事件提供者,事件提供者通过PushEvent消息传递给事件通道;步骤S708:事件提供者通过调用usp—SendEvent消息将事件存储到事件通道中;在所述步骤S707和步骤S708中,如果提供者进程和事件通道的通信连接断开时,需要通过事件提供者中的m—EventList消息緩存中断期间提供者进程产生的事件,当连接恢复后再通过PushEvent消息将事件发送到事件通道中。步骤S709:事件通道的tbLEventBuffer消息中有新的数据插入,执行触发器tg一UpdateEventTable消息,根据事件订阅信息将该事件需要发送给哪些事件消费者的信息插入到数据表tbl—EventTable消息中,并记下需要所述事件的事件引用计数,即需要该事件的消费者进程个数,将所述事件引用计数存储在b1—EventCount消息中;步骤S710:事件通道的tbl—EventTable消息中有新的数据插入,执行触发器tg一SendNotification消息,向事件消费者注册的地址上发送新事件到达的消息,该注册的地址一般包括消费者进程所在的IP地址和端口信息;步骤S711:事件消费者收到新事件到达的消息,执行事件通道的存储过程usp—RecvEvent消息获取事件数据,获取事件成功后事件通道的执行触发器tg一UpdateEventTable消息更新tbl一EventTabel消息中的数据;步骤S712:事件消费者通过RecvEvent消息从事件通道中获取事件提供者发送的事件;步骤S713:事件消费者将获取到的事件传递到消费者进程;通过以上步骤S707至步骤S713实现了进程之间的通信过程,完成了一个进程间的信息交互。步骤S714:事件通道中tb1—EventTable消息的数据表中有数据变化,触发执行tgJJpdateEventCount消息更新数据表tbLEventCount消息,将已经发送的事件引用计数减少l个;步骤S715:当事件通道中的tbl—EventCount消息的数据表中事件的引用计数减少为0时,将该记录从tbLEventCount消息的数据表中删除,并执行触发器tg一UpdateEventBuffer消息将tbl_EventBuffer消息中的事件删除。当存储在tbl—EventBuffer消息中的事件为多个消费者进程或事件消费者所需求时,需要等待该事件被所有消费者进程或事件消费者所获取。通过上述方法的实现,实现了进程之间的信息交互,当有多个进程之间需要进行交互时,也可以通过所述的相应的事件消费者、事件通道和事件提供者完成信息的交互过程。综上所述,在一个进程通信的过程中,通过设置的事件消费者与事件通道建立的通信连接,与设置的事件提供者与事件通道建立的通信连接实现进程中的事件传递,实现了进程间的信息交互。通过数据库的方式实现了分布式系统中各个进程之间的可靠性事件的通信方法,使得技术人员不必去掌握复杂的CORBA编程技术,降低对开发人员技能的要求,在实现所述分布式系统中的进程通信时,不需要集成额外的第三方软件,减少了系统的复杂度和软件成本。所述实现进程通信的方法,基于数据库实现,而与协议、编程环境、编程语言都没有关系,支持不同数据库的系统,适用于各种跨操作系统平台,生存能力强。以上所揭露的仅为本发明实施例中的一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。权利要求1、一种实现进程通信的方法,其特征在于,该方法包括以下步骤事件通道接收并存储提供者进程产生的事件;确定需要所述事件的消费者进程,将所述事件传递给所述确定的需要所述事件的消费者进程。2、如权利要求1所述的实现进程通信的方法,其特征在于,进一步包括事件提供者建立提供者进程和事件通道的通信连接;定时检测提供者进程和事件通道的通信连接状态,如果检测到通信连接断开,则重新建立所述提供者进程和事件通道之间的通信连接。3、如权利要求1或2所述的实现进程通信的方法,其特征在于,进一步包括事件消费者建立消费者进程和事件通道的通信连接;定时检测消费者进程和事件通道的通信连接状态,如果检测到通信连接断开,则重新建立所述消费者进程和事件通道之间的通信连接。4、如权利要求1所述的基于数据库实现进程通信的方法,其特征在于,进一步包括事件消费者向事件通道发送订阅消费者进程所需要事件的订阅信息。5、如权利要求4所述的实现进程通信的方法,其特征在于,所述确定需要所述事件的消费者进程,将所述事件传递给所述确定的需要所述事件的消费者进程的步骤具体为事件通道根据所述订阅信息确定需要所述事件的消费者进程;事件通道将所述事件发送给事件消费者;事件消费者将所述事件发送给订阅有该事件的消费者进程。6、如权利要求4所述的实现进程通信的方法,其特征在于,所述确定需要所述事件的消费者进程,将所述事件传递给所述确定的需要所述事件的消费者进程的步骤具体为事件通道向订阅有该事件的消费者进程发送事件到达的消息;事件消费者监听到有事件达到的消息后,请求获取相应的事件;事件通道根据所述请求,将所请求的事件发送给所述事件消费者;事件消费者将所述事件发送给订阅有该有该事件的消费者进程。7、如权利要求5或6所述的实现进程通信的方法,其特征在于,进一步包括当所述事件发送给所有需要该事件的消费者进程后,事件通道删除存储的所述事件。8、如权利要求5或6所述的实现进程通信的方法,其特征在于,所述事件通道接收并存储提供者进程产生的事件步骤进一步包括事件提供者检测提供者进程与事件通道间的通信连接是否正常;当检测到提供者进程与事件通道间的通信连接断开时,緩存提供者进程产生的所述事件,并在提供者进程与事件通道间的通信连接恢复正常时,将所述緩存的事件发送给事件通道。9、一种通信装置,其特征在于,包括事件提供模块,用于将提供者进程产生的事件发送给事件通道;事件通道模块,用于接收并存储事件提供模块发送的事件,并确定需要所述事件的消费者进程,其中,所述事件将传递给所述确定的需要所述事件的消费者进程;事件消费模块,用于从事件通道模块获得发送的所述事件,并将所述事件发送给消费者进程。10、如权利要求9所述的通信装置,其特征在于,所述事件提供模块包括:发送单元,用于将提供者进程产生的事件发送给事件通道。11、如权利要求IO所述的通信装置,其特征在于,所述事件提供模块进一步包括初始化单元,用于建立消费者进程和事件通道才莫块的通信连接;-险测单元,用于定时4会测初始化单元建立的通信连接状态;緩存单元,用于在检测单元检测到通信连接状态断开时,緩存提供者进程产生的事件。12、如权利要求11所述的通信装置,其特征在于,所述事件通道模块包括第一接收单元,用于接收事件提供模块发送的事件;第一存储单元,用于存储第一接收单元接收的事件;确定单元,用于确定需要接收该事件的消费者进程;第一发送单元,用于将存储在第一存储单元中的事件发送给确定单元所确定的消费者进程。13、如权利要求12所述的通信装置,其特征在于,所述事件通道模块进一步包括第二接收单元,用于接收事件消费模块发送的消费者进程所需要事件的订阅信息;第二存储单元,用于存储第二接收单元接收的订阅信息;第二发送单元,用于根据第二存储单元存储的订阅信息,向订阅有该事件的消费者进程发送事件达到的消息;删除单元,用于在第一发送单元将事件发送给所有的消费者进程后,删除存储在第一存储单元中的事件。14、如权利要求13所述的通信装置,其特征在于,所述事件消费模块包括请求单元,用于从事件通道中请求获取消费者进程所需要的事件,其中,所述确定单元根据所述请求单元的请求消息,确定需要接收该事件的消费者进程。15、如权利要求14所述的通信装置,其特征在于,所述事件消费模块进一步包括初始化单元,用于建立事件消费模块和事件通道模块的通信连接;4企测单元,用于定时;险测初始化单元建立的通信连接状态;监听单元,用于在监听到事件到达的消息后,通知请求单元请求获取所述事件。16、一种网络系统,包括多个提供者进程单元,以及与提供者进程单元相对应的至少一个消费者进程单元,其特征在于,所述提供者进程单元与消费者进程单元之间设置有实现进程间信息交互的通信装置,该通信装置包括多个事件提供模块、至少一个事件通道模块及多个事件消费模块,其中所述事件提供模块,用于将提供者进程单元产生的事件发送给事件通道模块;所述事件通道模块,用于存储事件提供模块发送的事件,并确定需要所述事件的消费者进程,将所述事件发送给事件消费模块进行转发;所述事件消费模块,用于接收事件通道发送的事件,并将事件发送给消费者进程单元。全文摘要本发明公开了一种实现进程通信的方法,该方法包括以下步骤事件通道接收并存储提供者进程产生的事件;确定需要所述事件的消费者进程,将所述事件传递给所述确定的需要所述事件的消费者进程。本发明还公开了一种通信装置,包括事件提供模块,用于将提供者进程产生的事件发送给事件通道;事件通道模块,用于接收并存储事件提供模块发送的事件,并确定需要所述事件的消费者进程,其中,所述事件将传递给所述确定的需要所述事件的消费者进程;事件消费模块,用于从事件通道模块获得发送的所述事件,并将所述事件发送给消费者进程。本发明还公开了一种网络系统,通过本发明实施例提供的事件通道完成事件的接收和转发,完成了进程之间的信息交互。文档编号G06F9/54GK101458637SQ20071003242公开日2009年6月17日申请日期2007年12月13日优先权日2007年12月13日发明者赵纯利申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1