本申请涉及计算机领域,尤其涉及一种服务请求的传输方法和装置。
背景技术:
现有的跨语言微服务架构方案通常为不同编程语言开发实现一套基础框架,不同的服务基于不同的语言实现,如lua、java、go,每种语言需要提供基础框架,服务之间基于grpc协议进行网络通信,从而实现跨语言调用。现有架构方案,基础框架的新功能开发和功能优化要求不同编程语言的基础框架同步支持,另外,基础框架代码和业务代码耦合,要求开发人员同时熟悉业务需求和基础框架。可见,不同的服务使用不同的编程语言,需要开发和维护不同编程语言版本的基础框架,大大增加了基础框架开发和维护的人力成本,也增加了开发人员引入新兴编程语言的难度。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本申请提供了一种服务请求的传输方法和装置,以至少解决相关技术中微服务架构中对基础框架的开发难度大,维护成本高的技术问题。
根据本申请实施例的一个方面,提供了一种服务请求的传输方法,包括:
通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
根据本申请实施例的另一方面,还提供了一种微服务架构,包括:多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,其中,
所述基础框架进程,用于接收目标服务请求,将所述目标服务请求转发至目标业务进程,并转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应,其中,所述目标服务请求用于请求调用所述目标业务进程;
所述业务进程,用于对发送给所述每个服务模块的服务请求进行处理。
根据本申请实施例的另一方面,还提供了一种服务请求的传输装置,包括:
接收模块,用于通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
第一转发模块,用于通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
第二转发模块,用于通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
可选地,所述接收模块包括以下之一:
第一接收单元,用于通过所述第一基础框架进程接收所述第一业务进程发送的第一服务请求,其中,所述第一服务请求用于请求调用第二业务进程,第二服务模块中部署了所述第二业务进程和第二基础框架进程,所述第二基础框架进程用于对所述第二业务进程的服务请求进行转发,所述第二业务进程用于对发送给所述第二服务模块的服务请求进行处理;
第二接收单元,用于通过所述第一基础框架进程接收第三基础框架进程采用目标传输协议传输的第二服务请求,其中,所述第二服务请求用于请求调用所述第一业务进程,第三服务模块中部署了第三业务进程和所述第三基础框架进程,所述第三基础框架进程用于对所述第三业务进程的服务请求进行转发,所述第三业务进程用于对发送给所述第三服务模块的服务请求进行处理。
可选地,所述第一转发模块包括:
第一获取单元,用于在接收到所述第一服务请求的情况下,获取所述第二服务模块的服务实例地址;
第一转发单元,用于通过所述第一基础框架进程采用目标传输协议将所述第一服务请求转发至所述服务实例地址所指示的所述第二基础框架进程,其中,所述第一服务请求用于指示所述第二基础框架进程将所述第一服务请求转发至所述第二业务进程。
可选地,所述第二转发模块包括:
第一接收单元,用于通过所述第一基础框架进程接收所述第二基础框架进程采用所述目标传输协议返回的第一服务请求响应;
第二转发单元,用于通过所述第一基础框架进程将所述第一服务请求响应转发至所述第一业务进程。
可选地,所述第一转发模块包括:
第二获取单元,用于在接收到所述第二服务请求的情况下,获取所述第一业务进程的监听地址;
第三转发单元,用于通过所述第一基础框架进程将所述第二服务请求转发至所述监听地址所指示的所述第一业务进程。
可选地,所述第二转发模块包括:
第二接收单元,用于通过所述第一基础框架进程接收所述第一业务进程返回的第二服务请求响应;
第四转发单元,用于通过所述第一基础框架进程采用所述目标传输协议将所述第二服务请求响应转发至所述第三基础框架进程,其中,所述第二服务请求响应用于指示所述第三基础框架进程将所述第二服务请求响应转发至所述第三业务进程。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,采用通过第一基础框架进程接收目标服务请求,其中,目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,多个服务模块中的每个服务模块部署了业务进程和基础框架进程,基础框架进程用于对业务进程的服务请求进行转发,业务进程用于对发送给服务模块的服务请求进行处理,多个服务模块中的第一服务模块中部署了第一业务进程和第一基础框架进程;通过第一基础框架进程将目标服务请求转发至目标业务进程;通过第一基础框架进程转发目标业务进程响应目标服务请求返回的目标服务请求响应的方式,业务进程和基础框架进程作为一个整体部署,基础框架进程负责处理服务之间的网络通信,业务进程负责从基础框架进程读取请求进行处理以及负责发送请求至基础框架进程进行转发。基础框架代码和业务代码分开运行,独立运行的基础框架进程支持协议转发,支持微服务架构的核心功能。不同编程语言编写的业务进程,通过基础框架进程转发请求至其它服务。不需要为不同语言提供基础框架,基础框架可以由熟悉某种语言的基础开发团队开发和维护,业务开发人员只需要关注业务需求,降低了对开发人员技术水平的要求,从而能够降低人工成本,进而解决了相关技术中微服务架构中对基础框架的开发难度大,维护成本高的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的服务请求的传输方法的硬件环境的示意图;
图2是根据本申请可选的实施方式的一种微服务架构的示意图;
图3是根据本申请实施例的微服务架构的容器化部署的示意图;
图4是根据本申请实施例的一种可选的服务请求的传输方法的流程图;
图5是根据本申请可选的实施方式的一种微服务架构中通信方式的示意图;
图6是根据本申请可选的实施方式的一种服务请求传输过程的示意图;
图7是根据本申请可选的实施方式的另一种服务请求传输过程的示意图;
图8是根据本申请实施例的一种服务请求转发的示意图;
图9是根据本申请可选实施例的跨语言微服务架构中服务请求处理的流程示意图;
图10是根据本申请实施例的一种可选的服务请求的传输装置的示意图;
以及
图11是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种服务请求的传输的方法实施例。
可选地,在本实施例中,图1是根据本申请实施例的服务请求的传输方法的硬件环境的示意图,上述服务请求的传输方法可以应用于如图1所示的微服务架构的硬件环境中。如图1所示,该微服务架构包括:多个服务模块(101-1,101-2,……,101-n),多个服务模块中的每个服务模块部署了业务进程service和基础框架进程sidecar,其中,基础框架进程sidecar,用于接收目标服务请求,将目标服务请求转发至目标业务进程,并转发目标业务进程响应目标服务请求返回的目标服务请求响应,其中,目标服务请求用于请求调用目标业务进程;业务进程service,用于对发送给每个服务模块的服务请求进行处理。微服务架构中提供了基础设施,比如:注册中心、监控系统、日志系统、消息队列和数据库等等。基础框架进程sidecar运行的过程中可以对基础设施进行调用。各个服务模块可以但不限于采用不同的编程语言实现。各个服务模块之间能够进行跨语言的调用。
可选地,在本实施例中,微服务架构是一种架构概念,其使用分而治之的方式,将一个复杂系统分解为一组微服务,每个微服务只关注于一个业务功能,可以由不同的独立团队开发,从而满足互联网时代又快又好的要求。
可选地,在本实施例中,基础框架指微服务基础框架,用于实现微服务架构的基础功能,如服务注册、服务发现、负载均衡、流量管理、运行指标采集、分布式追踪等。
可选地,在本实施例中,基础框架进程是基于基础框架代码实现的应用程序,以独立进程的方式运行。sidecar用于表示基础框架进程。业务进程是基于业务代码实现的应用程序,以独立进程的方式运行。
在一个可选的实施方式中,图2是根据本申请可选的实施方式的一种微服务架构的示意图,如图2所示,该微服务架构中通过api(applicationprogramminginterface,应用程序接口)网关连接前端用户的客户端和后台服务,前端的请求基于http协议(hypertexttransferprotocol,超文本传输协议),json格式(javascriptobjectnotation,js对象简谱)进行数据传输,通过api网关进行协议转换,得到gprc协议,protobuf格式数据(protocolbuffers),然后,路由到对应的服务实例模块。服务之间的请求基于gprc协议,protobuf格式数据进行通信。不同的服务基于不同的语言实现,如lua、java、go、php、python、.net等等,每个服务模块提供业务进程和基础框架进程(sidecar),该微服务架构中提供的基础框架进程采用go语言实现,并提供了服务注册、服务发现、负载均衡、流量管理、运行指标采集、分布式追踪等功能。服务之间传输的服务请求通过各个服务中部署的基础框架进程(sidecar)进行转发。
作为一种可选的实施例,多个服务模块中的第一服务模块部署了第一业务进程和第一基础框架进程,多个服务模块中的第二服务模块部署了第二业务进程和第二基础框架进程,多个服务模块中的第三服务模块部署了第三业务进程和第三基础框架进程,其中,第一基础框架进程用于以下之一:
接收第一业务进程发送的第一服务请求,其中,第一服务请求用于请求调用第二业务进程;获取第二服务模块的服务实例地址;将第一服务请求转发至服务实例地址所指示的第二基础框架进程,其中,第一服务请求用于指示第二基础框架进程将第一服务请求转发至第二业务进程;接收第二基础框架进程返回的第一服务请求响应;将第一服务请求响应转发至第一业务进程;
接收第三基础框架进程传输的第二服务请求,其中,第二服务请求用于请求调用第一业务进程;获取第一业务进程的监听地址;将第二服务请求转发至监听地址所指示的第一业务进程;接收第一业务进程返回的第二服务请求响应;将第二服务请求响应转发至第三基础框架进程,其中,第二服务请求响应用于指示第三基础框架进程将第二服务请求响应转发至第三业务进程。
可选地,在本实施例中,本跨语言的微服务架构,基础框架进程负责处理服务之间的网络通信,负责服务的所有流量入站和出站,并且确保服务之间的通信快速、可靠和安全。业务进程负责发送请求至基础框架进程,通过它转发请求至其它服务。该微服务架构解耦了基础框架代码和业务代码,大大降低业务开发人员使用新兴编程语言的门槛。
作为一种可选的实施例,每个服务模块中部署的基础框架进程之间通过目标传输协议进行通信。
可选地,在本实施例中,基础框架进程之间采用目标传输协议进行服务请求的转发,使得不同编程语言实现的服务请求不会对基础框架进程对其所请求的转发路径的识别造成干扰,基础框架进程能够通过对符合目标传输协议的数据包的解析识别出服务请求的转发路径,从而实现了跨语言的服务请求的转发。
作为一种可选的实施例,每个服务模块部署在运行单元中,业务进程部署在运行单元中的第一容器,基础框架进程部署在运行单元中的第二容器。
可选地,在本实施例中,可以但不限于采用容器化部署平台对上述微服务架构进行部署。例如:上述运行单元可以但不限于包括kubernetes的最小运行单元pod,一个pod可以包括多个docker容器,多个docker容器可以包括上述第一容器和第二容器。
图3是根据本申请实施例的微服务架构的容器化部署的示意图,如图3所示,微服务架构部署在kubernetes(简称k8s)容器化部署平台,微服务架构中包括go服务模块,java服务模块和.net服务模块等等。每个服务模块部署为一个k8spod,每个服务模块所包括的业务进程和基础框架进程分别部署为docker容器。
图4是根据本申请实施例的一种可选的服务请求的传输方法的流程图,如图4所示,该方法可以包括以下步骤:
步骤s402,通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
步骤s404,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
步骤s406,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
可选地,在本实施例中,服务模块提供的服务可以但不限于指提供给调用者进行调用的功能,比如:游戏功能,购物功能,直播功能,音视频播放功能,图片存储和浏览功能,理财功能,网页浏览功能等等。
可选地,在本实施例中,该微服务架构可以但不限于是跨语言微服务架构,多个服务模块可以但不限于是采用不同编译语言实现的。例如:lua、java、go、php、python、.net等等。
通过上述步骤s402至步骤s406,业务进程和基础框架进程作为一个整体部署,基础框架进程负责处理服务之间的网络通信,业务进程负责从基础框架进程读取请求进行处理以及负责发送请求至基础框架进程进行转发。基础框架代码和业务代码分开运行,独立运行的基础框架进程支持协议转发,支持微服务架构的核心功能。不同编程语言编写的业务进程,通过基础框架进程转发请求至其它服务。不需要为不同语言提供基础框架,基础框架可以由熟悉某种语言的基础开发团队开发和维护,业务开发人员只需要关注业务需求,降低了对开发人员技术水平的要求,从而能够降低人工成本,进而解决了相关技术中微服务架构中对基础框架的开发难度大,维护成本高的技术问题。
在步骤s402提供的技术方案中,基础框架可以但不限于用于实现微服务架构的一些基础功能,比如:服务注册、服务发现、负载均衡、流量管理、运行指标采集、分布式追踪等功能。基础框架进程是基于基础框架代码实现的应用程序,以独立进程的方式运行。业务进程是基于业务代码实现的应用程序,以独立进程的方式运行。
可选地,在本实施例中,目标服务请求是第一基础框架进程接收到的服务请求,其用于请求调用目标业务进程,该目标业务进程可以是第一服务模块的第一业务进程,也可以是其他服务模块的其他业务进程。
可选地,在本实施例中,业务进程的服务请求可以是该业务进程发出的服务请求,也可以是发送给该业务进程的服务请求。
在步骤s404提供的技术方案中,第一基础框架进程用于对第一业务进程的服务请求进行转发处理。
在步骤s406提供的技术方案中,第一基础框架进程用于对目标业务进程返回的目标服务请求响应进行转发处理。
可选地,在本实施例中,第一服务模块是微服务架构中部署的多个服务模块中的任何一个服务模块。第二服务模块用于表示为第一服务模块提供服务功能的服务模块,第三服务模块用于表示调用第一服务模块所提供的服务功能的服务模块。
作为一种可选的实施例,通过所述第一基础框架进程接收所述目标服务请求包括以下之一:
s11,通过所述第一基础框架进程接收所述第一业务进程发送的第一服务请求,其中,所述第一服务请求用于请求调用第二业务进程,第二服务模块中部署了所述第二业务进程和第二基础框架进程,所述第二基础框架进程用于对所述第二业务进程的服务请求进行转发,所述第二业务进程用于对发送给所述第二服务模块的服务请求进行处理。
s12,通过所述第一基础框架进程接收第三基础框架进程采用目标传输协议传输的第二服务请求,其中,所述第二服务请求用于请求调用所述第一业务进程,第三服务模块中部署了第三业务进程和所述第三基础框架进程,所述第三基础框架进程用于对所述第三业务进程的服务请求进行转发,所述第三业务进程用于对发送给所述第三服务模块的服务请求进行处理。
可选地,在本实施例中,第一基础框架进程负责处理第一服务模块的入站流量和出站流量。对于入站流量和出站流量,在微服务架构下,服务a访问服务b的请求,对于服务a而言属于出站流量,对于服务b而言属于入站流量。
可选地,在本实施例中,对于接收到的第一业务进程发送的用于请求调用第二业务进程的第一服务请求,第一基础框架进程负责将第一服务请求转发至被调用的第二业务进程对应的第二基础框架进程,由第二基础框架进程再将第一服务请求转发至第二业务进程。
可选地,在本实施例中,对于接收到的第三基础框架进程发送的用于请求调用第一业务进程的第二服务请求,第一基础框架进程负责将其转发至第一业务进程。
作为一种可选的实施例,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程包括:
s21,在接收到所述第一服务请求的情况下,获取所述第二服务模块的服务实例地址;
s22,通过所述第一基础框架进程采用目标传输协议将所述第一服务请求转发至所述服务实例地址所指示的所述第二基础框架进程,其中,所述第一服务请求用于指示所述第二基础框架进程将所述第一服务请求转发至所述第二业务进程。
可选地,在本实施例中,对于出站流量,第一基础框架进程可以通过查找其维护的服务实例地址列表找到第二服务模块的服务实例地址,从而进行第一服务请求的转发。
在一个可选的实施方式中,图5是根据本申请可选的实施方式的一种微服务架构中通信方式的示意图,如图5所示,基础框架进程(sidecar)监听本地端口,如127.0.0.1:9091,业务进程初始化流程创建与基础框架进程的连接。服务实例运行过程中,业务进程发送请求至基础框架进程,基础框架进程负责转发服务请求至其它服务实例的基础框架进程。
作为一种可选的实施例,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应包括:
s31,通过所述第一基础框架进程接收所述第二基础框架进程采用所述目标传输协议返回的第一服务请求响应;
s32,通过所述第一基础框架进程将所述第一服务请求响应转发至所述第一业务进程。
可选地,在本实施例中,服务模块之间通过基础框架进程进行通信,对于出站的第一服务请求,如果第二服务模块通过第二基础框架进程返回了第一服务请求响应,则通过第一基础框架进程将其转发至第一业务进程。
在一个可选的实施方式中,第一服务模块中部署了第一业务进程和第一基础框架进程,第二服务模块中部署了第二业务进程和第二基础框架进程,图6是根据本申请可选的实施方式的一种服务请求传输过程的示意图,如图6所示,该服务请求的传输过程可以包括以下步骤:
步骤s602,第一基础框架进程接收第一业务进程发送的第一服务请求,并确定该第一服务请求用于请求调用第二业务进程。
步骤s604,第一基础框架获取第二服务模块的服务实例地址。
步骤s606,第一基础框架进程采用目标传输协议将第一服务请求转发至该服务实例地址所指示的第二基础框架进程。
步骤s608,第二基础框架进程将第一服务请求转发至第二业务进程。
步骤s610,第二业务进程对第一服务请求进行处理并返回第一服务请求响应至第二基础框架进程。
步骤s612,第一基础框架进程接收第二基础框架进程采用目标传输协议返回的第一服务请求响应。
步骤s614,第一基础框架进程将第一服务请求响应转发至第一业务进程。
作为一种可选的实施例,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程包括:
s41,在接收到所述第二服务请求的情况下,获取所述第一业务进程的监听地址;
s42,通过所述第一基础框架进程将所述第二服务请求转发至所述监听地址所指示的所述第一业务进程。
可选地,在本实施例中,对于入站流量,第一基础框架进程可以通过获取第一业务进程的监听地址来进行第二服务请求的转发。
在上述可选的实施方式中,如图5所示,业务进程监听本地端口,如127.0.0.1:8091,基础框架进程初始化流程会创建和业务进程的连接。服务实例运行过程中,基础框架进程负责转发服务请求至本地服务进程。
作为一种可选的实施例,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应包括:
s51,通过所述第一基础框架进程接收所述第一业务进程返回的第二服务请求响应;
s52,通过所述第一基础框架进程采用所述目标传输协议将所述第二服务请求响应转发至所述第三基础框架进程,其中,所述第二服务请求响应用于指示所述第三基础框架进程将所述第二服务请求响应转发至所述第三业务进程。
可选地,在本实施例中,服务模块之间通过基础框架进程进行通信,对于入站的第二服务请求,如果第一业务进程返回了第二服务请求响应,则通过第一基础框架进程将其转发至第三基础框架进程,从而由第三基础框架进程将其转发至第三业务进程。
在一个可选的实施方式中,第一服务模块中部署了第一业务进程和第一基础框架进程,第三服务模块中部署了第三业务进程和第三基础框架进程,图7是根据本申请可选的实施方式的另一种服务请求传输过程的示意图,如图7所示,该服务请求的传输过程可以包括以下步骤:
步骤s702,第一基础框架进程接收第三基础框架进程采用目标传输协议传输的第二服务请求,并确定该第二服务请求用于请求调用第一业务进程。
步骤s704,第一基础框架获取第一业务进程的监听地址。
步骤s706,第一基础框架进程将第二服务请求转发至该监听地址所指示的第一业务进程。
步骤s708,第一业务进程对第二服务请求进行处理并返回第二服务请求响应至第一基础框架进程。
步骤s710,第一基础框架进程采用目标传输协议将第二服务请求响应转发至第三基础框架进程。
步骤s712,第三基础框架进程将第二服务请求响应转发至第三业务进程。
可选地,在本实施例中,本跨语言微服务架构中提供的基础框架进程负责处理不同服务之间的网络通信,并且能够确保服务之间的通信快速、可靠和安全。图8是根据本申请实施例的一种服务请求转发的示意图,如图8所示,基础框架进程(sidecar)负责注册服务信息至服务注册表,维护服务信息的有效期;负责实时查看服务注册表,同步依赖服务的服务信息。基础框架进程构建请求处理链,提供路由控制、限流控制、负载均衡、全链路监控数据上报、服务鉴权、协议转发等模块。当接收到入站或者出站请求时,基础框架进程根据初始化的请求处理链顺序逐个处理,最终转发请求至本地业务进程或者其它服务的基础框架进程。其中,基础框架进程和业务进程一起部署,两者可以互称为本地进程。服务注册表是联系服务提供者和服务消费者的桥梁,维护服务提供者实例的最新网络位置,可以使用一个分布式的、一致性的键值存储系统维护服务注册信息。
本申请还提供了一种可选实施例,该可选实施例提供了一种跨语言微服务架构中处理服务请求的流程,图9是根据本申请可选实施例的跨语言微服务架构中服务请求处理的流程示意图,如图9所示,基础框架进程负责处理服务的入站流量和出站流量,该流程包括以下步骤:
步骤s902,基础框架进程接收请求。
步骤s904,基础框架进程解析获取需要访问的其他服务名称。
步骤s906,基础框架进程判断该请求是否请求本地业务进程,如果是,则该请求为入站流量,否则该请求为出站流量。
步骤s908,对于入站流量,基础框架进程获取本地业务进程的监听地址,并转发请求至本地业务进程。
步骤s910,对于出站流量,基础框架进程获取其它服务实例的服务实例地址,并转发请求至服务实例的基础框架进程。
可见,上述基于grpc的跨语言微服务架构方案,通过剥离基础框架代码和业务代码,独立出基础框架进程和业务进程,基础框架进程基于某种编程语言实现,业务进程可以采用各种编程语言实现,是一种真正与语言无关的微服务架构方案。不同的编程语言都有适合自己的应用场景,一家公司使用多种编程语言是一种常态。传统的跨语言微服务架构方案,开发和维护不同编程语言的基础框架,基础框架代码和业务代码耦合,导致对开发人员的技术水平要求高,开发人员的工作存在很多的冗余。上述基于grpc的跨语言微服务架构方案很好地解决了上述问题。基础框架代码和业务代码分离开来,业务开发团队专注于业务需求开发,可以尝试使用不同的编程语言开发业务需求;基础框架开发团队则专注于为业务开发团队提供稳定、可靠、安全的基础框架,通过不断地开发新功能,优化原有功能,不断加强微服务架构技术水平。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述服务请求的传输方法的服务请求的传输装置。图10是根据本申请实施例的一种可选的服务请求的传输装置的示意图,如图10所示,该装置可以包括:
接收模块102,用于通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
第一转发模块104,用于通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
第二转发模块106,用于通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
需要说明的是,该实施例中的接收模块102可以用于执行本申请实施例中的步骤s402,该实施例中的第一转发模块104可以用于执行本申请实施例中的步骤s404,该实施例中的第二转发模块106可以用于执行本申请实施例中的步骤s406。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,业务进程和基础框架进程作为一个整体部署,基础框架进程负责处理服务之间的网络通信,业务进程负责从基础框架进程读取请求进行处理以及负责发送请求至基础框架进程进行转发。基础框架代码和业务代码分开运行,独立运行的基础框架进程支持协议转发,支持微服务架构的核心功能。不同编程语言编写的业务进程,通过基础框架进程转发请求至其它服务。不需要为不同语言提供基础框架,基础框架可以由熟悉某种语言的基础开发团队开发和维护,业务开发人员只需要关注业务需求,降低了对开发人员技术水平的要求,从而能够降低人工成本,进而解决了相关技术中微服务架构中对基础框架的开发难度大,维护成本高的技术问题。
作为一种可选的实施例,所述接收模块包括以下之一:
第一接收单元,用于通过所述第一基础框架进程接收所述第一业务进程发送的第一服务请求,其中,所述第一服务请求用于请求调用第二业务进程,第二服务模块中部署了所述第二业务进程和第二基础框架进程,所述第二基础框架进程用于对所述第二业务进程的服务请求进行转发,所述第二业务进程用于对发送给所述第二服务模块的服务请求进行处理;
第二接收单元,用于通过所述第一基础框架进程接收第三基础框架进程采用目标传输协议传输的第二服务请求,其中,所述第二服务请求用于请求调用所述第一业务进程,第三服务模块中部署了第三业务进程和所述第三基础框架进程,所述第三基础框架进程用于对所述第三业务进程的服务请求进行转发,所述第三业务进程用于对发送给所述第三服务模块的服务请求进行处理。
作为一种可选的实施例,所述第一转发模块包括:
第一获取单元,用于在接收到所述第一服务请求的情况下,获取所述第二服务模块的服务实例地址;
第一转发单元,用于通过所述第一基础框架进程采用目标传输协议将所述第一服务请求转发至所述服务实例地址所指示的所述第二基础框架进程,其中,所述第一服务请求用于指示所述第二基础框架进程将所述第一服务请求转发至所述第二业务进程。
作为一种可选的实施例,所述第二转发模块包括:
第一接收单元,用于通过所述第一基础框架进程接收所述第二基础框架进程采用所述目标传输协议返回的第一服务请求响应;
第二转发单元,用于通过所述第一基础框架进程将所述第一服务请求响应转发至所述第一业务进程。
作为一种可选的实施例,所述第一转发模块包括:
第二获取单元,用于在接收到所述第二服务请求的情况下,获取所述第一业务进程的监听地址;
第三转发单元,用于通过所述第一基础框架进程将所述第二服务请求转发至所述监听地址所指示的所述第一业务进程。
作为一种可选的实施例,所述第二转发模块包括:
第二接收单元,用于通过所述第一基础框架进程接收所述第一业务进程返回的第二服务请求响应;
第四转发单元,用于通过所述第一基础框架进程采用所述目标传输协议将所述第二服务请求响应转发至所述第三基础框架进程,其中,所述第二服务请求响应用于指示所述第三基础框架进程将所述第二服务请求响应转发至所述第三业务进程。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述服务请求的传输方法的服务器或终端。
图11是根据本申请实施例的一种终端的结构框图,如图11所示,该终端可以包括:一个或多个(图中仅示出一个)处理器1101、存储器1103、以及传输装置1105,如图11所示,该终端还可以包括输入输出设备1107。
其中,存储器1103可用于存储软件程序以及模块,如本申请实施例中的服务请求的传输方法和装置对应的程序指令/模块,处理器1101通过运行存储在存储器1103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的服务请求的传输方法。存储器1103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1103可进一步包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1105用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1105包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1105为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1103用于存储应用程序。
处理器1101可以通过传输装置1105调用存储器1103存储的应用程序,以执行下述步骤:
s1,通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程发,所述第一业务进程用于对发送给所述第一服务的服务请求进行处理;
s2,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
s3,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
采用本申请实施例,提供了一种服务请求的传输的方案。业务进程和基础框架进程作为一个整体部署,基础框架进程负责处理服务之间的网络通信,业务进程负责从基础框架进程读取请求进行处理以及负责发送请求至基础框架进程进行转发。基础框架代码和业务代码分开运行,独立运行的基础框架进程支持协议转发,支持微服务架构的核心功能。不同编程语言编写的业务进程,通过基础框架进程转发请求至其它服务。不需要为不同语言提供基础框架,基础框架可以由熟悉某种语言的基础开发团队开发和维护,业务开发人员只需要关注业务需求,降低了对开发人员技术水平的要求,从而能够降低人工成本,进而解决了相关技术中微服务架构中对基础框架的开发难度大,维护成本高的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图11所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图11其并不对上述电子装置的结构造成限定。例如,终端还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行服务请求的传输方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
s1,通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
s2,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
s3,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
1.一种服务请求的传输方法,其特征在于,包括:
通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
2.根据权利要求1所述的方法,其特征在于,通过所述第一基础框架进程接收所述目标服务请求包括以下之一:
通过所述第一基础框架进程接收所述第一业务进程发送的第一服务请求,其中,所述第一服务请求用于请求调用第二业务进程,第二服务模块中部署了所述第二业务进程和第二基础框架进程,所述第二基础框架进程用于对所述第二业务进程的服务请求进行转发,所述第二业务进程用于对发送给所述第二服务模块的服务请求进行处理;
通过所述第一基础框架进程接收第三基础框架进程采用目标传输协议传输的第二服务请求,其中,所述第二服务请求用于请求调用所述第一业务进程,第三服务模块中部署了第三业务进程和所述第三基础框架进程,所述第三基础框架进程用于对所述第三业务进程的服务请求进行转发,所述第三业务进程用于对发送给所述第三服务模块的服务请求进行处理。
3.根据权利要求2所述的方法,其特征在于,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程包括:
在接收到所述第一服务请求的情况下,获取所述第二服务模块的服务实例地址;
通过所述第一基础框架进程采用目标传输协议将所述第一服务请求转发至所述服务实例地址所指示的所述第二基础框架进程,其中,所述第一服务请求用于指示所述第二基础框架进程将所述第一服务请求转发至所述第二业务进程。
4.根据权利要求3所述的方法,其特征在于,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应包括:
通过所述第一基础框架进程接收所述第二基础框架进程采用所述目标传输协议返回的第一服务请求响应;
通过所述第一基础框架进程将所述第一服务请求响应转发至所述第一业务进程。
5.根据权利要求2所述的方法,其特征在于,通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程包括:
在接收到所述第二服务请求的情况下,获取所述第一业务进程的监听地址;
通过所述第一基础框架进程将所述第二服务请求转发至所述监听地址所指示的所述第一业务进程。
6.根据权利要求5所述的方法,其特征在于,通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应包括:
通过所述第一基础框架进程接收所述第一业务进程返回的第二服务请求响应;
通过所述第一基础框架进程采用所述目标传输协议将所述第二服务请求响应转发至所述第三基础框架进程,其中,所述第二服务请求响应用于指示所述第三基础框架进程将所述第二服务请求响应转发至所述第三业务进程。
7.一种微服务架构,其特征在于,包括:多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,其中,
所述基础框架进程,用于接收目标服务请求,将所述目标服务请求转发至目标业务进程,并转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应,其中,所述目标服务请求用于请求调用所述目标业务进程;
所述业务进程,用于对发送给所述每个服务模块的服务请求进行处理。
8.根据权利要求7所述的微服务架构,其特征在于,所述多个服务模块中的第一服务模块部署了第一业务进程和第一基础框架进程,所述多个服务模块中的第二服务模块部署了第二业务进程和第二基础框架进程,所述多个服务模块中的第三服务模块部署了第三业务进程和第三基础框架进程,其中,所述第一基础框架进程用于以下之一:
接收所述第一业务进程发送的第一服务请求,其中,所述第一服务请求用于请求调用所述第二业务进程;获取所述第二服务模块的服务实例地址;将所述第一服务请求转发至所述服务实例地址所指示的所述第二基础框架进程,其中,所述第一服务请求用于指示所述第二基础框架进程将所述第一服务请求转发至所述第二业务进程;接收所述第二基础框架进程返回的第一服务请求响应;将所述第一服务请求响应转发至所述第一业务进程;
接收所述第三基础框架进程传输的第二服务请求,其中,所述第二服务请求用于请求调用所述第一业务进程;获取所述第一业务进程的监听地址;将所述第二服务请求转发至所述监听地址所指示的所述第一业务进程;接收所述第一业务进程返回的第二服务请求响应;将所述第二服务请求响应转发至所述第三基础框架进程,其中,所述第二服务请求响应用于指示所述第三基础框架进程将所述第二服务请求响应转发至所述第三业务进程。
9.根据权利要求7所述的微服务架构,其特征在于,所述每个服务模块中部署的基础框架进程之间通过目标传输协议进行通信。
10.根据权利要求7所述的微服务架构,其特征在于,所述每个服务模块部署在运行单元中,所述业务进程部署在所述运行单元中的第一容器,所述基础框架进程部署在所述运行单元中的第二容器。
11.一种服务请求的传输装置,其特征在于,包括:
接收模块,用于通过第一基础框架进程接收目标服务请求,其中,所述目标服务请求用于请求调用目标业务进程,微服务架构包括多个服务模块,所述多个服务模块中的每个服务模块部署了业务进程和基础框架进程,所述基础框架进程用于对所述业务进程的服务请求进行转发,所述业务进程用于对发送给所述服务模块的服务请求进行处理,所述多个服务模块中的第一服务模块中部署了第一业务进程和所述第一基础框架进程;
第一转发模块,用于通过所述第一基础框架进程将所述目标服务请求转发至所述目标业务进程;
第二转发模块,用于通过所述第一基础框架进程转发所述目标业务进程响应所述目标服务请求返回的目标服务请求响应。
12.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至6任一项中所述的方法。
13.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至6任一项中所述的方法。
技术总结