CN111158928B - 分布式***及通信方法 - Google Patents
分布式***及通信方法 Download PDFInfo
- Publication number
- CN111158928B CN111158928B CN201911311187.6A CN201911311187A CN111158928B CN 111158928 B CN111158928 B CN 111158928B CN 201911311187 A CN201911311187 A CN 201911311187A CN 111158928 B CN111158928 B CN 111158928B
- Authority
- CN
- China
- Prior art keywords
- event
- server
- address information
- micro
- message
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004891 communication Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 94
- 230000008859 change Effects 0.000 description 17
- 230000000694 effects Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012216 screening Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及一种分布式***及通信方法,其中,所述***包括消息中间件以及多个微服务器;其中,第一微服务器用于,根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息,并将所述事件消息发送至所述消息中间件;第二微服务器用于,获取所述消息中间件中的事件消息,并判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当该目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成本地事件。
Description
技术领域
本公开涉及信息技术领域,具体地,涉及一种分布式***及通信方法。
背景技术
在分布式***中,各个微服务器保持数据同步,当一个微服务器更新了数据,更新数据信息会上传至消息中间件,其他微服务器监听到该更新数据信息后,会根据该信息更新自身的微服务器中的数据。
然而,在一些情况下,一些数据只有部分微服务器需要更新,其他微服务器不需要更新,如果微服务器之间的数据保持同步,则需要手动将不需要同步的数据进行删除,增加了人力负担且浪费了计算资源。
发明内容
本公开的目的是提供一种分布式***及通信方法,以解决上述的技术问题。
为了实现上述目的,本公开的第一方面,提供一种分布式***,所述***包括消息中间件以及多个微服务器;其中,第一微服务器用于,根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息,并将所述事件消息发送至所述消息中间件;第二微服务器用于,获取所述消息中间件中的事件消息,并判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当所述目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成本地事件。
可选地,所述第一微服务器还用于:在将所述事件消息发送至消息中间件之前,确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息不一致;所述第一微服务器还用于,在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件。
可选地,所述第一微服务器生成的所述事件消息还包括源地址信息和事件主题信息,所述源地址信息为所述第一微服务器的地址信息。
可选地,所述地址信息包括所述目的服务器的IP地址信息和端口信息。
可选地,所述第二微服务器还用于,在判断该事件消息包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,确定该事件消息中包括的事件主题信息与所述第二微服务器的主题相匹配;所述第二服务器还用于:在确定该事件消息中包括的事件主题信息与所述第二微服务器的主题不匹配时,停止对所述事件消息的处理。
可选地,所述事件消息还包括源地址信息,所述源地址信息为发布所述事件消息的微服务器的地址信息;所述第二微服务器,还用于判断所述源地址信息与所述第二微服务器的地址信息是否一致;当所述源地址信息与所述第二微服务器的地址信息一致时,停止对所述事件消息的处理。
本公开的第二方面,提供一种分布式***的通信方法,所述方法包括:所述分布式***的第一微服务器根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息,并将所述事件消息发送至消息中间件;所述分布式***的第二微服务器获取消息中间件中的事件消息,并判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当该目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成本地事件。
可选地,所述第一微服务器将所述事件消息发送至消息中间件包括:在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息不一致时,将所述事件消息发送至消息中间件;所述方法还包括:所述第一微服务器在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件。
可选地,所述第二微服务器在判断该事件消息包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,所述方法还包括:所述第二微服务器确定该事件消息中包括的事件主题信息与所述第二微服务器的主题相匹配;
所述方法还包括:所述第二微服务器在确定该事件消息中包括的事件主题信息与所述第二微服务器的主题不匹配时,停止对所述事件消息的处理。
可选地,所述第二微服务器在判断该事件消息包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,所述方法还包括:所述第二微服务器确定该事件消息中包括的源地址信息与所述第二微服务器的地址信息一致;
所述方法还包括:所述第二微服务器在确定该事件消息中包括的源地址信息与所述第二微服务器的地址信息不一致时,停止对所述事件消息的处理。
通过上述技术方案,在第一微服务器的进行数据同步时,并不是将需要同步的数据直接上传至消息中间件,而是将其封装入数据更新信息,并与目的服务器的地址信息共同组成事件消息上传至消息中间件,以使第二服务器可以在获得事件消息之后,判断目的服务器的地址信息与自身的地址信息是否一致,一致时根据数据更新信息生成本地事件。这样,将消息中间件中的消息及更新数据解耦合,微服务器不是根据其他微服务器上传至消息中间件中的更新数据进行自身的数据更新,而是根据消息中间件中地址信息与自身地址信息匹配的事件消息中的数据更新信息发布用于更新数据的本地事件,优化了事件处理的逻辑,可以达到在分布式***中将更新数据定向发布至指定微服务器的效果。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性公开实施例示出的一种分布式***的框图。
图2是根据一示例性公开实施例示出的一种分布式***的通信方法的流程图。
图3是根据一示例性公开实施例示出的一种应用于第一微服务器的分布式***的通信方法的流程图。
图4是根据一示例性公开实施例示出的第一微服务器发布事件的流程示意图。
图5是根据一示例性公开实施例示出的一种应用于第二微服务器的分布式***的通信方法的流程图。
图6是根据一示例性公开实施例示出的第二微服务器处理事件的流程示意图。
图7是根据一示例性公开实施例示出的一种微服务器的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
首先对本公开的实施场景进行说明。本公开的分布式***可以是诸如公司***、游戏***等需要进行数据同步的***,其中,不同的微服务器承担不同的功能,例如,在公司***中,财务模块可能集成于一个微服务器中,人事模块可能集成于另一个微服务器中,而业务处理模块可能集成于其他微服务器中,在发生了数据更新时(例如人事模块中有***),则其他微服务器可能需要对该更新的数据进行同步(例如财务模块需要针对***进行数据更新),也可能不需要对该更新的数据进行同步(例如业务处理模块不需要对***进行数据更新)。
图1是根据一示例性公开实施例示出的一种分布式***的框图。如图1所示,所述***包括消息中间件和多个微服务器(如微服务器1、微服务器2和微服务器3),其中,每个微服务器都可以作为第一微服务器,也可以作为第二微服务器,即每个微服务器都可以发布自身的事件消息,并从消息中间件获取事件消息,本公开实施例仅是以第一微服务器作为事件发布方,第二微服务器为事件监听方进行说明。
其中,第一微服务器用于,根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息,并将所述事件消息发送至消息中间件;
第二微服务器用于,获取消息中间件中的事件消息,并判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当该目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成本地事件。
事件处理信息可以是一种表征第一微服务器进行了何种数据更新的信息,当***中存在预先定义的事件时,也可以是事件类型与可变数据结合的形式。例如,当第一微服务器中新增了一个用户数据时,可以根据该新增事件的数据更新信息生成一个指示其他微服务器新增用户数据的事件处理信息;或者,***中可能预先定义新增用户数据的事件的代码为a1,则该事件处理信息可以是代码a1与具体需要进行操作的数据的结合。
地址信息可以包括IP(Internet Protocol,网络协议)信息和端口信息。几台微服务器可能位于同一主机,共享同一IP,同一台主机上的不同微服务器的端口不同,因此,根据IP信息和端口信息可以唯一确定一个微服务器。例如,地址信息为127.0.0.1:8080与127.0.0.1:8090所指代的两个微服务器的IP均为127.0.0.1,而端口分别为8080和8090。
一个事件消息里可以有多个目的服务器的地址信息,这样可以使多个指定的微服务器根据事件消息更新数据。值得说明的是,地址信息中的端口信息可以是具体的端口名称,如8080或8090,也可以用预定符号代替,当端口信息为预定符号时,则地址信息指向的微服务器为地址信息中的IP信息所包括的所有微服务器。
例如,事件消息里可以有第一地址信息127.0.0.1:8080和第二地址信息127.0.0.1:8090,则该事件消息的目的服务器为IP是127.0.0.1、端口是8080的微服务器,以及IP是127.0.0.1、端口是8090的微服务器;事件消息里的目的服务器的地址信息可以是127.0.0.1:*,其中,“*”为所述的预定符号,则该事件消息的目的服务器为IP为127.0.0.1的所有微服务器,包括127.0.0.1:8080和127.0.0.1:8090。
值得说明的是,当一个数据不需要指定目的服务器进行更新,而是需要所有的微服务器都进行更新时,该目的服务器的地址信息也可以为空,则所有接收到事件消息的微服务器都可以根据事件处理信息生成更新数据的本地事件。
对于第一微服务器生成的事件消息,该事件消息可以包括源地址信息和事件主题信息,所述源地址信息为所述第一微服务器的地址信息。
其中,事件主题信息可以与微服务器的主题相对应,例如,微服务器可以有多个主题(软件主题、财务主题、部门主题等),而一次数据更新可能涉及某一类或几类主题,例如,人事变更的数据更新可能涉及人事主题和财务主题,则因该人事变更的数据更新生成的事件消息中所包含的事件主题信息可以包括人事主题和财务主题。这样,当人事主题或财务主题的微服务器获取到该事件消息后可以根据该事件消息进行事件处理,而其他主题的微服务器可以忽略该事件消息。
虽然事件主题信息可以在一定程度上对微服务器进行分类,并达到初步的筛选效果,但是仅通过事件主题信息来指定需要更新数据的微服务器还是无法达到精确定位的效果,例如,一条涉及实习生人事变更的数据更新,其生成的事件消息的事件主题可能是人事主题、财务主题等,但是,涉及人事主题和财务主题的微服务器中,可能存在一部分微服务器只涉及正式员工的人事信息管理或财务信息管理,则这一部分的微服务器不需要进行实习生的人事变更的数据更新。
因此,可以在通过主题进行筛选后的基础上,再利用目的服务器的地址信息进行微服务器的精准定位,达到精确地指定需要进行数据更新的微服务器的效果。
消息中间件可以定时将微服务器发送给自身的事件消息发送给所有微服务器,微服务器也可以实时监听消息中间件中的事件消息,或者定时从消息中间件中获取事件消息。
在一种可能的实施方式中,第一微服务器在将事件消息发送至消息中间件之前,可以判断所述目的服务器的地址信息与所述第一微服务器的地址信息是否一致;当所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件,当所述目的服务器的地址信息与所述第一微服务器的地址信息不一致时,将所述事件消息发送至消息中间件。
值得说明的是,当事件消息中只存在一个目的服务器的地址信息,且该目的服务器的地址信息与第一微服务器的地址信息一致时,第一微服务器可以直接根据该事件消息中的事件处理信息生成本地事件,且不将该事件消息发送至消息中间件。
在一种可能的实施方式中,微服务器生成的本地事件可以是本地的独有事件,也可以是消息中间件中存储的公共事件,当事件处理信息中存在与公共事件相对应的特征代码时,可以直接从消息中间件中获取已经定义的公共事件,或者在获取已定义的公共事件后修改公共事件中的可定义数据,从而生成本地事件,当事件处理信息中没有已定义的公共事件的特征代码时,可以直接根据事件处理信息生成新的本地事件。
例如,第一微服务器中新增了***的数据,并发布了一个事件消息,该事件消息中的事件处理信息中包括了事件内容为“新增一个员工数据”的公共事件的特征代码a1,则其他微服务器在进行事件处理时,可以从消息中间件中获取代码为a1的公共事件,并将其中的可定义数据(例如员工姓名、性别、部门等内容)按照事件处理信息中的数据重新定义,从而生成该微服务器的本地事件。
第一服务器中新增了员工权限变动的数据,并发布了一个事件消息,该事件处理信息中没有包括特征代码,则其他微服务器在进行事件处理时,可以直接根据该条事件处理信息生成新的本地事件,例如,如果事件处理信息表征的事件内容为“为员工A开放B权限”,则可以根据该事件处理信息生成用于为员工A开放B权限的本地事件。
对于第二微服务器而言,该第二微服务器从消息中间件获取到的事件消息中可能存在多个目的服务器的地址信息,若其中的一个地址信息与第二服务器的地址信息一致,则可以确定该第二服务器即为目的服务器。
所述事件消息还可以包括源地址信息,所述源地址信息为所述发布所述事件消息的微服务器的地址信息,在此种情况下,第二微服务器还可以先判断所述源地址信息与所述第二微服务器的地址信息是否一致,在确定所述源地址信息与所述第二微服务器的地址信息不一致时,再判断目的服务器的地址信息与所述第二微服务器的地址信息是否一致;而当所述源地址信息与所述第二微服务器的地址信息一致时,停止对所述事件消息的处理。相当于说,微服务器在消息中间件获取到自身发布的事件消息时,不对该事件消息进行处理。
因为第一微服务器与第二微服务器可以是相同的微服务器,且第一微服务器在发布事件消息前,可以先判断事件消息的目的服务器是否为自身,如果是则生成本地事件,为了防止本地事件重复生成造成的数据重复更新,在本实施例中,第二微服务器也可以先判断发布事件消息的微服务器是否为自身,如果是则可以忽略该事件消息,不对其进行后续处理。
在第一微服务器的进行数据同步时,并不是将需要同步的数据直接上传至消息中间件,而是将其封装入数据更新信息,并与目的服务器的地址信息共同组成事件消息上传至消息中间件,以使第二服务器可以在获得事件消息之后,判断目的服务器的地址信息与自身的地址信息是否一致,一致时根据数据更新信息生成本地事件。这样,将消息中间件中的消息及更新数据解耦合,微服务器不是根据其他微服务器上传至消息中间件中的更新数据进行自身的数据更新,而是根据消息中间件中地址信息与自身地址信息匹配的事件消息中的数据更新信息发布用于更新数据的本地事件,优化了事件处理的逻辑,可以达到在分布式***中将更新数据定向发布至指定微服务器的效果。
图2是根据一示例性公开实施例示出的一种分布式***的通信方法的流程图。如图2所示,所述方法包括以下步骤:
S21、分布式***的第一微服务器根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息,并将所述事件消息发送至消息中间件。
S22、所述分布式***的第二微服务器获取消息中间件中的事件消息,并判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当该目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成本地事件。
关于上述实施例中的步骤,其中各个步骤的具体实施方式已经在有关分布式***的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,在第一微服务器的进行数据同步时,并不是将需要同步的数据直接上传至消息中间件,而是将其封装入数据更新信息,并与目的服务器的地址信息共同组成事件消息上传至消息中间件,以使第二服务器可以在获得事件消息之后,判断目的服务器的地址信息与自身的地址信息是否一致,一致时根据数据更新信息生成本地事件。这样,将消息中间件中的消息及更新数据解耦合,微服务器不是根据其他微服务器上传至消息中间件中的更新数据进行自身的数据更新,而是根据消息中间件中地址信息与自身地址信息匹配的事件消息中的数据更新信息发布用于更新数据的本地事件,优化了事件处理的逻辑,可以达到在分布式***中将更新数据定向发布至指定微服务器的效果。
图3是根据一示例性公开实施例示出的一种应用于第一微服务器的分布式***的通信方法的流程图。其中,第一微服务器可以是分布式***中的任意微服务器。
所述方法包括以下步骤:
S31、根据第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息。
事件处理信息可以是一种表征第一微服务器进行了何种数据更新的信息,当***中存在预先定义的事件时,也可以是事件类型与可变数据结合的形式。例如,当第一微服务器中新增了一个用户数据时,可以根据该新增事件的数据更新信息生成一个指示其他微服务器新增用户数据的事件处理信息;或者,***中可能预先定义新增用户数据的事件的代码为a1,则该事件处理信息可以是代码a1与具体需要进行操作的数据的结合。
地址信息可以包括IP(Internet Protocol,网络互连协议)信息和端口信息。几台微服务器可能位于同一主机,共享同一IP,同一台主机上的不同微服务器的端口不同,因此,根据IP信息和端口信息可以唯一确定一个微服务器。例如,地址信息为127.0.0.1:8080与127.0.0.1:8090所指代的两个微服务器的IP均为127.0.0.1,而端口分别为8080和8090。
一个事件消息里可以有多个目的服务器的地址信息,这样可以使多个指定的微服务器根据事件消息更新数据。值得说明的是,地址信息中的端口信息可以是具体的端口名称,如8080或8090,也可以用预定符号代替,当端口信息为预定符号时,则地址信息指向的微服务器为地址信息中的IP信息所包括的所有微服务器。
例如,事件消息里可以有第一地址信息127.0.0.1:8080和第二地址信息127.0.0.1:8090,则该事件消息的目的服务器为IP是127.0.0.1、端口是8080的微服务器,以及IP是127.0.0.1、端口是8090的微服务器;事件消息里的目的服务器的地址信息可以是127.0.0.1:*,其中,“*”为所述的预定符号,则该事件消息的目的服务器为IP为127.0.0.1的所有微服务器,包括127.0.0.1:8080和127.0.0.1:8090。
值得说明的是,当一个数据不需要指定目的服务器进行更新,而是需要所有的微服务器都进行更新时,该目的服务器的地址信息也可以为空,则所有接收到事件消息的微服务器都可以根据事件处理信息生成更新数据的本地事件。
所述事件消息还可以包括源地址信息和事件主题信息,所述源地址信息为所述第一微服务器的地址信息。
其中,事件主题信息可以与微服务器的主题相对应,例如,微服务器可以有多个主题(软件主题、财务主题、部门主题等),而一次数据更新可能涉及某一类或几类主题,例如,人事变更的数据更新可能涉及人事主题和财务主题,则因该人事变更的数据更新生成的事件消息中所包含的事件主题信息可以包括人事主题和财务主题。这样,当人事主题或财务主题的微服务器获取到该事件消息后可以根据该事件消息进行事件处理,而其他主题的微服务器可以忽略该事件消息。
虽然事件主题信息可以在一定程度上对微服务器进行分类,并达到初步的筛选效果,但是仅通过事件主题信息来指定需要更新数据的微服务器还是无法达到精确定位的效果,例如,一条涉及实习生人事变更的数据更新,其生成的事件消息的事件主题可能是人事主题、财务主题等,但是,涉及人事主题和财务主题的微服务器中,可能存在一部分微服务器只涉及正式员工的人事信息管理或财务信息管理,则这一部分的微服务器不需要进行实习生的人事变更的数据更新。
因此,可以在通过主题进行筛选后的基础上,再利用目的服务器的地址信息进行微服务器的精准定位,达到精确地指定需要进行数据更新的微服务器的效果。
S32、将所述事件消息发送至消息中间件。
消息中间件可以定时将微服务器发送给自身的事件消息发送给所有微服务器,微服务器也可以实时监听消息中间件中的事件消息,或者定时从消息中间件中获取事件消息。
在一种可能的实施方式中,在将事件消息发送至消息中间件之前,可以判断所述目的服务器的地址信息与所述第一微服务器的地址信息是否一致;当所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件,当所述目的服务器的地址信息与所述第一微服务器的地址信息不一致时,将所述事件消息发送至消息中间件。
值得说明的是,当事件消息中只存在一个目的服务器的地址信息,且该目的服务器的地址信息与第一微服务器的地址信息一致时,第一微服务器可以直接根据该事件消息中的事件处理信息生成本地事件,且不将该事件消息发送至消息中间件。
在一种可能的实施方式中,微服务器生成的本地事件可以是本地的独有事件,也可以是消息中间件中存储的公共事件,当事件处理信息中存在与公共事件相对应的特征代码时,可以直接从消息中间件中获取已经定义的公共事件,或者在获取已定义的公共事件后修改公共事件中的可定义数据,从而生成本地事件,当事件处理信息中没有已定义的公共事件的特征代码时,可以直接根据事件处理信息生成新的本地事件。
例如,第一微服务器中新增了***的数据,并发布了一个事件消息,该事件消息中的事件处理信息中包括了事件内容为“新增一个员工数据”的公共事件的特征代码a1,则其他微服务器在进行事件处理时,可以从消息中间件中获取代码为a1的公共事件,并将其中的可定义数据(例如员工姓名、性别、部门等内容)按照事件处理信息中的数据重新定义,从而生成该微服务器的本地事件。
第一服务器中新增了员工权限变动的数据,并发布了一个事件消息,该事件处理信息中没有包括特征代码,则其他微服务器在进行事件处理时,可以直接根据该条事件处理信息生成新的本地事件,例如,如果事件处理信息表征的事件内容为“为员工A开放B权限”,则可以根据该事件处理信息生成用于为员工A开放B权限的本地事件。
如图4所示的是一种第一微服务器发布事件的流程示意图,如图4所示,当第一微服务器需要发布一条事件时,可以先通过数据更新信息生成事件消息,再判断目的服务器的地址信息与第一微服务器的地址信息是否一致,一致时直接发布本地事件,不一致时将所述事件消息发送至消息中间件。
值得说明的是,上述流程为事件消息中只存在一个目的服务器的地址信息的情况,当事件消息中存在多个目的服务器的地址消息时,在第一微服务器发布本地事件之后,仍需要将事件消息发送至消息中间件。
根据上述的方案,在第一微服务器的进行数据同步时,并不是将需要同步的数据直接上传至消息中间件,而是将其封装入数据更新信息,并与目的服务器的地址信息共同组成事件消息上传至消息中间件,以使其他服务器可以在获得事件消息之后,判断目的服务器的地址信息与自身的地址信息是否一致,一致时根据数据更新信息生成本地事件。这样,将消息中间件中的消息及更新数据解耦合,微服务器不是根据其他微服务器上传至消息中间件中的更新数据进行自身的数据更新,而是根据消息中间件中地址信息与自身地址信息匹配的事件消息中的数据更新信息发布用于更新数据的本地事件,优化了事件处理的逻辑,可以达到在分布式***中将更新数据定向发布至指定微服务器的效果。
图5是根据一示例性公开实施例示出的一种应用于第二微服务器的分布式***的通信方法的流程图。其中,第二微服务器可以是分布式***中的任意微服务器,第二微服务器也可以是与第一微服务器相同的微服务器。
所述方法包括以下步骤:
S51、获取消息中间件中的事件消息,所述事件消息中包括事件处理信息和目的服务器的地址信息。
事件处理信息可以是一种表征第一微服务器进行了何种数据更新的信息,当***中存在预先定义的事件时,也可以是事件类型与可变数据结合的形式。例如,当第一微服务器中新增了一个用户数据时,可以根据该新增事件的数据更新信息生成一个指示其他微服务器新增用户数据的事件处理信息;或者,***中可能预先定义新增用户数据的事件的代码为a1,则该事件处理信息可以是代码a1与具体需要进行操作的数据的结合。
地址信息可以包括IP信息和端口信息。几台微服务器可能位于同一主机,共享同一IP,同一台主机上的不同微服务器的端口不同,因此,根据IP信息和端口信息可以唯一确定一个微服务器。例如,地址信息为127.0.0.1:8080与127.0.0.1:8090所指代的两个微服务器的IP均为127.0.0.1,而端口分别为8080和8090。
一个事件消息里可以有多个目的服务器的地址信息,这样可以使多个指定的微服务器根据事件消息更新数据。值得说明的是,地址信息中的端口信息可以是具体的端口名称,如8080或8090,也可以用预定符号代替,当端口信息为预定符号时,则地址信息指向的微服务器为地址信息中的IP信息所包括的所有微服务器。
例如,事件消息里可以有第一地址信息127.0.0.1:8080和第二地址信息127.0.0.1:8090,则该事件消息的目的服务器为IP是127.0.0.1、端口是8080的微服务器,以及IP是127.0.0.1、端口是8090的微服务器;事件消息里的目的服务器的地址信息可以是127.0.0.1:*,其中,“*”为所述的预定符号,则该事件消息的目的服务器为IP为127.0.0.1的所有微服务器,包括127.0.0.1:8080和127.0.0.1:8090。
值得说明的是,当一个数据不需要指定目的服务器进行更新,而是需要所有的微服务器都进行更新时,该目的服务器的地址信息也可以为空,则所有接收到事件消息的微服务器都可以根据事件处理信息生成更新数据的本地事件。
S52、判断所述目的服务器的地址信息与第二微服务器的地址信息是否一致。
目的服务器的地址信息中可以包括IP信息和端口信息,当第二微服务器的IP信息和端口信息与该目的服务器的地址信息中的IP信息和端口信息对应一致时,可以确定目的服务器的地址信息与第二微服务器的地址信息一致,该第二微服务器为目的服务器。
值得说明的是,地址信息中的端口信息可以是具体的端口名称,如8080或8090,也可以用预定符号代替,当端口信息为预定符号时,则地址信息指向的微服务器为地址信息中的IP信息所包括的所有微服务器。
也就是说,当目的服务器的地址信息中的端口信息为预定符号时,只要第二服务器的IP信息与目的服务器的IP信息一致时,即可确定目的服务器的地址信息与第二微服务器的地址信息一致,该第二微服务器为目的服务器。
例如,第二服务器的地址信息为127.0.0.1:8090,其中,127.0.0.1为IP信息,8090为端口信息,第二服务器获取到的事件消息中的目的服务器的地址信息为127.0.0.1:8090或127.0.0.1:*(其中,“*”为所述的预定符号)时,可以确定第二服务器即为目的服务器。
事件消息中可能存在多个目的服务器的地址信息,只要其中的一个地址信息与第二服务器的地址信息一致,则可以确定该第二服务器即为目的服务器。
在一种可能的实施方式中,所述事件消息还可以包括事件主题信息。
在判断所述目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,还可以先判断所述事件主题信息与所述第二微服务器的主题是否匹配,当所述事件主题信息与所述第二微服务器的主题不匹配时,停止对所述事件消息的处理。
事件主题信息可以与微服务器的主题相对应,例如,微服务器可以有多个主题(软件主题、财务主题、部门主题等),而一次数据更新可能涉及某一类或几类主题,例如,人事变更的数据更新可能涉及人事主题和财务主题,则因该人事变更的数据更新生成的事件消息中所包含的事件主题信息可以包括人事主题和财务主题。这样,当人事主题或财务主题的微服务器获取到该事件消息后可以根据该事件消息进行事件处理,而其他主题的微服务器可以忽略该事件消息。
虽然事件主题信息可以在一定程度上对微服务器进行分类,并达到初步的筛选效果,但是仅通过事件主题信息来指定需要更新数据的微服务器还是无法达到精确定位的效果,例如,一条涉及实习生人事变更的数据更新,其生成的事件消息的事件主题可能是人事主题、财务主题等,但是,涉及人事主题和财务主题的微服务器中,可能存在一部分微服务器只涉及正式员工的人事信息管理或财务信息管理,则这一部分的微服务器不需要进行实习生的人事变更的数据更新。
因此,可以在通过主题进行筛选后的基础上,再利用目的服务器的地址信息进行微服务器的精准定位,达到精确地指定需要进行数据更新的微服务器的效果。
在一种可能的实施方式中,所述事件消息还可以包括源地址信息,所述源地址信息为所述发布所述事件消息的微服务器的地址信息。
在所述判断所述目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,还可以先判断所述源地址信息与所述第二微服务器的地址信息是否一致;当所述源地址信息与所述第二微服务器的地址信息一致时,停止对所述事件消息的处理。
因为上一实施例中的第一微服务器与本实施例中的第二微服务器可以是相同的微服务器,且在上一实施例中,第一微服务器在发布事件消息前,可以先判断事件消息的目的服务器是否为自身,如果是则生成本地事件,为了防止本地事件重复生成造成的数据重复更新,在本实施例中,第二微服务器也可以先判断发布事件消息的微服务器是否为自身,如果是则可以忽略该事件消息,不对其进行后续处理。
S53、当所述目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据所述事件处理信息生成本地事件。
微服务器生成的本地事件可以是本地的独有事件,也可以是消息中间件中存储的公共事件,当事件处理信息中存在与公共事件相对应的特征代码时,可以直接从消息中间件中获取已经定义的公共事件,或者在获取已定义的公共事件后修改公共事件中的可定义数据,从而生成本地事件,当事件处理信息中没有已定义的公共事件的特征代码时,可以直接根据事件处理信息生成新的本地事件。
例如,第一微服务器中新增了***的数据,并发布了一个事件消息,该事件消息中的事件处理信息中包括了事件内容为“新增一个员工数据”的公共事件的特征代码a1,则其他微服务器在进行事件处理时,可以从消息中间件中获取代码为a1的公共事件,并将其中的可定义数据(例如员工姓名、性别、部门等内容)按照事件处理信息中的数据重新定义,从而生成该微服务器的本地事件。
第一服务器中新增了员工权限变动的数据,并发布了一个事件消息,该事件处理信息中没有包括特征代码,则其他微服务器在进行事件处理时,可以直接根据该条事件处理信息生成新的本地事件,例如,如果事件处理信息表征的事件内容为“为员工A开放B权限”,则可以根据该事件处理信息生成用于为员工A开放B权限的本地事件。
图6是根据一种第二微服务器处理事件的流程示意图。如图6所示,第二位服务器可以监听消息中间件中与自身主题一致的事件消息,解析事件消息中的目的服务器的地址信息和源地址信息,判断事件消息是否由自身发布,如果是则忽略该事件消息,如果不是则判断目的服务器是否为自身,如果是则生成本地事件,如果否则忽略该事件消息。
通过上述技术方案,第二服务器在获得事件消息之后,判断目的服务器的地址信息与自身的地址信息是否一致,一致时根据数据更新信息生成本地事件。第二微服务器不是根据其他微服务器上传至消息中间件中的更新数据直接进行自身的数据更新,而是根据消息中间件中地址信息与自身地址信息匹配的事件消息中的数据更新信息发布用于更新数据的本地事件,优化了事件处理的逻辑,可以达到在分布式***中将更新数据定向发布至指定微服务器的效果。
图7是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一微服务器。参照图7,电子设备700包括处理器722,其数量可以为一个或多个,以及存储器732,用于存储可由处理器722执行的计算机程序。存储器732中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器722可以被配置为执行该计算机程序,以执行上述的分布式***的通信方法。
另外,电子设备700还可以包括电源组件726和通信组件750,该电源组件726可以被配置为执行电子设备700的电源管理,该通信组件750可以被配置为实现电子设备700的通信,例如,有线或无线通信。此外,该电子设备700还可以包括输入/输出(I/O)接口757。电子设备700可以操作基于存储在存储器732的操作***,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的分布式***的通信方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器732,上述程序指令可由电子设备700的处理器722执行以完成上述的分布式***的通信方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的分布式***的通信方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种分布式***,其特征在于,所述***包括消息中间件以及多个微服务器;其中,
第一微服务器用于,根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息、目的服务器的地址信息和事件主题信息,并将所述事件消息发送至所述消息中间件;
第二微服务器用于,获取所述消息中间件中的事件消息,确定该事件消息中包括的事件主题信息与所述第二微服务器的主题是否匹配,在该事件消息中包括的事件主题信息与所述第二微服务器的主题匹配时,判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当所述目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成用于更新数据的本地事件;
其中,当所述事件处理信息中存在与公共事件相对应的特征代码时,所述第二微服务器从所述消息中间件中获取该特征代码对应的公共事件,修改所述公共事件中的可定义数据以生成所述本地事件;当所述事件处理信息中不存在与公共事件相对应的特征代码时,所述第二微服务器根据所述事件处理信息生成所述本地事件。
2.根据权利要求1所述的***,其特征在于,所述第一微服务器还用于:在将所述事件消息发送至所述消息中间件之前,确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息不一致;
所述第一微服务器还用于,在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件。
3.根据权利要求1所述的***,其特征在于,所述第一微服务器生成的所述事件消息还包括源地址信息,所述源地址信息为所述第一微服务器的地址信息。
4.根据权利要求1-3任一项所述的***,其特征在于,所述地址信息包括所述目的服务器的网络互连协议IP地址信息和端口信息。
5.根据权利要求1所述的***,其特征在于,所述第二微服务器还用于,在确定该事件消息中包括的事件主题信息与所述第二微服务器的主题不匹配时,停止对所述事件消息的处理。
6.根据权利要求1所述的***,其特征在于,所述第二微服务器还用于,在从所述消息中间件中获取到事件消息时,若该事件消息中的源地址信息与所述第二微服务器的地址信息一致,则停止对该事件消息的处理,所述源地址信息为发布该事件消息的微服务器的地址。
7.一种分布式***的通信方法,其特征在于,所述方法包括:
所述分布式***的第一微服务器根据所述第一微服务器中的数据更新信息,生成事件消息,所述事件消息中包括事件处理信息、目的服务器的地址信息和事件主题信息,并将所述事件消息发送至消息中间件;
所述分布式***的第二微服务器获取所述消息中间件中的事件消息,确定该事件消息中包括的事件主题信息与所述第二微服务器的主题是否匹配,在该事件消息中包括的事件主题信息与所述第二微服务器的主题匹配时,判断该事件消息中包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致,当所述目的服务器的地址信息与所述第二微服务器的地址信息一致时,根据该事件消息中包括的事件处理信息生成用于更新数据的本地事件;
其中,当所述事件处理信息中存在与公共事件相对应的特征代码时,所述第二微服务器从所述消息中间件中获取该特征代码对应的公共事件,修改所述公共事件中的可定义数据以生成所述本地事件;当所述事件处理信息中不存在与公共事件相对应的特征代码时,所述第二微服务器根据所述事件处理信息生成所述本地事件。
8.根据权利要求7所述的方法,其特征在于,所述第一微服务器将所述事件消息发送至消息中间件包括:
在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息不一致时,将所述事件消息发送至消息中间件;
所述方法还包括:所述第一微服务器在确定所述事件消息包括的所述目的服务器的地址信息与所述第一微服务器的地址信息一致时,根据所述事件处理信息生成本地事件。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述第二微服务器在确定该事件消息中包括的事件主题信息与所述第二微服务器的主题不匹配时,停止对所述事件消息的处理。
10.根据权利要求7所述的方法,其特征在于,所述第二微服务器在判断该事件消息包括的目的服务器的地址信息与所述第二微服务器的地址信息是否一致之前,所述方法还包括:所述第二微服务器确定该事件消息中包括的源地址信息与所述第二微服务器的地址信息一致;
所述方法还包括:所述第二微服务器在确定该事件消息中包括的源地址信息与所述第二微服务器的地址信息不一致时,停止对所述事件消息的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911311187.6A CN111158928B (zh) | 2019-12-18 | 2019-12-18 | 分布式***及通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911311187.6A CN111158928B (zh) | 2019-12-18 | 2019-12-18 | 分布式***及通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111158928A CN111158928A (zh) | 2020-05-15 |
CN111158928B true CN111158928B (zh) | 2024-04-05 |
Family
ID=70557772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911311187.6A Active CN111158928B (zh) | 2019-12-18 | 2019-12-18 | 分布式***及通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158928B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007112618A (ja) * | 2005-10-24 | 2007-05-10 | Nippon Telegr & Teleph Corp <Ntt> | 無線タグid情報転送先アドレス解決システムおよび方法 |
CN107111508A (zh) * | 2014-09-30 | 2017-08-29 | 亚马逊技术有限公司 | 用于执行程序代码的请求的程序性事件检测和消息生成 |
CN107273228A (zh) * | 2017-07-13 | 2017-10-20 | 焦点科技股份有限公司 | 基于星型拓扑架构的消息传输方法 |
CN107657532A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种业务流程的处理方法及*** |
CN110209986A (zh) * | 2019-06-06 | 2019-09-06 | 海尔优家智能科技(北京)有限公司 | 内存状态数据同步方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110185082A1 (en) * | 2009-12-29 | 2011-07-28 | Tervela, Inc. | Systems and methods for network virtualization |
-
2019
- 2019-12-18 CN CN201911311187.6A patent/CN111158928B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007112618A (ja) * | 2005-10-24 | 2007-05-10 | Nippon Telegr & Teleph Corp <Ntt> | 無線タグid情報転送先アドレス解決システムおよび方法 |
CN107111508A (zh) * | 2014-09-30 | 2017-08-29 | 亚马逊技术有限公司 | 用于执行程序代码的请求的程序性事件检测和消息生成 |
CN107657532A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种业务流程的处理方法及*** |
CN107273228A (zh) * | 2017-07-13 | 2017-10-20 | 焦点科技股份有限公司 | 基于星型拓扑架构的消息传输方法 |
CN110209986A (zh) * | 2019-06-06 | 2019-09-06 | 海尔优家智能科技(北京)有限公司 | 内存状态数据同步方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于消息中间件的航班信息显示***的设计与实现;李小智 等;《计算机***应用》;20101015;第19卷(第10期);第7-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111158928A (zh) | 2020-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388417B (zh) | 一种通信协议的更新方法、***及终端设备 | |
CN107800565B (zh) | 巡检方法、装置、***、计算机设备和存储介质 | |
WO2020244307A1 (zh) | 一种漏洞检测方法及装置 | |
CN107947954B (zh) | 动态调整日志级别的***、方法及服务器 | |
US10972564B2 (en) | System and method for automating actions in distributed computing | |
CN112887451B (zh) | 域名解析方法、装置及计算机设备 | |
CN111881209A (zh) | 异构数据库的数据同步方法、装置、电子设备及介质 | |
CN107133160B (zh) | 服务器和客户端 | |
CN111464646B (zh) | 信息处理方法、装置、电子设备和介质 | |
CN113779422B (zh) | 关系链标签的实现方法、装置、电子设备及存储介质 | |
CN112269588B (zh) | 算法的升级方法、装置、终端和计算机可读存储介质 | |
CN109391658B (zh) | 一种账号数据同步方法及其设备、存储介质、终端 | |
CN111158928B (zh) | 分布式***及通信方法 | |
CN110780915B (zh) | 一种数据处理方法、装置和存储介质 | |
CN109117152B (zh) | 服务生成***及方法 | |
CN111639086A (zh) | 一种数据对账方法、装置、设备及存储介质 | |
US9456046B2 (en) | Dynamic generation of proxy connections | |
US20190384493A1 (en) | Method, device, and computer program prouct for managing virtual machines | |
CN110765610A (zh) | Pdm集成方法、装置、计算机设备及存储介质 | |
CN115883512A (zh) | Dns域名处理方法、装置、***、设备及介质 | |
CN111626802A (zh) | 用于处理信息的方法和装置 | |
US7805715B2 (en) | Model publishing framework | |
CN112099841A (zh) | 一种生成配置文件的方法和*** | |
US10516767B2 (en) | Unifying realtime and static data for presenting over a web service | |
CN110262756B (zh) | 用于缓存数据的方法和装置 |
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 |