CN112671897A - 分布式系统的访问方法、装置、存储介质、设备和产品 - Google Patents
分布式系统的访问方法、装置、存储介质、设备和产品 Download PDFInfo
- Publication number
- CN112671897A CN112671897A CN202011535018.3A CN202011535018A CN112671897A CN 112671897 A CN112671897 A CN 112671897A CN 202011535018 A CN202011535018 A CN 202011535018A CN 112671897 A CN112671897 A CN 112671897A
- Authority
- CN
- China
- Prior art keywords
- service
- available
- current limiting
- distributed system
- access
- 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
Links
Images
Abstract
本公开关于一种分布式系统的访问方法、装置、存储介质、设备和产品,应用于分布式系统的客户端,该方法包括:向当前处于运行状态的服务发送用于访问业务服务的访问请求,当前处于运行状态的服务发生故障时,计算得到业务服务的哈希值和可用服务的哈希值;若存在符合预设条件的可用服务,将其中哈希值最接近业务服务的哈希值的可用服务确定为替代服务;预设条件为,可用服务的哈希值大于或等于业务服务的哈希值;若不存在符合预设条件的可用服务,将哈希值最小的可用服务确定为替代服务,向替代服务发送访问请求。当前处于运行状态的服务发生故障时,客户端能一致选取出替代服务,因此本方案的访问方法具有较高的可靠性。
Description
技术领域
本公开涉及网络技术领域,尤其涉及一种分布式系统的访问方法、装置、存储介质、设备和产品。
背景技术
分布式系统是目前常见的一种服务系统,其由多个相互独立的、且可以互相协作的业务服务组成,客户端可以通过向其中任意一个业务服务发送访问请求,从而访问对应的业务服务并调用该业务服务所实现的功能。
由于业务服务的承载能力有限,需要对每个业务服务进行限流,即控制客户端对业务服务的访问。目前的一种限流方法是,在每个服务器本地设置限流程序,限流程序按预设的阈值控制单位时间内的访问量,访问量超过阈值时则禁止客户端访问该服务器的业务服务,访问量不超过阈值则允许客户端访问。
然而一个业务服务往往部署于多个服务器,且每个服务器的负载并不均衡,因此这种限流方案的控制精度较低,不能基于每个业务服务实际的承载能力进行限流。
发明内容
本公开提供一种分布式系统的访问方法、装置、存储介质、设备和产品,以提供一种精度更高的限流方案。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种分布式系统的访问方法,应用于客户端,所述访问方法包括:
向当前处于运行状态的服务发送访问请求;其中,所述访问请求用于访问业务服务;
当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务;
对所述业务服务的服务标识和每一个所述可用服务的服务标识进行哈希计算,得到所述业务服务的哈希值和每一个所述可用服务的哈希值;
当至少一个所述可用服务符合预设条件时,将符合所述预设条件的可用服务中,哈希值最接近所述业务服务的哈希值的可用服务确定为替代服务;其中,所述预设条件为:所述可用服务的哈希值大于或等于所述业务服务的哈希值;
当每一个所述可用服务均不符合所述预设条件时,将所有可用服务中,哈希值最小的可用服务确定为替代服务;
向所述替代服务发送所述访问请求。
可选的,所述访问方法还包括:
按预设的查询周期向所述分布式系统的每一个服务发送查询请求;其中,所述查询请求用于查询所述服务的状态;
将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中;
其中,所述获取所述分布式系统的每一个可用服务,包括:
从所述可用服务列表读取得到所述分布式系统的每一个可用服务。
可选的,所述将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中之后,还包括:
按预设的监控周期向所述分布式系统的监控服务发送所述可用服务列表;其中,所述监控服务用于在任意两个客户端发送的可用服务列表不一致时输出告警信息。
可选的,所述当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务,包括:
在发送所述访问请求之后的预设时长内,未收到所述当前处于运行状态的服务的控制指令,则获取所述分布式系统的每一个可用服务。
可选的,所述向当前处于运行状态的服务发送访问请求,包括:
对所述业务服务的标识、请求类型和数据量进行编码,得到待发送消息;
组装所述待发送消息得到所述访问请求;
向所述当前处于运行状态的服务发送所述访问请求。
根据本公开实施例的第二方面,提供一种分布式系统的访问装置,应用于客户端;所述访问装置包括:
发送单元,被配置为执行向当前处于运行状态的服务发送访问请求;其中,所述访问请求用于访问业务服务;
获取单元,被配置为执行当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务;
计算单元,被配置为执行对所述业务服务的服务标识和每一个所述可用服务的服务标识进行哈希计算,得到所述业务服务的哈希值和每一个所述可用服务的哈希值;
选取单元,被配置为执行:
当至少一个所述可用服务符合预设条件时,将符合所述预设条件的可用服务中,哈希值最接近所述业务服务的哈希值的可用服务确定为替代服务;其中,所述预设条件为,所述可用服务的哈希值大于或等于所述业务服务的哈希值;
当每一个所述可用服务均不符合所述预设条件时,将所有所述可用服务中,哈希值最小的可用服务确定为替代服务;
所述发送单元,被配置为执行向所述替代限流服务发送所述访问请求。
可选的,所述访问装置还包括:
查询单元,被配置为执行按预设的查询周期向所述分布式系统的每一个服务发送查询请求;其中,所述查询请求用于查询所述服务的状态;
记录单元,被配置为执行将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中;
其中,所述获取单元获取所述分布式系统的每一个可用服务时,具体执行:
从所述可用服务列表读取得到所述分布式系统的每一个可用服务。
可选的,所述发送单元还被配置为执行:
按预设的监控周期向所述分布式系统的监控服务发送所述可用服务列表;其中,所述监控服务用于在任意两个客户端发送的可用服务列表不一致时输出告警信息。
可选的,所述获取单元当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务时,具体执行:
在发送所述访问请求之后的预设时长内,未收到所述当前处于运行状态的服务的控制指令,则获取所述分布式系统的每一个可用服务。
可选的,所述发送单元向当前处于运行状态的服务发送访问请求时,具体执行:
对所述业务服务的标识、请求类型和数据量进行编码,得到待发送消息;
组装所述待发送消息得到所述访问请求;
向所述当前处于运行状态的服务发送所述访问请求。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行的计算机程序的存储器;
其中,所述处理器被配置为执行所述计算机程序,以实现如本公开实施例第一方面的任意一项提供的分布式系统的访问方法。
根据本公开实施例的第四方面,提供一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现本公开实施例第一方面的任意一项提供的分布式系统的访问方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质中的计算机指令,所述计算机指令被执行时,用于实现本公开实施例的第一方面任意一项提供的分布式系统的访问方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
当前处于运行状态的服务发生故障时,客户端能一致选取出替代服务,因此本方案的访问方法具有较高的可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种分布式系统的架构示意图;
图2是根据一示例性实施例示出的一种分布式系统的访问方法的流程图;
图3是根据一示例性实施例示出的一种获取可用的服务的方法流程图;
图4是根据一示例性实施例示出的一种一致性哈希算法的示意图;
图5是根据一示例性实施例示出的一种分布式系统的访问方法的时序图;
图6是根据一示例性实施例示出的一种分布式系统的访问装置的结构示意图;
图7是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
首先,结合图1所示的分布式系统的架构,说明本公开所提供的分布式系统访问方法的应用场景。
如图1所示,本公开所应用的分布式系统由多个业务服务,以及除业务服务以外的其他服务构成,其中,业务服务可以理解为用于为接入分布式系统的客户端提供具体功能的服务,例如,mysql就是现有的一种为客户端提供数据库的查询和读写等功能的业务服务。
除业务服务以外,分布式系统中还包括其他类型的服务,如限流服务,在本公开适用的分布式系统中,每一个业务服务均对应有一个用于对该业务服务进行限流的限流服务,一个限流服务可以同时用于对多个业务服务进行限流,也可以作为备用的限流服务而不用于对业务服务进行限流。
业务服务和限流服务之间,以及限流服务和客户端之间均可以通过预先定义的通信框架进行通信。
例如,图1中限流服务1可以用于对业务服务2进行限流。一种可选的限流方式是,设定一个业务服务2的访问量阈值,如可以设定访问量阈值为每分钟1000次访问,在此基础上,每一个要访问业务服务2的客户端均将访问业务服务2的访问请求发送至用于限流的限流服务1,限流服务1每接收到一个对业务服务2的访问请求,就会判断当前业务服务2的访问量是否大于上述访问量阈值,也就是判断最近1分钟内是否有超过1000个客户端访问业务服务2。
若当前的访问量大于访问量阈值,则限流服务1禁止当前的客户端继续访问业务服务2,则限流服务1向该客户端反馈禁止访问指令,从而禁止该客户端访问业务服务2,若当前的访问量不大于访问量阈值,则限流服务1允许当前的客户端访问业务服务2,此时限流服务1可以向该客户端反馈允许访问指令,客户端收到允许访问指令后,就可以访问业务服务2。上述允许访问指令和禁止访问指令,统称为限流服务向客户端反馈的控制指令。
下面,结合图1所示的场景,参考图2,本公开实施例提供一种分布式系统访问方法,该方法可以包括如下步骤:
需要说明的是,一个分布式系统中的服务可以接受多个客户端(client)的访问,即一个分布式系统可以连接(指通信连接)多个客户端,而本公开任一所提供的分布式系统访问方法,可以应用于分布式系统所连接的每一个客户端。例如,假设一个分布式系连接有1000个客户端,则这1000个客户端均可以通过执行本公开提供的分布式系统访问方法访问分布式系统中的业务服务。
S201、向当前处于运行状态的服务发送访问请求。
其中,访问请求用于访问分布式系统中的某一个业务服务,下文将访问请求所要访问的业务服务,记为目标业务服务。步骤S201中当前处于运行状态的服务,则是指,当前用于对目标业务服务进行限流的一个限流服务,下文将该限流服务记为当前目标限流服务。
结合前述例子,需要访问业务服务2的客户端向限流服务1发送一个访问业务服务2的访问请求,在该例子中,业务服务2就是目标业务服务,而当前用于对业务服务2进行限流的限流服务2就是步骤S201中的当前目标限流服务。
这里的当前目标限流服务,可以是预先在每一个客户端中指定的一个限流服务,也可以是每一个客户端通过执行一致性哈希算法而统一确定出来的一个当前用于对目标业务服务进行限流的限流服务。
S202、当根据访问请求确定当前处于运行状态的服务发生故障时,获取分布式系统的每一个可用服务。
步骤S202所获取的可用服务,是指,分布式系统中每一个可用的限流服务。
接收访问请求之后,若当前目标限流服务未发生故障,则当前目标限流服务会按前文所述的限流方法,控制当前的这个客户端对目标业务服务的访问,即将当前对目标业务服务的访问量和目标业务服务的访问量阈值进行对比,基于对比结果,禁止当前的客户端访问目标业务服务,或者允许当前的客户端访问目标业务服务。若当前目标限流服务发生故障,则当前目标限流服务无法实现控制客户端对目标业务服务访问的功能,此时就需要确定一个新的目标限流服务来控制客户端对目标业务服务的访问。
可以理解的,当前目标限流服务可以将对应的控制结果反馈给客户端,因此,客户端可以根据是否收到当前目标限流服务反馈的控制结果来确定当前目标限流服务是否发生故障。
也就是说,客户端发送访问请求之后,若在预设时长(如发送访问请求后的1分钟)内,未收到当前目标限流服务反馈的控制指令时,就可以确定当前目标限流服务发生故障。
通过这种方式,客户端可以在请求失败时及时感知到当前目标限流服务的健康程度(即感知到当前目标限流服务是否故障),从而在当前目标限流服务发生故障时及时将其他正常工作的限流服务确定为目标限流服务以便继续控制客户端对业务服务的访问,保障分布式系统正常运行。
S203、对业务服务的服务标识和每一个可用服务的服务标识进行哈希计算,得到业务服务的哈希值和可用服务的哈希值。
步骤S203中,可以分别计算得到访问请求所要访问的目标业务服务的哈希值,以及每一个可用的限流服务的哈希值。
业务服务和可用的限流服务的服务标识,均可以理解为具有一定长度的字符串,针对一个字符串,可以调用任意一种现有的哈希算法对其进行计算,得到该字符串对应的哈希值,具体的计算方法此处不做限定。
S204、判断每一个可用服务是否符合预设条件。
预设条件是指,可用服务的哈希值大于或等于访问请求所要访问的目标业务服务的哈希值。
也就是说,对于任意一个可用服务,若这个可用服务的哈希值大于或等于目标业务服务的哈希值,就确定这个可用服务符合预设条件,反之若这个可用服务的哈希值小于目标业务服务的哈希值,则确定这个可用服务不符合预设条件。
若分布式系统的所有可用服务中,有至少一个可用服务符合预设条件,则执行步骤S205,若每一个可用服务均不符合预设条件,则执行步骤S206。
S205、将符合预设条件的可用服务中,哈希值最接近业务服务的哈希值的可用服务确定为替代服务。
结合前述预设条件的说明,步骤S205相当于是,在所有哈希值大于或等于目标业务服务的哈希值的可用服务中,选取哈希值最接近目标业务服务的哈希值的可用服务,作为替代服务。
S206、将所有可用服务中,哈希值最小的可用服务确定为替代服务。
步骤S203至步骤S206所述的过程,可以认为是,客户端利用一致性哈希算法,从分布式系统中的所有可用服务中,选取一个可用服务作为替代服务。
替代服务,可以认为是,用于代替步骤S201中发生故障的当前目标限流服务,继续对目标业务服务进行限流的限流服务,因此,步骤S205或步骤S206中选取的替代服务,也可以称为替代目标限流服务。
一致性哈希算法是一种现有的算法,利用该算法,客户端可以从分布式系统的多个可用的限流服务中,选取出一个可用的限流服务作为替代目标限流服务,使得替代目标限流服务代替步骤S201中的当前目标限流服务继续控制客户端对目标业务服务的访问。
需要说明的是,如前文所述,本公开提供的方法适用于分布式系统所连接的每一个客户端。也就是说,在目标业务服务对应的当前目标限流服务发生故障时,分布式系统连接的每一个需要访问目标业务服务的客户端均会执行步骤S203至步骤S206所述的过程,通过一致性哈希算法选择一个可用的限流服务作为替代目标限流服务,并且每一个客户端通过一致性哈希算法选取的替代目标限流服务均与其他客户端选取的替代目标限流服务相同,也就是说,通过一致性哈希算法,分布式系统所连接的所有客户端能够对选取哪一个可用的限流服务作为替代目标限流服务达成一致,从而选取同一个可用的限流服务作为替代目标限流服务。
举例来说,假设当前有A,B,C三个客户端都需要访问业务服务2,这三个客户端通过执行前述步骤S201和步骤S202,发现当前用于对业务服务2进行限流的限流服务1(即当前目标限流服务)发生故障,于是,客户端A,B,C分别执行一致性哈希算法,最终,这三个客户端均选取可用的限流服务3作为替代目标限流服务,也就是通过限流服务3控制客户端对业务服务2的访问。
进一步的,在后续还用其他客户端需要访问业务服务2时,其他客户端会沿用前一次的路径,仍然将访问请求发送至限流服务1,并且在发现限流服务1故障之后,与前述客户端一致,将限流服务3确定为新的业务服务2对应的限流服务,最终,在原本的限流服务1故障后,分布式系统所连接的每一个客户端均会将限流服务3确定用于对业务服务1进行限流的限流服务。
S207、向替代服务发送访问请求。
替代服务收到访问请求之后,就可以根据目标业务服务的流量阈值,对目标业务服务进行限流,具体的限流方法可以参考步骤S201中的相关说明。
替代目标限流服务的控制方法与前述的方法一致,即对目标业务服务的访问量过大(大于访问量阈值)时禁止当前请求访问的客户端访问目标业务服务,对目标业务服务的访问量较小时,则允许当前请求访问的客户端访问目标业务服务。
对于连接有多个客户端的分布式系统来说,要准确的实现对某个业务服务(如业务服务2)的限流,就需要分布式系统的每一个客户端在请求访问业务服务2时将访问请求发送至同一个限流服务,由此这个限流服务才能够感知针对这个业务服务的真实的访问量。
举例来说,若最近1分钟内有600个客户端访问业务服务2,但是这600个客户端中有200个客户端将访问请求发送至限流服务4,其他400个客户端将访问请求发送至限流服务3,则限流服务3统计得到的业务服务2的访问量为400,限流服务4统计出业务服务2的访问量为200,两个限流服务均无法统计出针对业务服务2的真实的访问量,相应的,也就无法准确的实现对业务服务2的限流。
而本方案在,在原先约定的当前目标限流服务发生故障后,所有需要访问目标业务服务的客户端,可以通过分别执行一致性哈希算法,将同一个可用的限流服务确定为替代目标限流服务,然后统一地将针对目标业务服务的访问请求发送至这个新选出的替代目标限流服务,使得替代目标限流服务能够代替原本的当前目标限流服务而准确的实现对目标业务服务的限流。
由此可以看出,本公开提供的分布式系统访问方法具有较高的可用性,部分限流服务发生故障并不会影响分布式系统正常运行和使用。
另一方面,由于本公开实施例中限流服务是基于一定的访问量阈值直接控制对目标业务服务的访问量,因此可以根据所有部署有目标业务服务的节点的承载能力,确定出一个总的访问量阈值,使得限流服务对访问量的控制更接近于目标业务服务的真实的承载能力,实现更准确的限流。
在前述实施例中,可以看出,客户端和限流服务之间需要通过发送/接收访问请求,接收/发送控制结果等方式进行通信,并且,可以理解的,这些通信过程的效率会影响分布式系统中限流服务的性能,也就是直接影响到限流服务能够控制多少个客户端对业务服务的访问,以及控制的效率。
在本公开实施例中,为了提高限流服务的性能,任意一个客户端在向任意一个限流服务(包括前述实施例中的当前目标限流服务和替代目标限流服务)发送访问请求时,均可以通过下述方式发送:
首先,可以自定义访问请求的消息格式,使得单个访问请求的数据量尽可能小,以缩短访问请求从客户端传输至限流服务的时间,具体的,在本公开中可以定义访问请求只包含需要访问的目标业务服务的标识,访问请求的大小,以及访问请求的类型(例如,如果是需要访问的目标业务服务是数据库服务,则访问请求的类型可以指定该访问请求是用于查询还是写入),除了上述消息以外不包含其他消息,另外其中目标业务服务的标识也采用数字格式的标识来替代现有的字符串格式的标识,通过上述方式最小化访问请求的数据量大小,使得发送访问请求的网络开销以及所需时间最小化。
在上述定义的基础上,客户端要发送访问请求时,可以根据预设的序列化协议protobuf对上述业务服务的标识、请求类型和数据量进行编码,从而将上述信息压缩为待发送消息。
protobuf是现有的一种语言无关、平台无关、可扩展的序列化协议,它可以广泛的适用于通信协议和数据存储中。在protobuf协议中,用户可以定义数据的结构,然后使用特殊生成的源代码在多种数据流中使用各种语言进行编写和读取结构数据,还可以在更新数据结构的同时不破坏由旧数据结构编译的已部署程序。
随后,利用高性能通信框架netty将待发送消息组装得到待发送的访问请求。在通信框架netty中预先定义了特定的数据包格式,通过调用这一通信框架可以按预先定义的数据包格式将待发送消息组装得到访问请求。
也就是说,本公开实施例所提供的访问方法将高性能通信框架netty作为客户端和限流服务之间的通信层。
Netty是现有的一种,基于Java语言的,开源NIO通信框架(即非阻塞I/O通信框架),Netty提供异步的、事件驱动的网络应用程序框架和工具,从而允许使用netty框架的用户快速开发高性能、高可靠性的服务器和客户端程序。
Netty框架可以支持数据报套接字和对链接逻辑的复用,并且比Java语言核心的接口(API)具有更好的吞吐量和较低的延时,消耗的资源也更少,这些特性使得应用netty作为通信框架的本方案具有较高的客户端和限流服务之间的通信效率,相应的也就提高了本公开实施例的访问方法的性能。
最后通过无延迟发送模式的传输控制协议向当前处于运行状态的服务发送访问请求。
客户端和限流服务之间的通信协议为TCP/IP协议,在本公开提供的访问中,可以预先将客户端运行的TCP协议中的发送模式这一参数设定为nodelay(即无延迟),使得客户端的TCP协议(即传输控制协议)在无延迟发送模式下工作,同时将限流服务运行的TCP协议中的backlog参数增大,使得限流服务能够处理更多的和客户端之间的连接。
Backlog参数用于控制限流服务的输入连接指示队列的最大队列长度,backlog的值越大,则限流服务的输入连接指示队列中存储的和客户端的连接就越多,相应的限流服务就能够处理越多的和客户端之间的连接。
在当前处于运行状态的服务发生故障时,客户端也可以在确定出替代服务之后,按上述发送访问请求的方法将访问请求发送至替代服务。
本公开实施例中,各个客户端均会通过一致性哈希算法对特定的目标业务服务确定出相同的目标限流服务,而保障每一个客户端均能够正确执行一致性哈希算法并选取出相同的目标限流服务的前提是,每一个客户端均能够获得分布式系统中的可用限流服务,并且每个客户端所获取的分布式系统中的可用的限流服务均相同。
也就是说,对于任意两个客户端A,B,客户端A所获取的可用的限流服务为限流服务1至8,那么客户端B所获取的限流服务也应该是限流服务1至8,这样才能确保每一个客户端通过一致性哈希算法所确定的目标限流服务相同。
因此,请参考图3,本公开实施例中每一个客户端均可以通过下述方法获取分布式系统中的可用限流服务并保障每个客户端获取的可用的限流服务均和其他客户端获取的可用的限流服务相同。
S301、按预设的查询周期向分布式系统的每一个服务发送查询请求。
步骤S301中的分布式系统的每一个服务,是指,分布式系统中的每一个限流服务。本实施例各个步骤中所涉及的服务,除特别指定的监控服务以外,均指代分布式系统中的限流服务。
其中,查询请求用于查询对应的限流服务的状态。
查询周期可以预先设定,例如可以设定查询周期为2分钟,相应的,每一个客户端就会每隔2分钟就向分布式系统的每一个限流服务发送状态查询请求,以便查询每一个限流服务的状态。
限流服务在收到状态查询请求后,可以向客户端反馈自身的状态,反馈的状态可以包括正常状态和异常状态两种。
S302、将每一个处于正常状态的服务确定为可用服务。
具体来说,对于每一个处于正常状态中的限流服务,若该限流服务在客户端发送状态查询请求之后的预设时间内(如发送查询请求后的20秒内)反馈自身的状态,且反馈的状态为正常状态,则客户端将这个限流服务标记为可用的限流服务,若这个限流服务为在预设时间内反馈自身的状态,或者反馈的状态为异常状态,则客户端可以确定这个限流服务不是可用的限流服务,也就是确定这个限流服务为不可用的限流服务。
S303、将可用服务记录于可用服务列表中。
在执行步骤S303时,若可用限流服务列表中包含不可用的限流服务,则客户端需要将不可用的限流服务从可用限流服务列表中删除。
需要说明的是,步骤S303具体是指,将步骤S302中确定的每一个可用的限流服务的标识记录在可用限流服务列表中,这样后续可以根据可用限流服务列表中的标识确定当前有哪些可用的限流服务。另外还需要及时地从可用限流服务列表中删除不可用的限流服务的标识。
S304、按预设的监控周期向分布式系统的监控服务发送可用服务列表。
其中,监控服务用于在任意两个客户端发送的可用限流服务列表不一致时输出告警信息。
例如,可以设定监控周期为1分钟,则客户端会每经过1分钟就向监控服务上报自身记录的可用限流服务列表,相应的,监控服务就会每经过1分钟就收到所有客户端发送的多个可用限流服务列表。
客户端和监控服务之间可以利用Raft协议来保障数据的一致性。
监控服务每次收到所有客户端发送的可用限流服务列表之后,就会对多个可用限流服务进行两两比对,在发现存在两个或以上互不相同的可用限流服务列表时,监控服务就可以输出告警信息,以提示有关人员及时进行维护。
可选的,为了减少监控服务所消耗的资源,也可以允许部分客户端的可用限流服务列表在短时间内不一致。例如,监控服务在某一次比对时发现两个客户端的可用限流服务列表不一致,则对这一现象及其发生时间进行记录,若这一现象持续了一段时间,例如,在初次发现这两个客户端的可用限流服务列表不一致之后,经过了5分钟,这两个客户端的可用限流服务列表仍然不一致,此时再输出告警信息以提示有关人员介入。
基于如图3所示的方法,在如图2所示的实施例中客户端在获取可用的限流服务时,可以直接从当前的可用限流服务列表中读取得到分布式系统的每一个可用的限流服务。
可选的,除了上述方法以外,还可以在分布式系统中设置一个配置中心,配置中心用于实时的监控并记录每一个限流服务的状态,相应的,客户端就不需要逐一查询每个限流服务的状态,而可以直接从配置中心读取得到当前处于正常状态的限流服务并将其确定为可用的限流服务。
在图2所示的实施例中,客户端通过执行一致性哈希算法选取替代目标限流服务的过程为;
利用哈希算法分别计算每一个可用的限流服务的标识和目标业务服务的标识,得到每一个可用的限流服务的哈希值和目标业务服务的哈希值;
筛选哈希值大于目标业务服务的哈希值的可用的限流服务;
当未筛选出哈希值大于目标业务服务的哈希值的可用的限流服务时,选取所有可用的限流服务中哈希值最小的可用的限流服务作为替代目标限流服务;
当筛选出哈希值大于目标业务服务的哈希值的可用的限流服务时,在筛选得到的可用的限流服务中,选取出哈希值最接近目标业务服务的哈希值的可用的限流服务作为替代目标限流服务。
上述选取替代目标限流服务的过程,可以参考如图4所示的一致性哈希算法的示意图理解:
假设客户端获取的可用的限流服务包括限流服务3至限流服务7,利用哈希算法逐一计算每个限流服务的标识,可以得到限流服务3至限流服务7的哈希值,依次记为hash-3至hash-7,将这5个哈希值投影在数轴上,可以得到如图4所示的多个区间。
同时,利用哈希算法计算目标业务服务的标识,可以得到目标业务服务的哈希值,记为hash-X。
然后,将hash-X投影至图4所示的数轴上,可以发现,前述5个可用的限流服务对应的哈希值中,hash-6和hash-7大于hash-X,之后,再从这两个限流服务的哈希值中确定出最接近于hash-X的哈希值,即hash-6,最终选取hash-6对应的可用的限流服务,即限流服务6作为替代目标限流服务。
在图4中,若hash-X投影在hahs-7之后,也就是所有可用的限流服务的哈希值均小于目标业务服务的哈希值,那么就在所有可用的限流服务中,选取哈希值最小的限流服务,即选取hash-1对应的限流服务作为替代目标限流服务。
从上述执行过程可以看出,对于任意两个客户端A和B,只要这两个客户端所获取的可用的限流服务一致,则这两个客户端利用可用的限流服务对应的哈希值确定的区间就完全相同,那么客户端A将目标业务服务的哈希值投影至数轴之后筛选得到的替代目标限流服务,和客户端B将目标业务服务的哈希值投影至数轴后筛选得到的替代目标限流服务就是同一个可用的限流服务,进一步的,只要每一个请求访问目标业务服务的客户端均所获取的可用的限流服务均相同,则所有客户端通过上述方法所确定的用于对目标业务服务限流的替代目标限流服务就是同一个限流服务,由此即可在多个客户端之间达成一致。
如前文所述,在图2所述的实施例的步骤S201中,当前目标限流服务也可以由客户端通过上述方式确定,具体过程不再详述。
最后,结合图5说明本公开实施例所提供的分布式系统的访问方法的具体执行过程:
假设分布式系统中有一个业务服务X,此外有N个限流服务,依次记为限流服务1至限流服务N。
客户端1在某一时刻需要访问业务服务X,于是向当前用于对业务服务X进行限流的限流服务1发送一个用于访问业务服务X的访问请求。
客户端1在向限流服务1发送了访问请求之后,经过预设时长(如1分钟)仍未收到限流服务1反馈的控制指令,于是判断出限流服务1发生故障。
判断出限流服务1发生故障后,客户端1可以获取分布式系统中每一个可用的限流服务的服务标识,假设限流服务2至限流服务N均可用,于是客户端1获取限流服务2至限流服务N的服务标识,同时客户端1还获取业务服务X的服务标识。
获取上述服务标识后,客户端1执行前述实施例中步骤S203至步骤S206所述的过程,利用一致性哈希算法从限流服务2至限流服务N选取出一个限流服务作为替代服务,假设选取的替代服务为限流服务4。
确定限流服务4为替代服务后,客户端1向限流服务4发送访问请求。
限流服务4收到访问请求后,判断当前业务服务X的访问量小于访问量阈值,于是向客户端1反馈允许访问指令,客户端1收到允许访问指令后,就可以访问业务服务X。
结合本公开实施例提供的分布式系统的访问方法,本公开实施例还提供一种分布式系统访问装置,该装置可以适用于每一个客户端,请参考图6,该装置可以包括如下单元:
发送单元601,被配置为执行向当前处于运行状态的服务发送访问请求。
其中,访问请求用于访问业务服务。
获取单元602,被配置为执行当根据访问请求确定当前处于运行状态的服务发生故障时,获取分布式系统的每一个可用服务。
计算单元603,被配置为执行对业务服务的服务标识和每一个可用服务的服务标识进行哈希计算,得到业务服务的哈希值和每一个可用服务的哈希值。
选取单元604,被配置为执行:
当至少一个可用服务符合预设条件时,将符合预设条件的可用服务中,哈希值最接近业务服务的哈希值的可用服务确定为替代服务;
其中,预设条件为:可用服务的哈希值大于或等于业务服务的哈希值;
当每一个可用服务均不符合预设条件时,将所有可用服务中,哈希值最小的限流服务确定为业务服务的替代限流服务。
发送单元601,被配置为执行向替代限流服务发送访问请求。
可选的,访问装置还包括:
查询单元605,被配置为执行按预设的查询周期向分布式系统的每一个服务发送查询请求。其中,查询请求用于查询服务的状态。
记录单元606,被配置为执行将每一个处于正常状态的服务确定为可用服务,并将可用服务记录于可用服务列表中。
其中,获取单元602获取分布式系统的每一个可用服务时,具体执行:
从可用服务列表读取得到分布式系统的每一个可用服务。
可选的,发送单元601还被配置为执行:
按预设的监控周期向分布式系统的监控服务发送可用服务列表;其中,监控服务用于在任意两个客户端发送的可用服务列表不一致时输出告警信息。
可选的,获取单元602当根据访问请求确定当前处于运行状态的服务发生故障时,获取分布式系统的每一个可用服务时,具体执行:
在发送访问请求之后的预设时长内,未收到当前处于运行状态的服务的控制指令,则获取分布式系统的每一个可用服务。
可选的,发送单元601向当前处于运行状态的服务发送访问请求时,具体执行:
对业务服务的标识、请求类型和数据量进行编码,得到待发送消息;
组装待发送消息得到访问请求;
向当前处于运行状态的服务发送访问请求。
本实施例提供的分布式系统的访问装置,其具体工作原理可以参考本申请任一实施例提供的分布式系统的访问方法,此处不再详述。
本方案通过目标限流服务统一限制客户端对目标业务服务的访问,因此可以根据特定的业务服务的承载能力进行更准确的限流,另外,在当前目标限流服务故障后客户端能通过一致性哈希算法一致地选取出替代目标限流服务,具有较高的可靠性。
图7是根据一示例性实施例示出的一种用于执行前述分布式系统访问方法的电子设备的结构图。例如,该电子设备700可以是移动电话,计算机,平板设备等终端设备,还可以是服务器设备。
参照图7,电子设备可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常用于执行电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在电子设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
多媒体组件708包括在电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行本公开任一实施例提供的录屏视频的处理方法。
其中,当上述电子设备700是移动电话,计算机,平板设备等终端设备,该电子设备可以包括图7所示的每一个组件,当上述电子设备是服务器设备,该电子设备可以只包括图7中的存储器704,电源组件706,处理组件702和通信组件716。
本公开实施例还提供一种计算机存储介质,用于存储计算机程序,该计算机程序被执行时,具体用于实现本公开任一实施例提供的分布式系统访问方法。
本公开实施例提供一种计算机程序产品,包括存储在计算机存储介质中的计算机指令,计算机指令被执行时,用于实现本公开任一实施例提供的分布式系统访问方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种分布式系统的访问方法,其特征在于,应用于客户端,所述访问方法包括:
向当前处于运行状态的服务发送访问请求;其中,所述访问请求用于访问业务服务;
当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务;
对所述业务服务的服务标识和每一个所述可用服务的服务标识进行哈希计算,得到所述业务服务的哈希值和每一个所述可用服务的哈希值;
当至少一个所述可用服务符合预设条件时,将符合所述预设条件的可用服务中,哈希值最接近所述业务服务的哈希值的可用服务确定为替代服务;其中,所述预设条件为:所述可用服务的哈希值大于或等于所述业务服务的哈希值;
当每一个所述可用服务均不符合所述预设条件时,将所有所述可用服务中,哈希值最小的可用服务确定为替代服务;
向所述替代服务发送所述访问请求。
2.根据权利要求1所述的访问方法,其特征在于,所述访问方法还包括:
按预设的查询周期向所述分布式系统的每一个服务发送查询请求;其中,所述查询请求用于查询所述服务的状态;
将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中;
其中,所述获取所述分布式系统的每一个可用服务,包括:
从所述可用服务列表读取得到所述分布式系统的每一个可用服务。
3.根据权利要求2所述的访问方法,其特征在于,所述将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中之后,还包括:
按预设的监控周期向所述分布式系统的监控服务发送所述可用服务列表;其中,所述监控服务用于在任意两个客户端发送的可用服务列表不一致时输出告警信息。
4.根据权利要求1所述的访问方法,其特征在于,所述当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务,包括:
在发送所述访问请求之后的预设时长内,未收到所述当前处于运行状态的服务的控制指令,则获取所述分布式系统的每一个可用服务。
5.根据权利要求1所述的访问方法,其特征在于,所述向当前处于运行状态的服务发送访问请求,包括:
对所述业务服务的标识、请求类型和数据量进行编码,得到待发送消息;
组装所述待发送消息得到所述访问请求;
向所述当前处于运行状态的服务发送所述访问请求。
6.一种分布式系统的访问装置,其特征在于,应用于客户端;所述访问装置包括:
发送单元,被配置为执行向当前处于运行状态的服务发送访问请求;其中,所述访问请求用于访问业务服务;
获取单元,被配置为执行当根据所述访问请求确定所述当前处于运行状态的服务发生故障时,获取所述分布式系统的每一个可用服务;
计算单元,被配置为执行对所述业务服务的服务标识和每一个所述可用服务的服务标识进行哈希计算,得到所述业务服务的哈希值和每一个所述可用服务的哈希值;
选取单元,被配置为执行:
当至少一个所述可用服务符合预设条件时,将符合所述预设条件的可用服务中,哈希值最接近所述业务服务的哈希值的可用服务确定为替代服务;其中,所述预设条件为:所述可用服务的哈希值大于或等于所述业务服务的哈希值;
当每一个所述可用服务均不符合所述预设条件时,将所有所述可用服务中,哈希值最小的可用服务确定为替代服务;
所述发送单元,被配置为执行向所述替代服务发送所述访问请求。
7.根据权利要求6所述的访问装置,其特征在于,所述访问装置还包括:
查询单元,被配置为执行按预设的查询周期向所述分布式系统的每一个服务发送查询请求;其中,所述查询请求用于查询所述服务的状态;
记录单元,被配置为执行将每一个处于正常状态的服务确定为可用服务,并将所述可用服务记录于可用服务列表中;
其中,所述获取单元获取所述分布式系统的每一个可用服务时,具体执行:
从所述可用服务列表读取得到所述分布式系统的每一个可用服务。
8.一种计算机存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如权利要求1至5任意一项所述的分布式系统的访问方法。
9.一种电子设备,其特征在于,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器被配置为执行所述计算机程序,具体用于实现如权利要求1至5任意一项所述的分布式系统的访问方法。
10.一种计算机程序产品,其特征在于,包括存储在计算机存储介质中的计算机指令,所述计算机指令被执行时,具体用于实现如权利要求1至5任意一项所述的分布式系统的访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535018.3A CN112671897B (zh) | 2020-12-22 | 2020-12-22 | 分布式系统的访问方法、装置、存储介质、设备和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535018.3A CN112671897B (zh) | 2020-12-22 | 2020-12-22 | 分布式系统的访问方法、装置、存储介质、设备和产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671897A true CN112671897A (zh) | 2021-04-16 |
CN112671897B CN112671897B (zh) | 2023-03-21 |
Family
ID=75407974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011535018.3A Active CN112671897B (zh) | 2020-12-22 | 2020-12-22 | 分布式系统的访问方法、装置、存储介质、设备和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671897B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113079182A (zh) * | 2021-04-21 | 2021-07-06 | 广东电网有限责任公司梅州供电局 | 一种网络安全控制系统 |
CN113489608A (zh) * | 2021-06-30 | 2021-10-08 | 四川虹美智能科技有限公司 | 业务异常的处理方法和装置 |
CN114513469A (zh) * | 2022-02-16 | 2022-05-17 | 中国工商银行股份有限公司 | 分布式系统的流量整形方法、装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286663A (zh) * | 2018-09-14 | 2019-01-29 | 郑州云海信息技术有限公司 | 一种分布式系统业务分配方法、装置及设备 |
US10275326B1 (en) * | 2014-10-31 | 2019-04-30 | Amazon Technologies, Inc. | Distributed computing system failure detection |
CN111030936A (zh) * | 2019-11-18 | 2020-04-17 | 腾讯云计算(北京)有限责任公司 | 网络访问的限流控制方法、装置及计算机可读存储介质 |
CN111131058A (zh) * | 2019-11-25 | 2020-05-08 | 泰康保险集团股份有限公司 | 访问量控制方法和装置 |
-
2020
- 2020-12-22 CN CN202011535018.3A patent/CN112671897B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10275326B1 (en) * | 2014-10-31 | 2019-04-30 | Amazon Technologies, Inc. | Distributed computing system failure detection |
CN109286663A (zh) * | 2018-09-14 | 2019-01-29 | 郑州云海信息技术有限公司 | 一种分布式系统业务分配方法、装置及设备 |
CN111030936A (zh) * | 2019-11-18 | 2020-04-17 | 腾讯云计算(北京)有限责任公司 | 网络访问的限流控制方法、装置及计算机可读存储介质 |
CN111131058A (zh) * | 2019-11-25 | 2020-05-08 | 泰康保险集团股份有限公司 | 访问量控制方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113079182A (zh) * | 2021-04-21 | 2021-07-06 | 广东电网有限责任公司梅州供电局 | 一种网络安全控制系统 |
CN113489608A (zh) * | 2021-06-30 | 2021-10-08 | 四川虹美智能科技有限公司 | 业务异常的处理方法和装置 |
CN114513469A (zh) * | 2022-02-16 | 2022-05-17 | 中国工商银行股份有限公司 | 分布式系统的流量整形方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112671897B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112671897B (zh) | 分布式系统的访问方法、装置、存储介质、设备和产品 | |
CN110633151B (zh) | 分布式发布消息集群分区平衡的方法、装置及存储介质 | |
US11500744B2 (en) | Method for primary-backup server switching, and control server | |
CN111800443B (zh) | 数据处理系统和方法、装置以及电子设备 | |
CN109121468A (zh) | 关于网络切片的接入方法及装置 | |
CN109918268B (zh) | 系统兼容方法、装置、设备和计算机可读存储介质 | |
US20180288155A1 (en) | Method and apparatus for managing a shared storage system | |
CN110337825B (zh) | 业务切换方法及装置 | |
CN112068876A (zh) | 一种进程管理方法、装置和系统 | |
CN109644353B (zh) | 配置调整方法、装置、电子设备和计算机可读存储介质 | |
CN113067757B (zh) | 信息发送和存储方法、装置和介质 | |
CN116248483A (zh) | 一种节点异常熔断方法、装置、电子设备及存储介质 | |
CN109948012B (zh) | 序列号的生成方法、装置及存储介质 | |
CN111984532A (zh) | 一种基于小程序的异常处理方法及装置 | |
CN116915830B (zh) | 请求处理方法、装置 | |
CN110716985B (zh) | 一种节点信息处理方法、装置及介质 | |
US20230327908A1 (en) | Operation method, invoking service method, device, and medium | |
CN109041101B (zh) | Wifi断流处理方法、终端、服务器及存储介质 | |
CN112667474B (zh) | 一种数据监控方法、装置、电子设备及存储介质 | |
CN110247828B (zh) | 识别码分配方法及装置 | |
CN110311968B (zh) | 流式加载文件的方法、装置及智能设备 | |
CN114358915A (zh) | 基于微服务架构的业务处理方法和系统 | |
CN113986648A (zh) | 执行于应用程序的方法、装置、电子设备及存储介质 | |
CN116016850A (zh) | 智能楼宇监控终端、监控系统及监控方法 | |
CN114006892A (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 |