欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于微服务的处理方法及装置、存储介质、电子装置独创技术25641字

基于微服务的处理方法及装置、存储介质、电子装置

2021-02-16 23:05:55

基于微服务的处理方法及装置、存储介质、电子装置

  技术领域

  本发明涉及微服务领域,具体而言,涉及一种基于微服务的处理方法及装置、存储介质、电子装置。

  背景技术

  SpringCloud为开发人员构建微服务架构提供了完整的解决方案。SpringCloud是若干个框架的集合,其包括spring-cloud-config、spring-cloud-bus等近20个子项目,它提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。

  由于SpringCloud基于Java语言进行开发,其他编程语言的服务无法直接接入到SrpingCloud微服务体系中。此外,在SpringCloud中服务模块之间只支持http协议传输,无法支持其他协议传输。同时在SpringCloud中的控制策略无法实现热更新,也无法满足实际变化的需求。

  针对相关技术中,微服务系统无法较好地满足多语言接入以及更新控制策略的问题,目前尚未存在有效的解决方案。

  发明内容

  本发明实施例提供了一种基于微服务的处理方法及装置、存储介质、电子装置,以至少解决相关技术中微服务系统无法较好地满足多语言接入以及更新控制策略的问题。

  根据本发明的一个实施例,提供了一种基于微服务的处理方法,获取由代理组件上报的所述服务信息;通过所述服务信息生成所述服务列表并将所述服务列表发送给所述代理组件;通过所述代理组件代理处理微服务中的服务请求;在本地维护所述服务请求的服务列表中的所述微服务的服务信息和控制策略;通过第三方调用接口调用所述控制策略信息并将所述控制策略信息下发到对应的所述代理组件

  根据本发明的另一个实施例,提供了一种基于微服务的处理系统,包括:获取模块,用于获取由代理组件上报的所述服务信息;发送模块,用于通过所述服务信息生成所述服务列表并将所述服务列表发送给所述代理组件;处理模块,用于通过所述代理组件代理处理微服务中的服务请求;维护模块,用于在本地维护所述服务请求的服务列表中的所述微服务的服务信息和控制策略;调用模块,用于通过第三方调用接口调用所述控制策略信息并将所述控制策略信息下发到对应的所述代理组件。

  根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

  根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

  通过本发明,由于采用代理组件代理处理服务请求,能够较好地实现服务之间的通信请求。采用代理组件在本地维护所述服务请求的服务列表和控制策略信息,能够有效地进行控制策略的更新。因此,可以解决微服务系统无法较好地满足多语言接入以及更新控制策略的问题,达到以较低资源占用率实现多语言多协议高可靠高并发接入和通过策略热更新以适应服务实际不断变化的流量需求的效果。

  附图说明

  此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

  图1是本发明实施例的基于微服务的处理方法的计算机设备的硬件结构框图;

  图2是根据本发明可选实施例的基于微服务的处理方法流程示意图;

  图3是根据本发明可选实施例的微服务系统中的组件结构框图;

  图4是根据本发明实施例的实际业务请求流程图;

  图5是根据本发明可选实施例的控制策略的管理、下发及获取流程图;

  图6是根据本发明实施例的基于微服务的处理装置结构示意图。

  具体实施方式

  下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

  需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

  实施例1

  本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机设备上为例,图1是本发明实施例的微服务系统的计算机设备的硬件结构框图。

  本申请实施例提供了一种计算机终端。如图1所示,计算机设备20可以包括:至少一个处理器201,例如CPU,至少一个网络接口204,用户接口203,存储器205,至少一个通信总线202,可选地,还可以包括显示屏206。其中,通信总线202用于实现这些组件之间的连接通信。其中,用户接口203可以包括触摸屏、键盘或鼠标等等。网络接口204可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通过网络接口204可以与服务器建立通信连接。存储器205可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器205包括本发明实施例中的flash。存储器205可选的还可以是至少一个位于远离前述处理器201的存储系统。如图1所示,作为一种计算机存储介质的存储器205中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。

  需要说明的是,网络接口204可以连接接收器、发射器或其他通信模块,其他通信模块可以包括但不限于WiFi模块、蓝牙模块等,可以理解,本发明实施例中计算机设备也可以包括接收器、发射器和其他通信模块等。

  处理器201可以用于调用存储器205中存储的程序指令,并使计算机设备20执行基于微服务的处理的操作。

  如图2所示,在本实施例中提供了一种基于微服务的处理方法,具体包括如下步骤:

  步骤S202,获取由代理组件上报的所述服务信息;

  步骤S204,通过所述服务信息生成所述服务列表并将所述服务列表发送给所述代理组件;

  步骤S206,通过所述代理组件代理处理微服务中的服务请求;

  步骤S208,在本地维护所述服务请求的服务列表中的所述微服务的服务信息和控制策略;

  步骤S210,通过第三方调用接口调用所述控制策略信息并将所述控制策略信息下发到对应的所述代理组件。

  通过上述步骤,由于采用代理组件代理处理服务请求,能够较好地实现服务之间的通信请求。采用代理组件在本地维护所述服务请求的服务列表和控制策略信息,能够有效地进行控制策略的更新。因此,可以解决微服务系统无法较好地满足多语言接入以及更新控制策略的问题,达到以较低资源占用率实现多语言多协议高可靠高并发接入和通过策略热更新以适应服务实际不断变化的流量需求的效果。

  在上述步骤S202中获取得到由所述代理组件上报的服务信息,通过上报本地业务服务信息到所述微服务的注册中心。同时所述代理组件定时向微服务的注册中心拉取的相关请求目前服务信息列表保存到共享内存中。

  在上述步骤S204中通过所述服务信息生成所述服务列表之后,并将所述服务列表发送给所述代理组件。

  在上述步骤S206中通过所述代理组件代理相关服务之间的请求,并且可以基于多协议传输。在本地维护相关服务列表、相关控制策略信息,从而根据策略控制信息实现对服务的控制。

  在上述步骤S206中代理相关服务之间的请求,并且可以基于多协议传输。在本地维护相关服务列表、相关控制策略信息,从而根据策略控制信息实现对服务的控制。

  在上述步骤S208中在本地维护所述服务请求的服务列表中的所述微服务的服务信息以及控制策略。

  在上述步骤S210中为了配合微服务系统实现相应的功能,管理相关服务的负载均衡、限流、熔断降级、灰度发布、蓝绿发布、金丝雀发布等策略,同时将相关控制策略下发到对应的所述代理组件中。

  作为本发明可选的实施方式,通过所述代理组件代理处理微服务中的服务请求包括:所述代理组件代理处理微服务中第一服务向第二服务发送第一服务请求,其中,所述第一服务包括:采用第一编程语言编写的Web服务,所述第二服务包括:采用第二编程语言编写的Web服务。

  具体地,在兼顾原有的http协议同时可以支持grpc websocket协议传输,满足微服务下多样的协议传输需求。可以兼容原有微服务体系,从而实现了非java语言的服务接入。

  作为本发明可选的实施方式,在所述服务请求包括由第一服务向第二服务发送的第一服务请求的情况下,所述通过所述代理组件代理处理微服务中的服务请求包括:

  接收所述第一服务到所述第二服务的控制策略信息请求;根据所述控制策略信息请求,保存所述控制策略信息请求中携带的控制策略信息;在获取的本地的第一服务列表中包含第一服务的情况下,将所述控制策略信息下发到所述第一服务的代理组件。

  具体地,对于控制策略信息作为SDK会集成到所述注册中心,以便共享服务列表信息。所述控制策略信息通过策略组件接收并存储控制策略后会在查询本地的相关源目标服务信息,并将该策略同步给相应业务的代理组件。同时所述代理组件会定时向所述策略组件拉取源服务到相关目标服务的控制策略信息,用于维护在本地共享内存中。

  优选地,在所述服务请求包括由第一服务向第二服务发送的第一服务请求的情况下,所述通过所述代理组件代理处理微服务中的服务请求包括:代理接收所述第一服务请求,其中,所述服务请求中携带有所述第二服务的标识信息;根据所述标识信息匹配所述第二服务的目标服务地址,其中,所述目标服务地址在本地存储;根据所述目标服务地址将所述服务请求透传到所述第二服务,以指示所述第二服务响应所述服务请求。即当第一服务向第二服务请求,第一服务请求透传到代理组件,在代理组件获取控制策略,并转发到对应服务器下的代理组件,通过所述代理组件将请求透传到第二服务,在第二服务正常响应服务请求。

  在上述步骤中,当所述代理组件接收到业务请求时,会解析请求头中的目标服务名,查找本地共享内存中匹配该服务名的服务列表信息,通过本地控制策略筛选算法选出某一个目标服务地址进行请求透传,从而实现了多语言,多协议的微服务接入。

  具体实施时,在所述服务请求包括由第一服务向第二服务发送的第一服务请求的情况下,根据所述目标服务地址将所述服务请求透传到所述第二服务之后,还包括:获取本地缓存的第二服务列表信息;在所述第二服务列表信息中找到第二服务且在所述代理组件获取的第一策略不满足第一策略条件的情况下,获取第二策略;在所述第二服务列表信息中找到第二服务且在所述代理组件获取的第一策略满足第一策略条件的情况下,响应异常到所述第一服务;在所述代理组件获取第二策略不满足第二策略条件的情况下,获取第三策略;在所述代理组件获取第二策略满足第二策略条件的情况下,响应异常到所述第一服务。

  可选地,所述策略组件包括如下之一:负载均衡策略、限流控制策略、灰度发布策略、金丝雀发布策略、服务降级策略,所述第一策略包括熔断降级策略、所述第二策略包括限流控制策略,所述第三策略包括灰度和负载均衡策略。限流、熔断降级、负载均衡、灰度、蓝绿、金丝雀等控制策略可以做热更新,已适应服务实际不断变化的流量需求等。

  作为本发明可选的实施方式,通过所述代理组件代理处理微服务中的服务请求之后,还包括:对第一服务或者第二服务进行心跳保活,其中,所述第一服务或第二服务之间的传输协议至少包括以下之一:http、grpc、websocket传输协议。

  通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

  实施例2

  本申请实施例中提供了基于微服务的处理系统,如图6所示,包括:

  获取模块62,用于获取由代理组件上报的所述服务信息;

  发送模块64,用于通过所述服务信息生成所述服务列表并将所述服务列表发送给所述代理组件;

  处理模块66,用于通过所述代理组件代理处理微服务中的服务请求;

  维护模块68,用于在本地维护所述服务请求的服务列表中的所述微服务的服务信息和控制策略;

  调用模块610,用于通过第三方调用接口调用所述控制策略信息并将所述控制策略信息下发到对应的所述代理组件。

  在上述获取模块62中获取得到由所述代理组件上报的服务信息,通过上报本地业务服务信息到所述微服务的注册中心。同时所述代理组件定时向微服务的注册中心拉取的相关请求目前服务信息列表保存到共享内存中。

  在上述发送模块64中通过所述服务信息生成所述服务列表之后,并将所述服务列表发送给所述代理组件。

  在上述处理模块66中通过所述代理组件代理相关服务之间的请求,并且可以基于多协议传输。在本地维护相关服务列表、相关控制策略信息,从而根据策略控制信息实现对服务的控制。

  在上述处理模块66中代理相关服务之间的请求,并且可以基于多协议传输。在本地维护相关服务列表、相关控制策略信息,从而根据策略控制信息实现对服务的控制。

  在上述维护模块68中在本地维护所述服务请求的服务列表中的所述微服务的服务信息以及控制策略。

  在上述调用模块610中为了配合微服务系统实现相应的功能,管理相关服务的负载均衡、限流、熔断降级、灰度发布、蓝绿发布、金丝雀发布等策略,同时将相关控制策略下发到对应的所述代理组件中。

  需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

  为了更好的理解上述微服务系统的实现流程,以下结合优选实施例对上述技术方案进行解释说明,但不用于限定本发明实施例的技术方案。

  本发明优选实施例中,可以解决微服务系统无法较好地满足多语言接入以及更新控制策略的问题,达到以较低资源占用率实现多语言多协议高可靠高并发接入和通过策略热更新以适应服务实际不断变化的流量需求的效果。

  图3是根据本发明实施例的微服务系统的结构框图,如图3所示,包括:代理组件30、注册中心32、策略组件34、代理组件A301、代理组件B302、代理组件C303、服务A、服务B以及服务C。

  所述注册中心32是基于Netflix开发的服务发现框架,本身是一个基于REST的服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

  所述策略组件34是一个独立于平台的组件,可以通过control plane api管理相关服务的负载均衡、限流、熔断降级、灰度发布、蓝绿发布、金丝雀发布等策略,同时将相关策略下发到对应的代理组件30。

  所述代理组件A301、代理组件B302、代理组件C303基于Nginx+lua开发,可以兼容Nginx的所有优点,用于代理相关service服务的请求。可以基于http,grpc,websocket协议传输。

  需要注意的是,本发明实施例中主要使用Nginx+lua编写的proxy替换原有的Spring Cloud Netflix Sidecar,满足多协议的同时又兼顾sidecar的性能。

  所述代理组件A301、代理组件B302、代理组件C303在本地维护相关服务列表、相关控制策略信息,需要实时从注册中心32,略组件34获取相关信息,从而实现对服务的负载均衡,限流控制,灰度发布,金丝雀发布,服务降级等控制。

  所述代理组件A301、代理组件B302、代理组件C303还需要对Service服务A/B/C进行保活监测。

  所述服务A/B/C是实际业务模块,需要发心跳保活到代理组件30,可以是不同语言编写的web服务,传输协议可以是http,grpc,websocket。

  图4是根据本发明实施例的实际业务请求流程图,NginxSidecarA是指代理组件A,NginxSidecarB是指代理组件B,当NginxSidecar接收到业务请求时,会解析请求头中的目标服务名,查找本地共享内存中匹配该服务名的服务列表信息,通过本地控制策略筛选算法选出某一个目标服务地址进行请求透传,从而实现了多语言、多协议的JavaSpringCloud微服务体系接入,基于Nginx天然的高可靠,高并发,低资源占用,极大的提升了接入稳定性和性能。具体步骤包括:

  步骤S400,SA(c++编写)基于GRPC向SB(golang编写)请求。

  步骤S402,SA请求透传到NginxSidecarA,NginxSidecarA接收SA请求。

  步骤S404,NginxSidecarA获取本地缓存SB服务列表信息,

  步骤S406,是否包含SB服务信息,如果未找到SB服务信息,直接响应异常码给SA。

  步骤S408,NginxSidecarA获取本地熔断策略并判断是否满足熔断策略,若当前已满足熔断条件,则服务直接降级,响应异常码给SA。

  步骤S410,NginxSidecarA获取限流策略并的判断是否满足限流策略,若当前已满足限流条件,则直接容易响应异常码给SA。

  步骤S412,NginxSidecarA获取本地灰度,负载均衡等策略,转发到对应服务器下的NginxSidecar服务。

  步骤S414,NginxSideCarB将请求透传到SB服务,NginxSideCarB接收SA请求。

  步骤S416,SB接收SA请求服务正常响应业务。

  上述的NginxSidecar基于Nginx+lua编写,会定时发请求获取后端业务服务的保活状态及服务信息(包括服务名、对外ip端口、负载、流量等),同时上报本地业务服务信息到注册中心。还需要定时向注册中心拉取的相关请求目前服务信息列表保存到Nginx共享内存中。

  图5是根据本发明可选实施例的控制策略的管理、下发及获取流程图,具体步骤包括:

  步骤S500,业务平台通过control plane api下发创建SA到SB的控制策略请求到policy策略组件。

  步骤S502,Policy策略组件将该控制策略保存到数据及缓存,并在成功后响应成功给业务服务。

  步骤S504,Policy策略组件获取本地的SA列表信息。

  步骤S506,是否包含SA服务信息,如果不包含SA信息,直接结束。

  步骤S508,Policy策略组件将该策略下发到每个SA服务的NginxSidercar。

  步骤S510,NginxSidecar接收Policy策略组件请求。

  步骤S512,NginxSidecar保存该策略到本地缓存。

  步骤S514,结束。

  所述Policy策略组件作为SDK会集成到注册中中,以便共享服务列表信息,外部管理服务通过RestApi发送创新更新修改删除等控制策略(包括负载均衡,蓝绿,灰度,限流降级,金丝雀等)请求到Policy策略组件,Policy策略组件存储后会查询本地的相关源目标服务信息,并将该策略同步给相应业务的NginxSidecar,同时NginxSidecar会定时向Policy策略组件拉取源服务到相关目标服务的控制策略信息,维护在本地共享内存中。

  本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

  可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

  S1,增设代理组件,所述代理组件被配置为代理处理服务请求,其中,所述服务请求包括微服务中的第一服务和第二服务之间的通信请求;

  S2,所述代理组件,还被配置为在本地维护所述服务请求的服务列表和控制策略信息,其中,所述服务列表中包括微服务的服务信息,所述控制策略信息包括微服务的控制策略。

  可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:

  S1,增设注册中心,所述注册中心,被配置为用于获取由所述代理组件上报的所述服务信息,以及基于所述服务信息生成所述服务列表并将所述服务列表发送给所述代理组件;

  S2,增设策略组件,所述策略组件,被配置为通过第三方调用接口调用所述控制策略信息并将所述控制策略信息下发到对应的所述代理组件。

  可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

  本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

  可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

  可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

  S1,增设代理组件,所述代理组件被配置为代理处理服务请求,其中,所述服务请求包括微服务中的第一服务和第二服务之间的通信请求;

  S2,所述代理组件,还被配置为在本地维护所述服务请求的服务列表和控制策略信息,其中,所述服务列表中包括微服务的服务信息,所述控制策略信息包括微服务的控制策略。

  可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

  显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

  以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

《基于微服务的处理方法及装置、存储介质、电子装置.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)