一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种报文处理方法及装置与流程

2021-10-19 20:33:00 来源:中国专利 TAG:报文 说明书 装置 通信 方法


1.本说明书涉及通信技术领域,尤其涉及一种报文处理方法及装置。


背景技术:

2.微服务架构是将软件系统分解为自主模块,自主模块可以独立部署,通过轻量级的、与语言无关的方式进行通信,共同实现业务目标。典型的微服务框架实现诸如:kubernetes。
3.kubernetes,简称k8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。
4.传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
5.新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
6.在网络设备的运行过程中,网络设备内部,其他设备与网络设备之间都会有大量通信的需求。每个通信请求都会消耗网络设备的运行资源,包括cpu(central processing unit,简称cpu)、内存等等,为了能够保证网络设备的系统能够在一个稳定的环境下运行,不被突然出现的大量通信请求挤兑资源,网络设备往往会对和外部设备的通信请求做限速处理,我们把网络设备能够在一定时间内处理的消息数量控制称为“消息窗口”。
7.在集中式单系统上,消息窗口的实现有很多,诸如令牌桶机制,令牌桶中有初始容量,每来一个请求从令牌桶中获取一个令牌,并且在一定时间间隔中可以生成令牌,多余的令牌被丢弃。这些机制在集中式单系统场景下运行良好,但到了分布式环境下存在诸多问题,以令牌桶机制为例:
8.微服务环境下,为了避免单点故障和负载均衡,微服务往往是由多个微服务实例来承载的。如果保持集中式单系统的机制,每个令牌桶机制只能对自己微服务实例下的消息做限速,无法从全局有效控制整个产品的消息速度。


技术实现要素:

9.为克服相关技术中存在的问题,本说明书提供了一种报文处理方法及装置。
10.根据本说明书实施例的第一方面,提供一种报文处理方法,应用于微服务系统中的任一微服务实例,所述方法包括:
11.当第一微服务实例接收到第一类型的报文时,查询缓存微服务实例,所述缓存微
服务实例中存储有用于表征微服务系统中的微服务实例经过限速后当前允许处理的报文的标识;
12.若查询所述缓存微服务实例中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,则将当前第一微服务实例接收到的第一类型的报文的标识写入缓存微服务实例。
13.可选的,所述方法还包括:
14.缓存微服务实例中存储的所述当前允许处理的报文的标识在超过预设的生存时间被老化。
15.可选的,所述方法还包括:
16.若查询所述缓存微服务实例经过限速后当前允许处理的的第一类型的报文超过预设的限速值时,则所述第一微服务实例不处理当前接收到的第一类型的报文。
17.可选的,所述方法还包括:
18.所述报文的标识包括前缀部分和后缀部分,所述同一类型的报文对应的前缀部分相同,同一类型的不同报文对应的后缀部分不同。
19.可选的,则所述第一微服务实例不处理当前第一类型的报文,包括:
20.所述微服务实例拒绝处理所述第一类型的报文,
21.或者所述微服务实例挂起所述第一类型的报文直至查询所述缓存微服务实例中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,对接收到的第一类型的报文进行处理。
22.根据本说明书实施例的第二方面,提供一种报文处理装置,所述装置包括:缓存微服务实例模块以及用于实现应用功能的多个微服务实例模块;
23.其中,当多个微服务实例中的第一微服务实例模块接收到第一类型的报文时,查询缓存微服务实例模块,所述缓存微服务实例模块中存储有用于表征微服务系统中的微服务实例模块经过限速后当前允许处理的报文的标识;
24.若查询所述缓存微服务实例模块中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,则将当前第一微服务实例模块接收到的第一类型的报文的标识写入缓存微服务实例模块。
25.可选的,缓存微服务实例模块中存储的所述当前允许处理的报文的标识在超过预设的生存时间被老化。
26.可选的,若查询所述缓存微服务实例模块经过限速后当前允许处理的的第一类型的报文超过预设的限速值时,则所述第一微服务实例模块不处理当前接收到的第一类型的报文。
27.可选的,所述报文的标识包括前缀部分和后缀部分,所述同一类型的报文对应的前缀部分相同,同一类型的不同报文对应的后缀部分不同。
28.可选的,所述第一微服务实例模块拒绝处理所述第一类型的报文,
29.或者所述第一微服务实例模块挂起所述第一类型的报文直至查询所述缓存微服务实例模块中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,对接收到的第一类型的报文进行处理。
30.本说明书的实施例提供的技术方案可以包括以下有益效果:通过缓存微服务实例
存储用于表征微服务系统中的微服务实例经过限速后当前允许处理的报文的标识,如果根据该报文的标识确定经过限速后当前允许处理的报文未超过预设的限速值,则允许继续写入报文的标识,后续起到对报文的处理速度进行限速的目的。无需另外设置令牌桶微服务,降低了整个微服务系统的资源消耗,避免了采用令牌桶微服务自身故障而带来的业务中断的问题。
31.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
32.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
33.图1是采用令牌桶的方式对消息做限速的架构示意图;
34.图2是本实施例提供的微服务系统的架构示意图;
35.图3是本实施例中提供的报文处理方法的流程图;
36.图4是本说明书另一实施例提供的报文处理方法的流程图;
37.图5是本说明书提供的微服务处理系统的架构示意图;
38.图6是本说明书提供的控制器的结构示意图。
具体实施方式
39.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
40.一个微服务一般完成某个特定的功能,某一特定功能的微服务,由多个微服务实例构成,每个微服务实例,就是在微服务框架下,实现该特定功能的应用的多个副本,每个应用副本以容器方式运行,每个副本是一个微服务实例。
41.为了解决微服务架构下对接收到的报文进行限速,在一种可以实现的方式中,可以采用令牌桶的方式。
42.图1示出了一种采用令牌桶的方式从全局的视角对消息做限速的方案。
43.如图1所示,实现某一应用功能的微服务a由微服务实例11、微服务实例21、微服务实例31实现。在该微服务架构下,还包括缓存微服务实例以及令牌桶微服务实例,缓存微服务实例用于存储微服务的标识和该微服务对应从令牌桶中申请到的令牌的数量,缓存微服务可以为需要令牌桶服务的微服务提供访问接口,需要使用令牌桶服务的微服务实例,从缓存微服务实例中读取并修改缓存微服务实例中的令牌数量,修改成功后,表明该微服务实例对应的微服务已经从令牌桶微服务中申请到了所需要数量的令牌,进而可以开始处理一定数量的报文,其中,申请到的令牌的数量和能够处理的报文的数量存在对应关系,具体如何对应本实施例中不加以限定。令牌桶中的剩余令牌的数量已经不足以满足微服务的需求,则微服务拒绝或者挂起对报文的处理。本实施例中,令牌桶微服务实例用于实现令牌桶的功能,每一个微服务可以对应一个令牌桶。
44.上面的实施方式中,需要一个专门的微服务提供令牌桶服务,负责全局令牌的生产,同时为了避免令牌桶微服务的单点故障,一般来说,还会需要一个备份的令牌桶微服务,实现起来比较复杂。
45.此外,对于不同的微服务,例如,若存在微服务b,也需要进行限速,那么令牌桶微服务需要针对不同的微服务的需求来生产令牌,因此,整个系统的微服务都需要与令牌桶微服务耦合才行,这样增加了开发和测试的难度。
46.同时,在这种实现方式中,需要缓存微服务需要先获取到令牌,再修改缓存,然后才能继续接收消息。如果多个微服务实例同时访问缓存微服务,需要对并发的机制做特殊的设计才行,增加了系统设计的复杂度。
47.本说明书中的另一实施例中提供了一种报文处理方法,该报文处理方法可以应用于微服务系统中的任一微服务实例。图2示出了本实施例中示出的一微服务系统,该微服务系统中包括实现某一应用功能的微服务c和缓存微服务;其中,该微服务c由多个微服务实例1、2、3构成。应当理解的是,该微服务系统中还可以包括实现其他功能的微服务,缓存微服务可以为多个微服务提供缓存服务,也可以实现某一功能的微服务对应一个缓存微服务。本实施例中的缓存微服务用于存储微服务系统中微服务实例经过限速后当前允许处理的报文的标识。
48.图3示出了本实施例中提供的报文处理方法的流程图,为了更好的说明该方法,本实施例以图2示出的架构为例,进行说明。具体的,该方法包括:
49.步骤301,当微服务实例1接收到第一类型的报文时,查询缓存微服务实例,缓存微服务实例中存储用于表征微服务系统中的微服务实例经过限速后当前允许处理的报文的标识。
50.步骤303,若查询所述缓存微服务实例中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,则将当前微服务实例1接收到的第一类型的报文的标识写入缓存微服务实例。
51.本实施例中以实现某一应用功能的微服务a对应一个缓存微服务为例进行说明。
52.当微服务a需要对某一类型的消息进行限速的时候,可以通过缓存微服务实例做全局限速。举例来说,若需要对第一类型的报文进行限速,若微服务实例1接收到第一类型的报文时,可以查询缓存微服务实例,缓存微服务实例中存储了当前微服务系统中的微服务实例经过限速后当前允许处理的报文的标识。
53.如果查询缓存微服务实例中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,说明当微服务a对应的微服务实例1~3处理第一类型报文的能力未达到各个微服务实例上限值,此时可以将当前微服务实例1接收到的第一类型的报文的标识写入缓存微服务实例。进而后续可以便于其他微服务实例在接收到报文时,根据缓存微服务实例中存储的第一类型的报文的标识的数量确定还有多少第一类型的报文在限速的范围内当前允许处理。
54.在将第一类型的报文的标识写入缓存微服务的同时,可以将接收到的第一类型的报文存储至预设的存储空间中,等待后续的处理。对于后续如何对报文进行处理,本实施例不加以限定。
55.其中,预设的限速值可以取值为微服务a对应的多个微服务实例1~3可以处理第
一类型报文的最大值。例如,微服务实例1~3总共每秒最大可以处理20个报文,可以将预设的限速值取20。
56.在一种实现方式中,可以实现某一功能的微服务a对应一个缓存微服务,也可以实现不同功能的微服务,例如微服务a和微服务b对应一个缓存微服务。
57.本实施例提供的报文处理方法,通过缓存微服务实例存储用于表征微服务系统中的微服务实例经过限速后当前允许处理的报文的标识,如果根据该报文的标识确定经过限速后当前允许处理的报文未超过预设的限速值,则允许继续写入报文的标识,后续起到对报文的处理速度进行限速的目的。无需另外设置令牌桶微服务,降低了整个微服务系统的资源消耗,避免了采用令牌桶微服务自身故障而带来的业务中断的问题。
58.在上述实施例的基础上,本实施例对于缓存微服务中存储的经过限速后当前允许处理的报文报文的标识加以介绍。
59.在一种可选的实施方式中,报文的标识可以包括前缀部分和后缀部分,同一类型的报文对应的前缀部分相同,同一类型的不同报文对应的后缀部分不同。具体的,可以如图2所示,其中,keyx为前缀部分,同一类型的报文可以采用相同的前缀。这样可以通过与限速的报文类型对应的前缀的数量进行统计,确定出未完成处理的该类型的报文的数量。通过该种实施方式可以对某一类型的报文进行限速。
60.在另一种可选的实施方式中,报文的标识可以包括前缀部分和后缀部分,同一微服务对应的微服务实例接收的报文对应的前缀部分相同,不同微服务对应的微服务实例接收的报文对应的前缀部分不同。通过该种方式,可以对某一微服务处理的报文进行限速。
61.例如,对于微服务a对应的微服务实例1~3接收到的报文对应的前缀相同,对于微服务a和微服务b的微服务实例接收到的报文对应的前缀不同。
62.这两种实施方式中,只要微服务实例接收到报文,并且缓存微服务实例存储的经过限速后当前允许处理的报文的标识小于等于预设限速值时,就可以将对应的报文的标识写入,很好的规避了多个微服务实例同时访问缓存微服务带来的并发访问的问题和性能瓶颈。
63.在上述实施例的基础上,可以对缓存微服务实例中存储的未处理完成的报文的标识设置生存时间,即超过预设的生存时间该条记录会被老化。例如,微服务实例1~3如果1秒钟可以总共处理20个报文,那么可以设置写入的报文的标识的老化时间为1秒钟。
64.图4为本说明书另一实施例提供的报文处理方法的流程示意图,如图4所示,在图3所示的方法的基础上,该方法还可以包括:
65.步骤305,若查询缓存微服务实例经过限速后当前允许处理的报文的第一类型的报文超过预设的限速值时,则第一微服务实例不处理当前接收到的第一类型的报文。
66.如果微服务实例1查询到的缓存微服务实例经过限速后当前允许处理的报文的第一类型的报文超过预设的限速值时,说明在当前已经达到了微服务实例处理报文的极限值,因此,此时不对接收到的报文进行处理。
67.具体的,不对接收到的报文进行处理可以存在以下几种实施方式:
68.情况1:微服务实例1拒绝处理所述第一类型的报文。即将第一类型的报文的丢弃。
69.情况2:微服务实例1挂起所述第一类型的报文直至查询所述缓存微服务实例中经过限速后当前允许处理的报文的第一类型的报文小于或等于预设的限速值时,对接收到的
第一类型的报文进行处理。即微服务实例1只是暂时不对接收到的第一类型的报文进行处理,一直等待,直至缓存微服务实例中经过限速后当前允许处理的报文的第一类型的报文小于或等于预设的限速值,才对报文进行处理,同时执行步骤303中的将当前微服务实例1接收到的第一类型的报文的标识写入缓存微服务实例。
70.在上述实施例的基础上,本实施例提供的了一种报文处理装置,如图5所示,该装置包括:
71.缓存微服务实例模块401以及用于实现应用功能的多个微服务实例模块402~404;应当理解的是,本实施例提供的图4中实现应用功能的微服务实例模块仅以示出的402~404为例进行说明,在实际情况中,实现应用功能的微服务实例模块的数量可以比3个多,也可以比三个少,图5的示例不应当理解为是对数量的限制。
72.其中,当所述多个微服务实例模块中的微服务实例模块402接收到第一类型的报文时,查询缓存微服务实例模块401,所述缓存微服务实例模块401中存储有用于表征微服务系统中的微服务实例模块经过限速后当前允许处理的报文的标识;
73.若查询所述缓存微服务实例模块401中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,则将当前微服务实例模块402接收到的第一类型的报文的标识写入缓存微服务实例模块。
74.可选的,缓存微服务实例模块401中存储的所述当前允许处理的报文的标识在超过预设的生存时间被老化。
75.可选的,若查询所述缓存微服务实例模块401经过限速后当前允许处理的的第一类型的报文超过预设的限速值时,则所述微服务实例模块402不处理当前接收到的第一类型的报文。
76.可选的,所述报文的标识包括前缀部分和后缀部分,所述同一类型的报文对应的前缀部分相同,同一类型的不同报文对应的后缀部分不同。
77.可选的,针对微服务实例模块402不处理当前接收到的第一类型的报文可以有以下两种实现方式:
78.微服务实例模块402拒绝处理所述第一类型的报文,
79.或者微服务实例模块402挂起所述第一类型的报文直至查询所述缓存微服务实例模块401中经过限速后当前允许处理的第一类型的报文小于或等于预设的限速值时,对接收到的第一类型的报文进行处理。
80.本实施例提供的报文处理装置,通过缓存微服务实例模块存储用于表征微服务系统中的微服务实例模块经过限速后当前允许处理的报文的标识,如果根据该报文的标识确定经过限速后当前允许处理的报文未超过预设的限速值,起到对报文的处理速度进行限速的目的。无需另外设置令牌桶微服务,降低了整个微服务系统的资源消耗,避免了采用令牌桶微服务自身故障而带来的业务中断的问题。
81.本公开还提供一种控制器60,图6为本公开另一实施例提供的控制器的结构示意图,如图6所示,该控制器60包括处理器601和存储器602,
82.所述存储器602用于存储程序指令,所述处理器601用于调用所述存储器中的存储的程序指令,当所述处理器601执行所述存储器602存储的程序指令时,用于执行上述实施例中提供的报文处理方法。另外,为了更好的说明本公开,在下文的具体实施方式中给出了
众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
83.在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
84.另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
85.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜