CN111309474A - 通信方法、通信装置及分布式服务注册中心 - Google Patents

通信方法、通信装置及分布式服务注册中心 Download PDF

Info

Publication number
CN111309474A
CN111309474A CN202010058829.2A CN202010058829A CN111309474A CN 111309474 A CN111309474 A CN 111309474A CN 202010058829 A CN202010058829 A CN 202010058829A CN 111309474 A CN111309474 A CN 111309474A
Authority
CN
China
Prior art keywords
service
service object
target
interface method
communication module
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
Application number
CN202010058829.2A
Other languages
English (en)
Other versions
CN111309474B (zh
Inventor
杨志鹏
孙敏杰
陈宝珍
汪晓旸
李慧明
刘海平
李鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Forever Technology Co Ltd
Original Assignee
Beijing Forever Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Forever Technology Co Ltd filed Critical Beijing Forever Technology Co Ltd
Priority to CN202010058829.2A priority Critical patent/CN111309474B/zh
Publication of CN111309474A publication Critical patent/CN111309474A/zh
Application granted granted Critical
Publication of CN111309474B publication Critical patent/CN111309474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供通信方法、装置及分布式服务注册中心,以降低组件间的耦合性,提高组件的可重用性。本发明实施例应用于第一服务对象调用第二服务对象,第一服务对象和第二服务对象归属于同一或不同的web容器,每一web容器包括多个对象容器,其中一个对象容器为组件通讯模块;非组件通讯模块的对象容器彼此之间相隔离。本发明实施例使用组件通讯模块完成第一服务对象和第二服务对象之间的调用,进而完成两服务对象所归属的web容器(组件)之间的信息交互。除组件通讯模块外,其他对象容器彼此之间相隔离,不存在耦合关系。这样,即使拆分成多个分布式应用,组件之间仍可通过组件通讯模块进行通讯,从而提高了组件的可重用性。

Description

通信方法、通信装置及分布式服务注册中心
技术领域
本发明涉及数据处理领域,特别涉及通信方法、装置及分布式服务注册中心。
背景技术
基于Java的Web应用(Web应用指企业信息系统,比如各种MIS、OA、EPC、ERP等)一般以组件(对象容器)形式进行开发与部署应用,组件中包括多个对象。组件的服务对象之间会有各种形式的信息交换。一般在组件的设计阶段就会确定组件通讯的方式,这样组件在部署以后就按设计的通讯方式进行信息交换。
在集中部署环境中,组件间可按设计的通讯方式直接进行调用。然而,随着业务的增长性能、压力增大可能导致单体应用无法满足需求,需要拆分成多个分布式应用,也即,由集中部署转变为分布式部署。
而在分布式部署环境中,部署于不同主机间的组件之间无法进行直接调用,无法使用与集中部署环境中相同的通讯方式进行交互。但是一个组件在开发完成后就确定了通讯方式,因组件之间存在的耦合关系,无法轻易变换通讯方式,这就导致组件的可重用性降低。
发明内容
有鉴于此,本发明实施例提供通信方法、装置及分布式服务注册中心,以降低组件间的耦合性,提高组件的可重用性。
为实现上述目的,本发明实施例提供如下技术方案:
一种通信方法,应用于第一服务对象调用第二服务对象;所述第一服务对象和第二服务对象归属于同一或不同的web容器,每一web容器包括多个对象容器,其中一个对象容器为组件通讯模块;非组件通讯模块的对象容器彼此之间相隔离;每一对象容器包括多个对象,每一对象为服务对象或非服务对象;与所述第一服务对象归属于同一web容器的组件通讯模块为第一组件通讯模块;
所述方法包括:
第一组件通讯模块接收所述第一服务对象的调用请求;所述调用请求至少包括:所述第二服务对象的业务标识、接口方法名和参数;
第一组件通讯模块获取所述第二服务对象的调用结果;
第一组件通讯模块向所述第一服务对象返回所述调用结果;
其中,所述调用结果是根据所述调用请求中的参数执行目标接口方法得到的执行结果;所述目标接口方法是目标类中所述接口方法名对应的接口方法;所述目标类为所述业务标识所对应的类;所述参数包括执行所述目标接口方法所需的输入数据;
当所述第一服务对象和第二服务对象归属于同一web容器时,由所述第一组件通讯模块执行所述目标接口方法得到执行结果;
当所述第一服务对象和第二服务对象归属于不同的web容器时,由第二组件通讯模块执行所述目标接口方法得到执行结果并返回给所述第一组件通讯模块;所述第二组件通讯模块为与所述第二服务对象归属于同一web容器的组件通讯模块。
可选的,所述通信方法应用于分布式部署环境中,所述分布式部署环境包括分布式服务注册中心和多个web容器;每一web容器的组件通讯模块均可访问分布式服务注册中心;每一组件通讯模块维护有应用内部服务注册中心;所述方法还包括:在启动时,组件通讯模块扫描同一web容器中的所有对象,将其中的服务对象分别注册至应用内部服务注册中心和分布式服务注册中心;其中,应用内部服务注册中心用于存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;所述分布式服务注册中心用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识。
可选的,所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;在获取所述第二服务对象的调用结果之前,所述方法还包括:所述第一组件通讯模块在本地的应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法;其中,若查找到,表明所述第一服务对象与所述第二服务对象归属于同一web容器;若未查找到,所述第一组件通讯模块向所述分布式服务注册中心发送所述调用请求,由所述分布式服务注册中心查找与所述目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的第二组件通讯模块,由所述第二组件通讯模块根据所述目标业务标识和接口方法名查找出相应的接口方法;其中,若未查找到,表明所述第一服务对象与所述第二服务对象归属于不同的web容器;所述第二组件通讯模块通过所述分布式服务注册中心返回执行结果至所述第一组件通讯模块。
可选的,所述通信方法应用于集成部署环境中;所述第一组件通讯模块维护有应用内部服务注册中心;所述应用内部服务注册中心用于存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;所述方法还包括:在启动时,所述第一组件通讯模块扫描同一web容器中的所有对象,将其中的服务对象注册至应用内部服务注册中心;所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;在获取所述第二服务对象的调用结果之前,所述方法还包括:所述第一组件通讯模块在所述应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找所述目标接口方法名对应的接口方法。
一种通信装置,应用于第一服务对象调用第二服务对象;所述第一服务对象和第二服务对象归属于同一或不同的web容器,每一web容器包括多个对象容器;每一对象容器包括多个对象,每一对象为服务对象或非服务对象;
所述通信装置包括:
接收单元,用于:接收第一服务对象的调用请求;所述调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;
执行单元,用于:
获取所述第二服务对象的调用结果;
向所述第一服务对象返回所述调用结果;
其中,所述调用结果是根据所述调用请求中的参数执行目标接口方法得到的执行结果;所述目标接口方法是目标类中所述接口方法名对应的接口方法;所述目标类为所述业务标识所对应的类;所述参数包括执行所述目标接口方法所需的输入数据;
当所述第一服务对象和第二服务对象归属于同一web容器时,由所述执行单元执行所述目标接口方法得到执行结果;
当所述第一服务对象和第二服务对象归属于不同的web容器时,由目标通信装置执行所述目标接口方法得到执行结果并返回给所述第一组件通讯模块;所述目标通信装置为与所述第二服务对象归属于同一web容器的通信装置。
可选的,所述通信装置应用于分布式部署环境中,所述分布式部署环境包括分布式服务注册中心和多个web容器;每一web容器的通信装置均可访问分布式服务注册中心;所述通信装置还包括注册单元和应用内部服务注册中心;所述注册单元,用于:在启动时,扫描同一web容器中的所有对象,将其中的服务对象分别注册至所述应用内部服务注册中心和分布式服务注册中心;所述应用内部服务注册中心,用于:存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;其中,所述分布式服务注册中心至少用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识。
可选的,所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;在获取所述第二服务对象的调用结果之前,所述执行单元还用于:在本地的应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法;其中,若查找到,表明所述第一服务对象与所述第二服务对象归属于同一web容器;若未查找到,向所述分布式服务注册中心发送所述调用请求,由所述分布式服务注册中心查找与所述目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的目标通信装置,由所述目标通信装置根据所述调用请求中的目标业务标识和接口方法名查找出相应的接口方法;其中,若未查找到,表明所述第一服务对象与所述第二服务对象归属于不同的web容器;所述目标通信装置通过所述分布式服务注册中心返回执行结果至所述执行单元。
可选的,所述通信装置应用于集成部署环境中;所述第一服务对象和第二服务对象归属于同一web容器;所述通信装置还包括注册单元和应用内部服务注册中心;所述注册单元,用于:在启动时,扫描同一web容器中的所有对象,将其中的服务对象注册至所述应用内部服务注册中心;所述应用内部服务注册中心,用于:存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;所述第二服务对象的业务标识为目标业务标识;在获取所述第二服务对象的调用结果之前,所述执行单元还用于:在所述应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法。
一种如上述的分布式服务注册中心,包括:
存储单元,用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识;
消息队列单元,用于:
接收所述第一服务对象的调用请求;所述调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;所述调用请求是在所述第一服务对象和所述第二服务对象归属于不同的web容器时,由所述执行单元发送的;所述第二服务对象的业务标识为目标业务标识;
在所述存储单元中查找与所述目标业务标识相匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的目标通信装置;
接收所述目标通信装置返回的执行结果,向所述执行单元返回包含所述执行结果。
可见,在本发明实施例中,使用组件通讯模块完成第一服务对象和第二服务对象之间的调用,进而完成两服务对象所归属的web容器(组件)之间的信息交互。除组件通讯模块外,其他对象容器彼此之间相隔离,不存在耦合关系。这样,即使拆分成多个分布式应用,组件之间仍可通过组件通讯模块进行通讯,从而提高了组件的可重用性。
附图说明
图1a为本发明实施例提供的集中式部署环境示意图;
图1b为本发明实施例提供的分布式部署环境示意图;
图2a为本发明实施例提供的组件通讯模块的一种示例性结构;
图2b为本发明实施例提供的分布式服务注册中心的一种示例性结构;
图3为本发明实施例提供的通信方法的示例性流程;
图4a为本发明实施例提供的第一服务对象和第二服务对象归属于同一web容器的情况下的调用示意图;
图4b为本发明实施例提供的第一服务对象和第二服务对象归属于不同web容器的情况下的调用示意图;
图5a为本发明实施例提供的分布式部署环境下的通信方法的示例性流程;
图5b为本发明实施例提供的分布式部署环境下的注册示意图;
图6为本发明实施例提供的集中式部署环境下的通信方法的示例性流程。
具体实施方式
本发明实施例提供通信方法、装置及分布式服务注册中心,以降低组件间的耦合性,提高组件的可重用性。
上述通信方法可应用于分布式部署环境或集中式部署环境中,实现服务对象之间的调用。
为称呼方便,可将分布式部署环境或集中式部署环境中的任意两服务对象称为第一服务对象和第二服务对象,其中,第一服务对象为调用方,第二服务对象为非调用方。
在分布式部署环境中,第一服务对象和第二服务对象可归属于同一或不同的web容器,而在集中式部署环境中,第一服务对象和第二服务对象归属于同一web容器。
所谓集中式部署是指部署在一个服务器上、启动一个进程的单体应用(web容器);分布式部署是指在不同服务器上部署多个web容器。
这里先简单介绍web容器,容器可以统一管理对象的生命周期,避免繁复的对象构造与销毁,从而简化程序、使得程序便于维护。一个web应用即为一个web容器。
web容器进一步可包括多个Java容器(对象容器/组件),对象容器又可包括多个对象,每一一对象可为服务对象(声明为服务的对象)或非服务对象。
为降低组件间的耦合性,本发明为web容器新设了组件通讯模块,组件通讯模块也为一对象容器。
对于集中式部署环境而言,请参见图1a,服务对象和组件通讯模块均归属于同一web容器,服务对象可与组件通讯模块互相通讯,而同一web容器中,非组件通讯模块的组件彼此之间是相隔离的。
而对于分布式部署环境而言,请参见图1b,同一web容器中的服务对象与组件通讯模块之间可相互通讯,组件通讯模块之间可通过分布式服务注册中心相通讯。分布式服务注册中心可被所有组件通讯模块访问,部署在web应用所在的内网中。
图2a示出了组件通讯模块的一种示例性结构,至少包括:接收单元21和执行单元22。
在本发明其他实施例中,组件通讯模块还可包括注册单元23和应用内部服务注册中心24。
当然,应用内部服务注册中心24还可独立于组件通讯模块。
图2b示出了分布式服务注册中心的一种示例性结构,至少包括:存储单元25和消息队列单元26。
本文后续将结合方法介绍各单元的作用。
可将与第一服务对象同属一web容器的组件通讯模块称为第一组件通讯模块,请参见图3,以第一组件通讯模块为视角的通信方法可包括如下步骤:
S1:第一组件通讯模块接收第一服务对象的调用请求。
具体的,可由第一组件通讯模块中的接收单元接收调用请求。
其中,调用请求至少可包括:第二服务对象的业务标识、接口方法名和参数。
此外,调用请求还可包括第一服务对象的业务标识。
若为异步调用,则调用请求中还可包括第一服务对象的回调方法名。
为称呼方便,可将第二服务对象(的业务标识)对应的类称为目标类。
在目标类中,有调用第二服务对象所需要使用的接口方法(可称为目标接口方法),在调用请求中即携带了该接口方法的接口方法名。
调用请求中的参数包括执行目标接口方法所需要的输入数据,例如查询的条件等。
目标接口方法如同一个没有原材料(类比于参数)的加工设备,向目标接口方法中传入参数,才可得到成品(类比于执行结果)。
S2:第一组件通讯模块获取第二服务对象的调用结果。
在一示例中,可由第一组件通讯模块中的执行单元获取调用请求。
具体的,调用结果是根据调用请求中的参数执行目标接口方法得到的执行结果。
其中,无论是集中式还是分布式部署,请参见图4a,若第一服务对象和第二服务对象归属于同一web容器,是由第一组件通讯模块执行目标接口方法,得到执行结果。则在此场景下,前述的“获取调用结果”可包括:执行目标接口方法,得到执行结果作为调用结果。
而若第一服务对象和第二服务对象归属于不同的web容器(此情况在分布式部署中会出现),请参见图4b,是由第二组件通讯模块执行目标接口方法得到执行结果并返回给第一组件通讯模块的。则在此场景下,前述的“获取调用结果”可包括:执行单元通过接收单元接收来自第二组件通讯模块的执行结果作为调用结果。
第二组件通讯模块为与第二服务对象归属于同一web容器的组件通讯模块。
需要说明的是,为简单起见,图4b省略了分布式服务注册中心。本文后续会详细介绍如何通过分布式服务注册中心完成调用。
S3:第一组件通讯模块向第一服务对象返回调用结果。
在一示例中,可由第一组件通讯模块中的执行单元返回调用结果。
返回调用结果即实现了第一服务对象对第二服务对象的调用。
对于同步调用的情况,第一组件通讯模块可直接向第一服务对象返回调用结果。
而对于异步调用的情况,第一组件通讯模块可使用回调接口方法名所对应的回调接口方法,返回调用结果。
可见,在本发明实施例中,使用组件通讯模块完成第一服务对象和第二服务对象之间的调用,进而完成两服务对象所归属的web容器(组件)之间的信息交互。除组件通讯模块外,其他对象容器彼此之间相隔离,不存在耦合关系。这样,即使拆分成多个分布式应用,组件之间仍可通过组件通讯模块进行通讯,从而提高了组件的可重用性。
下面将以分布式部署环境为例,介绍如何实现服务对象之间的调用。
前述提及了分布式服务注册中心和应用内部服务注册中心。
图5a示出了在分布式部署环境下,基于组件通讯模块和分布式服务注册中心在组件间实现通讯的示例性流程,包括:
S51:在web容器启动时,扫描同一web容器中的所有对象,将其中的服务对象分别注册至应用内部服务注册中心和分布式服务注册中心。
在服务对象之间进行调用之前,需要对服务对象进行注册。在分布式部署环境下,同一服务对象会被分别注册至本web容器的应用内部服务注册中心,以及分布式服务注册中心。
应用内部服务注册中心用于应用内部的服务注册,实现(web容器内)线程内组件间的服务对象调用;分布式服务注册中心用于分布式环境的接口服务注册,实现web容器间服务对象的调用。
具体的,应用内部服务注册中心用于存储本web容器中各服务对象的第一服务注册信息,第一服务注册信息至少包括:业务标识(可以id表示)。此外,还可包括接口方法名。
至于分布式服务注册中心(的存储单元)则至少用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,第二服务注册信息至少包括:主机地址、端口和业务标识,此外,还可包括接口方法名。主机地址和端口用于路由调用请求。
更具体的,在注册时,会把服务对象所有的公共方法的名称进行注册。
步骤S51可由前述的注册单元执行。请参见图5b,以第一组件通讯模块和第二组件通讯模块为例,两组件通讯模块(的注册单元)会监听组件容器加载,获取组件容器中提供服务的对象(为简单起见,在图5b中,每一web容器只画出一个服务对象,实际可为多个),对其进行注册。
更具体的,服务对象所对应的方法都包含指定的接口标识,注册单元可通过扫描,可将包含指定接口标识的对象作为服务对象进行注册。
S52:第一组件通讯模块接收第一服务对象的调用请求。
调用请求至少可包括:第二服务对象的业务标识(目标业务标识)、接口方法名(可称为目标接口方法名)和参数。
S52与前述的S1相同,在此不作赘述。
S53:第一组件通讯模块在本地的应用内部服务注册中心查找与目标业务标识匹配的第一服务注册信息,若查找到,进入S54,否则,进入S56。
步骤S53可由第一组件通讯模块的执行单元执行。
其中,若查找到,表明第一服务对象与所述第二服务对象归属于同一web容器,若未查找到,表明第一服务对象与第二服务对象归属于不同的web容器。
S54:第一组件通讯模块根据目标业务标识找到第二服务对象,在第二服务对象所对应的方法中查找出目标接口方法名对应的接口方法(目标接口方法)并执行。
第一组件通讯模块可通过Java反射机制完成接口的调用。
步骤S54可由第一组件通讯模块的执行单元执行。
S55:第一组件通讯模块向第一服务对象返回调用结果。
S55与前述的S3相同,在此不作赘述。
S56:第一组件通讯模块向分布式服务注册中心发送调用请求。
具体的,可由第一组件通讯模块的执行单元执行步骤S56。
分布式服务注册中心可使用消息队列单元接收调用请求。
消息队列单元具体可为一消息队列。
S57:分布式服务注册中心查找与目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将调用请求路由至第二组件通讯模块。
第二组件通讯模块与第二服务对象同属一个web容器,具有相同的主机地址和端口。
具体的,可由前述的消息队列单元26在存储单元25中查找第二服务注册信息,再根据查找出的主机地址和端口,将调用请求路由至第二组件通讯模块。
S58:第二组件通讯模块根据目标业务标识和接口方法名查找出相应的接口方法并执行。
第二组件通讯模块可先在内部服务注册中心中查找与所述目标业务标识匹配的第一服务注册信息,若查找到,根据第一服务注册信息中的业务标识(也即目标业务标识)找到第二服务对象,在第二服务对象所对应的中查找出相应的接口方法并执行。
第二组件通讯模块可通过Java反射机制完成接口的调用。
S59:第二组件通讯模块向分布式服务注册中心返回执行结果。
具体的,第二组件通讯模块可将执行结果放入消息队列相应的调用请求中。在调用请求中放入执行结果后,调用请求变为调用响应消息。
S510:分布式服务注册中心向第一组件通讯模块返回执行结果。
具体的,可由分布式服务注册中心的消息队列单元26(即消息队列)向第一组件通讯模块返回执行结果。
S511:第一组件通讯模块向第一服务对象返回调用结果。
S511与前述的S3相同,在此不作赘述。
需要说明的是,组件通讯模块与分布式服务注册中心之间可使用JSON进行通讯,需要通讯的两个服务对象之间的数据格式支持POJO、POJO集合、基本数据类型。
下面介绍集中式部署环境中如何实现服务对象之间的调用。在集中式部署环境中,不用设置分布式服务注册中心。
图6示出了在集中式部署环境中,基于组件通讯模块实现组件间通讯的示例性流程,包括:
S61:在启动时,第一组件通讯模块扫描同一web容器中的所有对象,将其中的服务对象分别注册至应用内部服务注册中心。
与分布式部署不同的是,在本实施例中,服务对象只注册在应用内部的注册中心,实现应用的单一部署。
应用内部服务注册中心的相关细节请前述介绍,在此不作赘述。
步骤S61可由前述的注册单元执行。组件通讯模块(的注册单元)会监听组件容器加载,获取组件容器中提供服务的对象,对其进行注册。
更具体的,服务对象所对应的方法都包含指定的接口标识,注册单元可通过扫描,可将包含指定接口标识的对象作为服务对象进行注册。
S62:第一组件通讯模块接收第一服务对象的调用请求。
调用请求至少可包括:第二服务对象的业务标识(目标业务标识)、接口方法名(目标接口方法名)和参数。
S62与前述的S1相同,在此不作赘述。
S63:第一组件通讯模块在本地的应用内部服务注册中心查找与目标业务标识匹配的第一服务注册信息。
步骤S63可由第一组件通讯模块的执行单元执行。
S64:若查找到,第一组件通讯模块根据目标业务标识找到第二服务对象,在第二服务对象所对应的方法中查找接口方法名对应的接口方法(目标接口方法)。
第一组件通讯模块可通过Java反射机制完成接口的调用。
步骤S64可由第一组件通讯模块的执行单元执行。
S65:第一组件通讯模块向第一服务对象返回调用结果。
S65与前述的S3相同,在此不作赘述。
综上,在本发明所提供的技术方案中,服务请求方不直接访问目标对象,而是通过组件通讯模块完成对目标对象的调用。
本发明所提供的技术方案,组件在设计时就基于组件通讯模块机制,避免了组件之间的强依赖关系,降低了组件间的耦合,使得组件可以在集中部署和分布式部署直接进行灵活切换,显著提高组件的复用,方便技术积累,可有效降低项目成本。
下面介绍通信装置(即前述的组件通讯模块)。
请参见图2a,通信装置可包括:
接收单元21,用于:接收第一服务对象的调用请求;
调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;
执行单元22,用于:
获取第二服务对象的调用结果;
向第一服务对象返回调用结果;
其中,调用结果是根据调用请求中的参数执行目标接口方法得到的执行结果;目标接口方法是目标类中接口方法名对应的接口方法;目标类为业务标识所对应的类;参数包括执行目标接口方法所需的输入数据;
当第一服务对象和第二服务对象归属于同一web容器时,由执行单元执行目标接口方法得到执行结果;
当第一服务对象和第二服务对象归属于不同的web容器时,由目标通信装置执行目标接口方法得到执行结果并返回给第一组件通讯模块;目标通信装置为与第二服务对象归属于同一web容器的通信装置。
具体细节请参见前述记载,在此不作赘述。
在本发明其他实施例中,仍请参见图2a,组件通讯模块还可包括注册单元23和应用内部服务注册中心24。
当然,应用内部服务注册中心24还可独立于组件通讯模块。
在分布式部署环境中,注册单元23可用于:
在启动时,扫描同一web容器中的所有对象,将其中的服务对象分别注册至应用内部服务注册中心和分布式服务注册中心;
应用内部服务注册中心24用于:存储本web容器中各服务对象的第一服务注册信息。
具体细节请参见前述记载,在此不作赘述。
第二服务对象的业务标识具体为目标业务标识;调用请求中的接口方法名为目标接口方法名。
在本发明其他实施例中,在分布式部署环境中,在获取第二服务对象的调用结果之前,上述所有实施例中的执行单元22还可用于:
在本地的应用内部服务注册中心查找与目标业务标识匹配的第一服务注册信息;
若查找到,根据目标业务标识找到第二服务对象,在第二服务对象所对应的方法中查找出接口方法名对应的接口方法;其中,若查找到,表明第一服务对象与第二服务对象归属于同一web容器;
若未查找到,向分布式服务注册中心发送调用请求,由分布式服务注册中心查找与目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将调用请求路由至相应的目标通信装置(即前述的第二组件通讯模块),由目标通信装置根据调用请求中的目标业务标识和接口方法名查找出相应的接口方法;其中,若未查找到,表明第一服务对象与第二服务对象归属于不同的web容器;目标通信装置通过分布式服务注册中心返回执行结果至执行单元。
此外,在接收单元21接收到其他通信装置发送的调用请求(包括第三服务对象的业务标识、接口方法名)后,执行单元22还可用于:
在应用内部服务注册中心查找与第三服务对象的业务标识匹配的第一服务注册信息;
若查找到,根据该业务标识找到第三服务对象,在第三服务对象所对应的方法中查找出接口方法名对应的接口方法并执行;
向分布式服务注册中心返回执行结果。
在集成部署环境中,注册单元23可用于:在启动时,扫描同一web容器中的所有对象,将其中的服务对象注册至应用内部服务注册中心。
相应的,在本发明其他实施例中,在集成部署环境中,在获取第二服务对象的调用结果之前,上述所有实施例中的执行单元22还可用于:
在应用内部服务注册中心查找与目标业务标识匹配的第一服务注册信息;
若查找到,根据目标业务标识找到第二服务对象,在第二服务对象所对应的方法中查找出目标接口方法名对应的接口方法。
分布式服务注册中心的一种示例性结构可参见图2b,包括:
存储单元25,用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息。
第二服务注册信息至少包括:主机地址、端口和业务标识。
消息队列单元26,用于:
接收第一服务对象的调用请求;
调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;调用请求是在第一服务对象和第二服务对象归属于不同的web容器时,由执行单元发送的;第二服务对象的业务标识为目标业务标识;
在存储单元中查找与目标业务标识相匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将调用请求路由至相应的目标通信装置;
接收目标通信装置返回的执行结果,向执行单元返回包含执行结果。
具体细节请参见前述记载,在此不作赘述。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及模型步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
结合本文中所公开的实施例描述的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、WD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种通信方法,其特征在于,
应用于第一服务对象调用第二服务对象;所述第一服务对象和第二服务对象归属于同一或不同的web容器,每一web容器包括多个对象容器,其中一个对象容器为组件通讯模块;非组件通讯模块的对象容器彼此之间相隔离;每一对象容器包括多个对象,每一对象为服务对象或非服务对象;与所述第一服务对象归属于同一web容器的组件通讯模块为第一组件通讯模块;
所述方法包括:
第一组件通讯模块接收所述第一服务对象的调用请求;所述调用请求至少包括:所述第二服务对象的业务标识、接口方法名和参数;
第一组件通讯模块获取所述第二服务对象的调用结果;
第一组件通讯模块向所述第一服务对象返回所述调用结果;
其中,所述调用结果是根据所述调用请求中的参数执行目标接口方法得到的执行结果;所述目标接口方法是目标类中所述接口方法名对应的接口方法;所述目标类为所述业务标识所对应的类;所述参数包括执行所述目标接口方法所需的输入数据;
当所述第一服务对象和第二服务对象归属于同一web容器时,由所述第一组件通讯模块执行所述目标接口方法得到执行结果;
当所述第一服务对象和第二服务对象归属于不同的web容器时,由第二组件通讯模块执行所述目标接口方法得到执行结果并返回给所述第一组件通讯模块;所述第二组件通讯模块为与所述第二服务对象归属于同一web容器的组件通讯模块。
2.如权利要求1所述的方法,其特征在于,所述通信方法应用于分布式部署环境中,所述分布式部署环境包括分布式服务注册中心和多个web容器;每一web容器的组件通讯模块均可访问分布式服务注册中心;每一组件通讯模块维护有应用内部服务注册中心;
所述方法还包括:
在启动时,组件通讯模块扫描同一web容器中的所有对象,将其中的服务对象分别注册至应用内部服务注册中心和分布式服务注册中心;其中,应用内部服务注册中心用于存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;所述分布式服务注册中心用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识。
3.如权利要求2所述的方法,其特征在于,
所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;
在获取所述第二服务对象的调用结果之前,所述方法还包括:
所述第一组件通讯模块在本地的应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;
若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法;其中,若查找到,表明所述第一服务对象与所述第二服务对象归属于同一web容器;
若未查找到,所述第一组件通讯模块向所述分布式服务注册中心发送所述调用请求,由所述分布式服务注册中心查找与所述目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的第二组件通讯模块,由所述第二组件通讯模块根据所述目标业务标识和接口方法名查找出相应的接口方法;其中,若未查找到,表明所述第一服务对象与所述第二服务对象归属于不同的web容器;所述第二组件通讯模块通过所述分布式服务注册中心返回执行结果至所述第一组件通讯模块。
4.如权利要求3所述的方法,其特征在于,
所述通信方法应用于集成部署环境中;所述第一组件通讯模块维护有应用内部服务注册中心;所述应用内部服务注册中心用于存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;
所述方法还包括:
在启动时,所述第一组件通讯模块扫描同一web容器中的所有对象,将其中的服务对象注册至应用内部服务注册中心;
所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;
在获取所述第二服务对象的调用结果之前,所述方法还包括:
所述第一组件通讯模块在所述应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;
若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找所述目标接口方法名对应的接口方法。
5.一种通信装置,其特征在于,应用于第一服务对象调用第二服务对象;所述第一服务对象和第二服务对象归属于同一或不同的web容器,每一web容器包括多个对象容器;每一对象容器包括多个对象,每一对象为服务对象或非服务对象;
所述通信装置包括:
接收单元,用于:接收第一服务对象的调用请求;所述调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;
执行单元,用于:
获取所述第二服务对象的调用结果;
向所述第一服务对象返回所述调用结果;
其中,所述调用结果是根据所述调用请求中的参数执行目标接口方法得到的执行结果;所述目标接口方法是目标类中所述接口方法名对应的接口方法;所述目标类为所述业务标识所对应的类;所述参数包括执行所述目标接口方法所需的输入数据;
当所述第一服务对象和第二服务对象归属于同一web容器时,由所述执行单元执行所述目标接口方法得到执行结果;
当所述第一服务对象和第二服务对象归属于不同的web容器时,由目标通信装置执行所述目标接口方法得到执行结果并返回给所述第一组件通讯模块;所述目标通信装置为与所述第二服务对象归属于同一web容器的通信装置。
6.如权利要求5所述的通信装置,其特征在于,
所述通信装置应用于分布式部署环境中,所述分布式部署环境包括分布式服务注册中心和多个web容器;每一web容器的通信装置均可访问分布式服务注册中心;
所述通信装置还包括注册单元和应用内部服务注册中心;
所述注册单元,用于:在启动时,扫描同一web容器中的所有对象,将其中的服务对象分别注册至所述应用内部服务注册中心和分布式服务注册中心;
所述应用内部服务注册中心,用于:存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;
其中,所述分布式服务注册中心至少用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识。
7.如权利要求6所述的通信装置,其特征在于,
所述第二服务对象的业务标识为目标业务标识;所述调用请求中的接口方法名为目标接口方法名;
在获取所述第二服务对象的调用结果之前,所述执行单元还用于:
在本地的应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;
若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法;其中,若查找到,表明所述第一服务对象与所述第二服务对象归属于同一web容器;
若未查找到,向所述分布式服务注册中心发送所述调用请求,由所述分布式服务注册中心查找与所述目标业务标识匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的目标通信装置,由所述目标通信装置根据所述调用请求中的目标业务标识和接口方法名查找出相应的接口方法;其中,若未查找到,表明所述第一服务对象与所述第二服务对象归属于不同的web容器;所述目标通信装置通过所述分布式服务注册中心返回执行结果至所述执行单元。
8.如权利要求5所述的通信装置,其特征在于,
所述通信装置应用于集成部署环境中;所述第一服务对象和第二服务对象归属于同一web容器;
所述通信装置还包括注册单元和应用内部服务注册中心;
所述注册单元,用于:在启动时,扫描同一web容器中的所有对象,将其中的服务对象注册至所述应用内部服务注册中心;
所述应用内部服务注册中心,用于:存储本web容器中各服务对象的第一服务注册信息,所述第一服务注册信息包括:业务标识;
所述第二服务对象的业务标识为目标业务标识;
在获取所述第二服务对象的调用结果之前,所述执行单元还用于:
在所述应用内部服务注册中心查找与所述目标业务标识匹配的第一服务注册信息;
若查找到,根据所述目标业务标识找到所述第二服务对象,在所述第二服务对象所对应的方法中查找出所述目标接口方法名对应的接口方法。
9.一种如权利要求6或7所述的分布式服务注册中心,其特征在于,包括:
存储单元,用于存储分布式部署环境中所有web容器中各服务对象的第二服务注册信息,所述第二服务注册信息至少包括:主机地址、端口和业务标识;
消息队列单元,用于:
接收所述第一服务对象的调用请求;所述调用请求至少包括:第二服务对象的业务标识、接口方法名和参数;所述调用请求是在所述第一服务对象和所述第二服务对象归属于不同的web容器时,由所述执行单元发送的;所述第二服务对象的业务标识为目标业务标识;
在所述存储单元中查找与所述目标业务标识相匹配的第二服务注册信息,根据查找出的第二服务注册信息中的主机地址和端口,将所述调用请求路由至相应的目标通信装置;
接收所述目标通信装置返回的执行结果,向所述执行单元返回包含所述执行结果。
CN202010058829.2A 2020-01-19 2020-01-19 通信方法、通信装置及分布式服务注册中心 Active CN111309474B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010058829.2A CN111309474B (zh) 2020-01-19 2020-01-19 通信方法、通信装置及分布式服务注册中心

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010058829.2A CN111309474B (zh) 2020-01-19 2020-01-19 通信方法、通信装置及分布式服务注册中心

Publications (2)

Publication Number Publication Date
CN111309474A true CN111309474A (zh) 2020-06-19
CN111309474B CN111309474B (zh) 2023-05-12

Family

ID=71156481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010058829.2A Active CN111309474B (zh) 2020-01-19 2020-01-19 通信方法、通信装置及分布式服务注册中心

Country Status (1)

Country Link
CN (1) CN111309474B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769700A (zh) * 2020-12-29 2021-05-07 浙江合众新能源汽车有限公司 一种基于应用方法编号的路由方法及路由系统
CN116566790A (zh) * 2023-04-26 2023-08-08 深圳市佳合丰汽车电子科技有限公司 车载分布式服务调用系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101277304A (zh) * 2008-03-21 2008-10-01 北京航空航天大学 基于规则的Web服务运行环境管理系统及管理方法
US20090193132A1 (en) * 2008-01-28 2009-07-30 Boguslaw Ludwik Plewnia Web services interface extension channel
CN102360308A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 组件的分布式部署系统和方法
CN103677975A (zh) * 2013-12-09 2014-03-26 北京恒华伟业科技股份有限公司 一种访问应用系统内部对象的系统和方法
CN108259435A (zh) * 2016-12-29 2018-07-06 中国移动通信集团浙江有限公司 接入Web组件的混合应用的实现方法及装置
CN108984316A (zh) * 2018-06-15 2018-12-11 广州视源电子科技股份有限公司 一种用于分布式数据处理的方法、装置、电子设备及计算机存储介质
CN110018962A (zh) * 2019-04-11 2019-07-16 重庆猪八戒知识产权服务有限公司 基于分布式服务框架和注册中心的服务调试方法及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193132A1 (en) * 2008-01-28 2009-07-30 Boguslaw Ludwik Plewnia Web services interface extension channel
CN101277304A (zh) * 2008-03-21 2008-10-01 北京航空航天大学 基于规则的Web服务运行环境管理系统及管理方法
CN102360308A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 组件的分布式部署系统和方法
CN103677975A (zh) * 2013-12-09 2014-03-26 北京恒华伟业科技股份有限公司 一种访问应用系统内部对象的系统和方法
CN108259435A (zh) * 2016-12-29 2018-07-06 中国移动通信集团浙江有限公司 接入Web组件的混合应用的实现方法及装置
CN108984316A (zh) * 2018-06-15 2018-12-11 广州视源电子科技股份有限公司 一种用于分布式数据处理的方法、装置、电子设备及计算机存储介质
CN110018962A (zh) * 2019-04-11 2019-07-16 重庆猪八戒知识产权服务有限公司 基于分布式服务框架和注册中心的服务调试方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DAWID KURZYNIEC 等: "TOWARDS SELF-ORGANIZING DISTRIBUTED COMPUTING FRAMEWORKS: THE H2O APPROACH", 《PARALLEL PROCESSING LETTERS》 *
刘谆: "创建基于Web服务的分布式组件", 《中国优秀博硕士学位论文全文数据库 (硕士)信息科技辑》 *
吴向荣: ""Java Web 编程技术"课程教学方法研究", 《电脑知识与技术》 *
梁庚等: "基于分布式OPC、组件连接件和Web Service的电站远程监控系统设计", 《电力自动化设备》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769700A (zh) * 2020-12-29 2021-05-07 浙江合众新能源汽车有限公司 一种基于应用方法编号的路由方法及路由系统
CN112769700B (zh) * 2020-12-29 2022-07-05 浙江合众新能源汽车有限公司 一种基于应用方法编号的路由方法及路由系统
CN116566790A (zh) * 2023-04-26 2023-08-08 深圳市佳合丰汽车电子科技有限公司 车载分布式服务调用系统及方法
CN116566790B (zh) * 2023-04-26 2024-05-03 坤联数字技术(深圳)有限公司 车载分布式服务调用系统及方法

Also Published As

Publication number Publication date
CN111309474B (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
US7831734B2 (en) Method and system for remote configuration of network devices
CN111464380B (zh) 多个业务项目的并行测试方法、装置及系统
EP0523061B1 (en) Transaction command routing
CN109597655A (zh) 配置应用程序的方法及装置
CN109522055B (zh) 基于分布式服务调用的连接预热方法及系统
CN111309474B (zh) 通信方法、通信装置及分布式服务注册中心
CN113746928A (zh) 跨云服务调用方法、装置和系统
CN110730197B (zh) 一种服务发现方法和系统
US20030115243A1 (en) Distributed process execution system and method
CN114710549A (zh) 一种容器平台中网卡的动态管理方法、系统及业务节点
CN112162797B (zh) 数据处理方法、系统、存储介质以及电子设备
CN113918215A (zh) 一种微服务配置系统、设备及介质
US10846156B2 (en) Methods, devices and computer program products for managing software function
CN111600833B (zh) 网络操作系统及报文转发方法
CN110943975B (zh) 服务注册的方法、装置、计算机设备和存储介质
CN115480934A (zh) 一种分布式数据处理的方法、装置、设备及储存介质
US20150282121A1 (en) Local resource sharing method of machine to machine component and apparatus thereof
CN115665228B (zh) 一种跨节点的服务发现方法及装置
CN115604333B (zh) 基于dubbo的分布式大数据分析服务调度方法及系统
CN111581203A (zh) 信息处理方法、装置及存储介质
CN115729526B (zh) 一种单体和微服务一体化软件开发方法
CN115174657B (zh) 微服务应用调用方法、装置、计算机设备及存储介质
CN113177080B (zh) 区块链共识引擎系统和区块链共识处理流程方法
CN114116131A (zh) 为虚拟机拉取镜像的方法、装置、计算机设备及存储介质
JP2003141070A (ja) 装 置

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