CN114726787B - 应用于rpc框架的路由方法及系统 - Google Patents
应用于rpc框架的路由方法及系统 Download PDFInfo
- Publication number
- CN114726787B CN114726787B CN202210386562.9A CN202210386562A CN114726787B CN 114726787 B CN114726787 B CN 114726787B CN 202210386562 A CN202210386562 A CN 202210386562A CN 114726787 B CN114726787 B CN 114726787B
- Authority
- CN
- China
- Prior art keywords
- routing
- address
- chain
- version
- target application
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种应用于RPC框架的路由方法及系统,能够减少RPC框架在路由计算中产生的异常数据,并提高RPC的服务调用的可靠性。该方法包括:获取注册中心发送的地址推送信息,地址推送信息中包括目标应用更新的至少一个服务端地址;根据地址推送信息,对写版本路由链中包括的多个路由规则进行修改,写版本路由链用于目标应用的地址推送通知过程;在完成对多个路由规则的修改之后,使用写版本路由链替换读版本路由链,其中,读版本路由链用于目标应用的服务调用的选址过程。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种应用于RPC框架的路由方法及系统。
背景技术
对于规模巨大的应用集群,其部署机器数达到数十万台,这使得一些开源的远程过程调用(Remote Procedure Call,RPC)框架使用的基于域名系统(Domain Name System,DNS)随机选址策略不能满足大规模部署的需要。经过多年的演进,一些RPC应用级服务框架,例如,HSF,形成了一套基于地址增量推送和各种选址规则独立处理的路由方案,并维护了大量的路由规则来保证目标地址信息的正确性。
为了使路由规则在运行时变得更加高效,上述路由方案包括两个独立的计算过程,分别是地址推送通知过程和服务调用时的动态选址的过程。在地址推送场景下,不同的路由规则需要将来自注册中心的大量地址进行分组和存储,在动态选址时根据请求的参数不同逐个轮询一个或多个路由规则,直到得到预期地址。因此,动态选址高度依赖了地址推送通知的结果,如果多个路由规则同时工作,出现不同路由规则中缓存的地址数据不一致的情况时,分组计算的结果也不一样。这可能导致调用的服务端地址出现紊乱的情况,严重时将造成线上的流量不均甚至服务崩溃的情况。
因此,业界需要一种路由方案,能够减少RPC框架在路由计算中产生的异常数据以及保证RPC的服务调用的可靠性。
发明内容
本申请提供一种应用于RPC框架的路由方法及系统,能够减少RPC框架在路由计算中产生的异常数据,并提高RPC的服务调用的可靠性。
第一方面,提供了一种应用于RPC框架的路由方法,包括:获取注册中心发送的地址推送信息,所述地址推送信息中包括目标应用更新的至少一个服务端地址;根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,所述写版本路由链用于所述目标应用的地址推送通知过程;在完成对所述多个路由规则的修改之后,使用所述写版本路由链替换读版本路由链,其中,所述读版本路由链用于所述目标应用的服务调用的选址过程。
结合第一方面,在一种可能的实现方式中,所述方法还包括:获取所述目标应用的调用请求;根据所述目标应用的调用请求,获取所述读版本路由链;根据所述读版本路由链,对所述目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,所述初始服务端地址集合包括所述目标应用访问的多个服务端地址。
结合第一方面,在一种可能的实现方式中,所述读版本路由链中包括n个依序排列的路由规则,所述根据所述读版本路由链,对所述目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,包括:根据所述读版本路由链中的路由规则的顺序,对所述初始服务端地址集合进行n次筛选,以获取所述目标服务端地址集合,其中,第i次筛选包括:获取第i-1个路由规则输出的第i个服务端地址集合,其中,第1个服务端地址集合为所述初始服务端地址集合,n≥i≥1,n>1;根据第i个路由规则对所述第i个服务端地址集合进行筛选,得到第i+1个服务端地址集合。
结合第一方面,在一种可能的实现方式中,所述方法还包括:在所述注册中心超过预设时间未更新地址的情况下,接收所述注册中心发送的空地址数据;根据所述空地址数据,将所述写版本路由链中的路由规则中的地址数据清空。
结合第一方面,在一种可能的实现方式中,根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,包括:根据所述多个路由规则的排序,依次更新每个路由规则中的服务端地址,并对每个路由规则中的服务端地址进行预分组。
第二方面,提供了一种应用于RPC框架的系统,包括:通信模块,用于获取注册中心发送的地址推送信息,所述地址推送信息中包括目标应用更新的至少一个服务端地址;处理模块,用于根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,所述写版本路由链用于所述目标应用的地址推送通知过程;所述处理模块还用于在完成对所述多个路由规则的修改之后,使用所述写版本路由链替换读版本路由链,其中,所述读版本路由链用于所述目标应用的服务调用的选址过程。
第三方面,提供了一种计算机设备,包括处理器,该处理器用于从存储器调用计算机程序,当所述计算机程序被执行时,该处理器用于执行上述第一方面或第一方面中任意可能的实现方式中的方法。
第四方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的代码。
第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的代码。
本申请实施例的路由方案将路由链的两种使用场景进行分离处理,当注册中心推送地址更新时,只对写版本路由链进行修改,当写版本路由链中的所有路由规则都处理完毕后再动态替换,将写版本路由链的最新结果刷新到读版本路由链上。这样可以保证在进行服务调用的时候总是针对一份完整的地址数据进行处理,从而解决由于共享数据导致的数据不一致的问题,能够减少RPC框架在路由计算中产生的异常数据,并提高RPC的服务调用的可靠性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一实施例的应用场景的示意图;
图2是本申请又一实施例的应用场景的示意图;
图3是本申请又一实施例的RPC框架执行路由方法的场景示意图;
图4是本申请一实施例的应用于RPC框架的路由方法的具体实现的示意图;
图5是本申请一实施例的应用于RPC框架的路由方案的具体实现的示意图;
图6是本申请又一实施例的路由方案的具体实现的示意图;
图7是本申请一实施例的应用于RPC框架的路由方法的流程示意图;
图8是本申请一实施例的装置800的结构示意图;
图9是本申请一实施例的装置900的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释。
远程过程调用(Remote Procedure Call,RPC):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的方案。典型的RPC的使用场景中包括服务发现、负载、容错、RPC协议等组件。其中RPC协议指明了程序如何进行网络传输和序列化。
常见RPC的应用级服务框架包括:HSF、Dubbo/Dubbox、gRPC、Spring Boot/SpringCloud等。
路由规则:是指在RPC架构中,根据一定的规则对服务提供方的地址进行筛选。每种路由规则需要获取注册中心提供的全部地址,并在路由规则内部按照一定的规则对地址进行分组,以等待调用时快速选择。
路由链:是指按照一定顺序串联起多种路由规则。
高速服务框架(High-speed Service Framework,HSF),是一种广泛使用的分布式RPC服务框架。HSF是纯客户端架构的RPC框架,没有服务端集群,所有HSF服务调用均是通过服务消费方(Consumer)与服务提供方(Provider)点对点进行。从分布式应用的层面,统一了服务的发布/调用方式,从而使得用户方便、快速的开发分布式应用,以及提供或使用公共功能模块。
图1是本申请一实施例的应用场景的示意图。可选地,该应用场景适用于HSF架构、基于HSF架构发展和进化的架构、或者也适用于其它类型的RPC框架系统。如图1所示,该应用场景通常包括以下模块。
注册中心:用于进行服务发现。注册中心是服务信息的中介,为服务提供了注册和发现的功能。注册中心可用于记录服务和服务端地址的映射关系。在本申请实施例中,服务端地址可以简称为服务地址或地址,是指RPC服务提供方提供的访问方式。
持久化配置中心:用于存储服务的各种治理规则,服务消费方在启动的过程中向持久化配置中心订阅服务治理规则,例如路由规则、归组规则、权重规则等,从而根据规则对调用过程的选址逻辑进行干预。
元数据存储中心:用于存储元数据。服务消费方在启动时可以将元数据上报到元数据存储中心,方便服务运维。上述元数据可以指服务的方法列表以及参数结构等信息。
服务治理中心:用于与服务地址注册中心、持久化配置中心、元数据存储中心等组件之间通信,为用户提供服务运维功能,包括服务查询、服务治理规则管理等。
服务提供方(Provider):也可以称为服务端,用于接收请求并提供服务,同时将地址信息发布到注册中心。
服务消费方(Consumer):也可以称为客户端,用于通过注册中心订阅服务,根据订阅到的地址信息发起服务调用。
图2是本申请又一实施例的应用场景的示意图。图2中涉及到RPC架构中执行路由方法的组件。如图2所示,该场景中包括注册中心、客户端和服务端。其中客户端可以指图1中的服务消费方(Consumer),服务端可以指图1中的服务提供方(Provider)。客户端中包括选址模块和RPC协议调用模块。选址模块中包括服务目录模块、路由模块和负载均衡模块。其中,服务目录模块用于存储来自注册中心的所有服务提供方(Provider)的地址信息;路由模块用于根据特定的规则从所有地址信息筛选出满足调用条件的地址信息;负载均衡模块用于从多个可用的地址信息间选择一个合适的调用地址。
RPC协议调用模块中包括序列化模块、协议编码模块以及网络传输模块。其中,序列化模块用于将请求信息按照一定的规则编码成二进制的数据;协议编码模块用于将请求信息如请求目标、请求参数等按照一定的顺序排布组成一整段网络请求数据;网络传输模块用于维护网络层连接、将请求数据传递给服务端。
应理解,图1或图2的应用场景的说明仅仅作为示例而非限定,在实践中,可以在上述场景的基础上作适当的变形和增减,仍然适用于本申请实施例的方案。例如,图1或图2的应用场景也适用于HSF架构和Dubbo架构结合的系统,或者其它类型的RPC架构。
如前文所述,一些RPC框架,例如HSF,形成了一套基于地址增量推送和各种选址规则独立处理的路由方案。上述路由方案包括两个独立的计算过程,分别是地址推送通知过程和服务调用时的动态选址的过程。在应用启动的时候,RPC框架会向注册中心订阅指定的服务信息,然后构建一条路由链。这条路由链按照一定顺序串联起了多种路由规则。每种路由规则都需要获取来自注册中心的所有服务地址,在路由规则内部按一定的规则对这些服务地址进行分组,等待调用时快速选择。
可选地,注册中心进行上述地址推送通知的过程可以称为地址推送或地址推送链路,注册中心进行上述服务调用时的动态选址的过程可以称为调用时动态选址、动态选址、调用或调用链路。
图3是本申请又一实施例的RPC框架执行路由方法的场景示意图。如图3所示,在地址推送通知过程中,注册中心可以向服务目录模块推送更新的地址。当注册中心推送地址更新的时候,路由模块可以从服务目录模块获取更新的地址,并按照路由链逐个通知各路由规则,每个路由规则根据其具体实现独立对地址进行处理、预分组。先完成计算的路由规则版本信息与最新的注册中心地址版本一致,未完成计算的路由规则版本信息仍使用旧的地址信息。
在进行调用的时候,路由模块会根据路由链逐个轮询路由规则获取每个路由规则的处理结果。例如,在选址过程中,若存在多个待选的访问地址,则路由模块可以依次根据路由规则从访问地址中筛选符合要求的地址集合,然后将前一路由规则的处理结果传入下一路由规则进行处理,直到所有路由规则处理完毕,最终从待选的多个访问地址中得到符合所有路由规则的全部预期地址。
但是,调用时的动态选址严重依赖了地址推送通知的结果,而且如果多个路由规则同时工作时,出现不同路由规则中缓存的地址数据不一致的情况时,分组计算的结果也不一样。这可能导致应用调用的服务端地址出现紊乱的情况,严重时将造成线上的流量不均甚至服务崩溃的情况。
作为示例,接下来结合附图说明上述问题。图4是本申请一实施例的应用于RPC框架的路由方法的具体实现的示意图。
如图4所示,假设目标应用的路由链对应于n种路由规则。在A时刻,目标应用收到来自注册中心的地址更新消息,并通知x个地址更新,目标应用开始将地址更新消息推送到各个路由规则。其中,x为大于等于1的整数,n为大于1的整数。
在B时刻,目标应用接收到RPC调用请求。此时,有m种路由规则完成更新,仍有n-m种路由规则未更新完毕。0<m<n,则目标应用按照顺序请求各个路由规则获取筛选后的结果,调用链路经过前m种路由规则时,返回了更新后的新路由规则版本的结果,而在后n-m种路由规则返回的是更新前的旧路由规则版本的结果。由于前后版本不一致,可能出现取地址交集为空的情况,或者在选址过程中采用位图(bitmap)方式进行快速筛选时,可能出现数据异常的情况,导致目标应用调用的服务端地址出现紊乱。
为了解决上述问题,本申请实施例提出了一种路由方案。图5是本申请一实施例的应用于RPC框架的路由方案的具体实现的示意图。如图5所示,该方案在初始化的时候建立了两条路由链,为了区分,可以将一条路由链称为写版本路由链,另一条路由链称为读版本路由链。其中,写版本路由链专门用于地址推送通知过程中,读版本路由链专门用于调用时的动态选址过程。两个链路独立使用两种版本,互不影响。
当注册中心推送地址更新时,RPC框架只对写版本路由链进行修改,不对读版本路由链进行任何修改。当写版本路由链中的所有路由规则都处理完毕后再动态替换,将写版本路由链的最新结果刷新到读版本路由链上。
当调用链路需要进行选址时,RPC框架可以只使用读版本路由链这份所有结果都一致的数据,逐个轮询路由规则获取每个路由规则的处理结果,这保证了在调用过程符合当前数据预期。
图6是本申请又一实施例的路由方案的具体实现的示意图。如图6所示,在一些示例中,当注册中心超过预设时间未更新地址时,RPC框架会默认推送一份空地址数据给所有写版本路由链的路由规则,释放掉使用的空间。
图6的路由方案采用延时清空的方式减少长期状态下未被使用的路由链的占用空间,减少由于维护读版本和写版本的双链路造成的内存损耗,节省存储资源。
本申请实施例的路由方案将路由链的两种使用场景进行分离处理,每个场景独立使用一份地址数据进行处理,避免对同一份数据同时进行读写操作。这样可以保证在进行服务调用的时候总是针对一份完整的地址数据进行处理,从而解决由于共享数据导致的数据不一致的问题,防止流量不均情况的出现。
本申请实施例的路由方案可以使每个具体的路由规则实现不需要考虑读写安全的问题,从框架层面降低路由规则实现的复杂度,减少改造成本。
图7是本申请一实施例的应用于RPC框架的路由方法的流程示意图。图7的方法可以由图1至图3中客户端实现。例如,可以由客户端中的服务目录模块和路由模块实现。应理解,上述模块仅作为示例,图7的方法也可以由RPC框架中的其它具有类似功能的模块实现。如图7所示,该方法包括以下内容。
S701、获取注册中心发送的地址推送信息,地址推送信息中包括目标应用更新的至少一个服务端地址。
例如,注册中心可以向客户端发送地址推送信息,客户端中的服务目录模块可以存储该地址推送信息。客户端中的路由模块可以通过访问服务目录模块获取地址推送信息。
S702、根据地址推送信息,对写版本路由链中包括的多个路由规则进行修改,写版本路由链用于目标应用的地址推送通知过程。
作为示例,上述对写版本路由链中包括的多个路由规则进行修改,包括:根据多个路由规则的排序,依次更新每个路由规则中的服务端地址,并对每个路由规则中的服务端地址进行预分组。
S703、在完成对多个路由规则的修改之后,使用写版本路由链替换读版本路由链,其中,读版本路由链用于目标应用的服务调用的选址过程。
作为示例,S702部分和S703部分可以由客户端中的路由模块执行。
本申请实施例的路由方案将路由链的两种使用场景进行分离处理,当注册中心推送地址更新时,只对写版本路由链进行修改,当写版本路由链中的所有路由规则都处理完毕后再动态替换,将写版本路由链的最新结果刷新到读版本路由链上。这样可以保证在进行服务调用的时候总是针对一份完整的地址数据进行处理,从而解决由于共享数据导致的数据不一致的问题,能够减少RPC框架在路由计算中产生的异常数据,并提高RPC的服务调用的可靠性。
可选地,图7的方法还包括:获取目标应用的调用请求;根据目标应用的调用请求,获取读版本路由链;根据读版本路由链,对目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,初始服务端地址集合包括目标应用访问的多个服务端地址。
在进行调用的时候,路由模块会根据读版本路由链逐个轮询路由规则获取每个路由规则的处理结果。路由模块可以依次根据路由规则从待选的访问地址中筛选符合要求的地址集合,然后将前一路由规则的处理结果传入下一路由规则进行处理,直到所有路由规则处理完毕,最终得到符合所有路由规则的全部预期地址。
例如,读版本路由链中包括n个依序排列的路由规则,根据读版本路由链,对目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,包括:根据读版本路由链中的路由规则的顺序,对初始服务端地址集合进行n次筛选,以获取目标服务端地址集合,其中,第i次筛选包括:获取第i-1个路由规则输出的第i个服务端地址集合,其中,第1个服务端地址集合为初始服务端地址集合,n≥i≥1,n>1;根据第i个路由规则对第i个服务端地址集合进行筛选,得到第i+1个服务端地址集合。
可选地,图7的方法还包括:在注册中心超过预设时间未更新地址的情况下,接收注册中心发送的空地址数据;根据空地址数据,将写版本路由链中的路由规则中的地址数据清空。
在本申请实施例中,通过采用延时清空的方式减少长期状态下未被使用的路由链的占用空间,减少由于维护读版本和写版本的双链路造成的内存损耗,节省存储资源。
需要说明的是,本申请实施例中的各个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图8是本申请一实施例的装置800的结构示意图。装置800用于执行本申请实施例中由RPC框架中的客户端或注册中心执行的方法。
如图8所示,装置800中包括通信模块810和处理模块820。作为示例,在装置800为客户端的情况下,通信模块810用于获取注册中心发送的地址推送信息,地址推送信息中包括目标应用更新的至少一个服务端地址;处理模块820用于根据地址推送信息,对写版本路由链中包括的多个路由规则进行修改,写版本路由链用于目标应用的地址推送通知过程;处理模块820还用于在完成对多个路由规则的修改之后,使用写版本路由链替换读版本路由链,其中,读版本路由链用于目标应用的服务调用的选址过程。
作为示例,在装置800为注册中心的情况下,处理模块820用于控制通信模块810向客户端发送地址推送信息,地址推送信息中包括目标应用更新的至少一个服务端地址。又例如,处理模块820用于控制通信模块810在注册中心超过预设时间未更新地址的情况下,向客户端发送空地址数据。
图9是本申请一实施例的装置900的结构示意图。装置900用于执行本申请实施例中由RPC框架中的各组件执行的方法。
该装置900包括处理器910,处理器910用于执行存储器920存储的计算机程序或指令,或读取存储器920存储的数据,以执行上文各方法实施例中的方法。可选地,处理器910为一个或多个。
可选地,如图9所示,该装置900还包括存储器920,存储器920用于存储计算机程序或指令和/或数据。该存储器920可以与处理器910集成在一起,或者也可以分离设置。可选地,存储器920为一个或多个。
可选地,如图9所示,该装置900还包括通信接口930,通信接口930用于信号的接收和/或发送。例如,处理器910用于控制通信接口930进行信号的接收和/或发送。
可选地,该装置900用于实现上文各个方法实施例中由RPC框架中的各组件执行的操作。
例如,处理器910用于执行存储器920存储的计算机程序或指令,以实现图5至图7中由客户端中的各组件执行的相关操作,或者实现图5至图7中注册中心执行的相关操作。
需要指出的是,图9中的装置900可以是前述实施例中的各组件,也可以是各组件的组成部件(如芯片)或功能模块,在此不做限定。
在本申请实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如CPU、微处理器、GPU(可以理解为一种微处理器)、或DSP等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为ASIC或PLD实现的硬件电路,例如FPGA。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种ASIC,例如NPU、TPU、DPU等。
可见,以上装置中的各单元可以是被配置成实施以上方法的一个或多个处理器(或处理电路),例如:CPU、GPU、NPU、TPU、DPU、微处理器、DSP、ASIC、FPGA,或这些处理器形式中至少两种的组合。
此外,以上装置中的各单元可以全部或部分可以集成在一起,或者可以独立实现。在一种实现中,这些单元集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。该SOC中可以包括至少一个处理器,用于实现以上任一种方法或实现该装置各单元的功能,该至少一个处理器的种类可以不同,例如包括CPU和FPGA,CPU和人工智能处理器,CPU和GPU等。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序/指令被处理器执行时,致使处理器实现图5至图7中由客户端中的各组件执行的方法中的步骤,或者实现图5至图7中注册中心执行的方法中的步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器实现图5至图7中由客户端中的各组件执行的方法中的步骤,或者实现图5至图7中注册中心执行的方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种应用于RPC框架的路由方法,其特征在于,包括:
获取注册中心发送的地址推送信息,所述地址推送信息中包括目标应用更新的至少一个服务端地址;
根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,所述写版本路由链用于所述目标应用的地址推送通知过程;
在完成对所述多个路由规则的修改之后,使用所述写版本路由链替换读版本路由链,其中,所述读版本路由链用于所述目标应用的服务调用的选址过程。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标应用的调用请求;
根据所述目标应用的调用请求,获取所述读版本路由链;
根据所述读版本路由链,对所述目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,所述初始服务端地址集合包括所述目标应用访问的多个服务端地址。
3.如权利要求2所述的方法,其特征在于,所述读版本路由链中包括n个依序排列的路由规则,所述根据所述读版本路由链,对所述目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,包括:
根据所述读版本路由链中的路由规则的顺序,对所述初始服务端地址集合进行n次筛选,以获取所述目标服务端地址集合,其中,第i次筛选包括:
获取第i-1个路由规则输出的第i个服务端地址集合,其中,第1个服务端地址集合为所述初始服务端地址集合,n≥i≥1,n>1;
根据第i个路由规则对所述第i个服务端地址集合进行筛选,得到第i+1个服务端地址集合。
4.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述注册中心超过预设时间未更新地址的情况下,接收所述注册中心发送的空地址数据;
根据所述空地址数据,将所述写版本路由链中的路由规则中的地址数据清空。
5.如权利要求1或2所述的方法,其特征在于,根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,包括:
根据所述多个路由规则的排序,依次更新每个路由规则中的服务端地址,并对每个路由规则中的服务端地址进行预分组。
6.一种应用于RPC框架的系统,其特征在于,包括:
通信模块,用于获取注册中心发送的地址推送信息,所述地址推送信息中包括目标应用更新的至少一个服务端地址;
处理模块,用于根据所述地址推送信息,对写版本路由链中包括的多个路由规则进行修改,所述写版本路由链用于所述目标应用的地址推送通知过程;
所述处理模块还用于在完成对所述多个路由规则的修改之后,使用所述写版本路由链替换读版本路由链,其中,所述读版本路由链用于所述目标应用的服务调用的选址过程。
7.如权利要求6所述的系统,其特征在于,所述通信模块还用于获取所述目标应用的调用请求;所述处理模块还用于根据所述目标应用的调用请求,获取所述读版本路由链;根据所述读版本路由链,对所述目标应用的初始服务端地址集合进行筛选,以获取目标服务端地址集合,所述初始服务端地址集合包括所述目标应用访问的多个服务端地址。
8.如权利要求7所述的系统,其特征在于,所述读版本路由链中包括n个依序排列的路由规则,所述处理模块具体用于:根据所述读版本路由链中的路由规则的顺序,对所述初始服务端地址集合进行n次筛选,以获取所述目标服务端地址集合,其中,第i次筛选包括:获取第i-1个路由规则输出的第i个服务端地址集合,其中,第1个服务端地址集合为所述初始服务端地址集合,n≥i≥1,n>1;根据第i个路由规则对所述第i个服务端地址集合进行筛选,得到第i+1个服务端地址集合。
9.如权利要求6或7所述的系统,其特征在于,所述通信模块还用于在所述注册中心超过预设时间未更新地址的情况下,接收所述注册中心发送的空地址数据;所述处理模块还用于根据所述空地址数据,将所述写版本路由链中的路由规则中的地址数据清空。
10.如权利要求6或7所述的系统,其特征在于,所述处理模块具体用于:根据所述多个路由规则的排序,依次更新每个路由规则中的服务端地址,并对每个路由规则中的服务端地址进行预分组。
11.一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210386562.9A CN114726787B (zh) | 2022-04-11 | 2022-04-11 | 应用于rpc框架的路由方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210386562.9A CN114726787B (zh) | 2022-04-11 | 2022-04-11 | 应用于rpc框架的路由方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114726787A CN114726787A (zh) | 2022-07-08 |
CN114726787B true CN114726787B (zh) | 2023-08-25 |
Family
ID=82244699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210386562.9A Active CN114726787B (zh) | 2022-04-11 | 2022-04-11 | 应用于rpc框架的路由方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114726787B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100171B1 (en) * | 2002-05-10 | 2006-08-29 | Oracle International Corp. | System and method for auto-evolvable remote procedure call structures |
US7779086B1 (en) * | 2004-05-04 | 2010-08-17 | Oracle America, Inc. | Methods and apparatus for performing a remote procedure call |
CN105357233A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 一种远程调用方法与设备 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
CN110120961A (zh) * | 2018-02-06 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 一种分布式服务集群及其路由同步的方法 |
CN110389748A (zh) * | 2019-06-17 | 2019-10-29 | 平安银行股份有限公司 | 业务数据处理方法及终端设备 |
CN112328413A (zh) * | 2020-11-25 | 2021-02-05 | 中国工商银行股份有限公司 | 应用服务的调用方法、装置及系统 |
CN112350873A (zh) * | 2020-11-25 | 2021-02-09 | 中国工商银行股份有限公司 | 应用服务信息处理方法、应用服务调用方法、装置及系统 |
CN113760481A (zh) * | 2020-06-18 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种分布式定时任务调度系统和方法 |
CN113923159A (zh) * | 2021-08-24 | 2022-01-11 | 锦翰科技(深圳)有限公司 | 一种数据消息集中处理的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557486A (zh) * | 2015-09-25 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种数据的存储方法和装置 |
CN106911648B (zh) * | 2015-12-23 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 一种环境隔离方法及设备 |
US11489943B2 (en) * | 2019-02-13 | 2022-11-01 | Red Hat, Inc. | Automatic version routing among multiple instances of an application |
-
2022
- 2022-04-11 CN CN202210386562.9A patent/CN114726787B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100171B1 (en) * | 2002-05-10 | 2006-08-29 | Oracle International Corp. | System and method for auto-evolvable remote procedure call structures |
US7779086B1 (en) * | 2004-05-04 | 2010-08-17 | Oracle America, Inc. | Methods and apparatus for performing a remote procedure call |
CN105357233A (zh) * | 2014-08-18 | 2016-02-24 | 阿里巴巴集团控股有限公司 | 一种远程调用方法与设备 |
CN110120961A (zh) * | 2018-02-06 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 一种分布式服务集群及其路由同步的方法 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
CN110389748A (zh) * | 2019-06-17 | 2019-10-29 | 平安银行股份有限公司 | 业务数据处理方法及终端设备 |
CN113760481A (zh) * | 2020-06-18 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种分布式定时任务调度系统和方法 |
CN112328413A (zh) * | 2020-11-25 | 2021-02-05 | 中国工商银行股份有限公司 | 应用服务的调用方法、装置及系统 |
CN112350873A (zh) * | 2020-11-25 | 2021-02-09 | 中国工商银行股份有限公司 | 应用服务信息处理方法、应用服务调用方法、装置及系统 |
CN113923159A (zh) * | 2021-08-24 | 2022-01-11 | 锦翰科技(深圳)有限公司 | 一种数据消息集中处理的方法 |
Non-Patent Citations (1)
Title |
---|
一种基于UDP通信的远程过程调用方法;吕晶;刘伟旻;全佳;黄昌金;;广东通信技术(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114726787A (zh) | 2022-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200099606A1 (en) | Distrubuted testing service | |
US10462262B2 (en) | Middleware abstraction layer (MAL) | |
CN107210924B (zh) | 用于配置通信系统的方法和设备 | |
CN107172214B (zh) | 一种具有负载均衡的服务节点发现方法及装置 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
CN110377431B (zh) | 多注册中心场景下服务调用方法及装置 | |
CN109656688B (zh) | 一种实现分布式业务规则的方法、系统和服务器 | |
CN107105013B (zh) | 文件的处理方法、服务器、终端和系统 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN114189525B (zh) | 服务请求方法、装置和电子设备 | |
JP2023544123A (ja) | データ送信システム、データ送信方法、インテリジェント車両、及び装置 | |
CN112579319A (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
CN114726787B (zh) | 应用于rpc框架的路由方法及系统 | |
CN108111630B (zh) | 一种Zookeeper集群系统及其连接方法和系统 | |
CN113779452B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113076187A (zh) | 分布式锁管理方法及装置 | |
CN115065686B (zh) | 分布式负载均衡系统的配置方法、装置及系统 | |
CN110413427B (zh) | 订阅数据拉取方法、装置、设备及存储介质 | |
US11474846B2 (en) | Controller for bridging database architectures | |
CN114691309A (zh) | 一种批量业务处理系统、方法及装置 | |
CN111641728A (zh) | 基于分布式系统的调用方法及装置 | |
CN113867776A (zh) | 中台应用的发布方法、装置、电子设备和存储介质 | |
CN108920277B (zh) | 业务执行系统、方法及装置、业务隔离系统 | |
CN115866029B (zh) | 微服务下线处理方法、装置、计算机设备和存储介质 | |
CN111782346A (zh) | 基于同库模式的分布式事务全局id生成方法及装置 |
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 |