CN115658348B - 微服务调用方法、相关装置及存储介质 - Google Patents
微服务调用方法、相关装置及存储介质 Download PDFInfo
- Publication number
- CN115658348B CN115658348B CN202211386623.8A CN202211386623A CN115658348B CN 115658348 B CN115658348 B CN 115658348B CN 202211386623 A CN202211386623 A CN 202211386623A CN 115658348 B CN115658348 B CN 115658348B
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- target
- call request
- tag
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000003860 storage Methods 0.000 title claims abstract description 54
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011161 development Methods 0.000 abstract description 15
- 238000005516 engineering process Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000013473 artificial intelligence Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000011160 research Methods 0.000 description 4
- 235000014510 cooky Nutrition 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种微服务调用方法、相关装置及存储介质。该方法应用于微服务调用***,微服务调用***用于管理微服务链路,微服务链路包括多个微服务,且每个微服务包括至少两个版本,微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,方法包括:当微服务链路中的第一目标微服务接收到第一调用请求时,标签添加模块生成包含第一目标微服务的目标版本标签的第二调用请求;目标规则模块获取各第二微服务的第二微服务版本标签;目标规则模块将第二微服务版本标签与目标版本标签相同的第二微服务确定为第二目标微服务;虚拟服务模块将第二调用请求路由至第二目标微服务中。通过本方案可以减少开发成本以及提高了开发效率。
Description
技术领域
本申请涉及数据传输技术领域,尤其涉及一种微服务调用方法、相关装置及存储介质。
背景技术
云原生时代下,越来越多的业务***选择使用微服务架构进行开发。通过对业务逻辑的拆分和解耦,一个个小的微服务相互协调、配合,为用户提供最终价值;微服务设计理念已在行业流行起来,随着业务越来越复杂,微服务链路也变得越来越长。
蓝绿发布是一种常用的热更新部署方式,业务开发人员可以基于请求内容的请求头字段(Header、Cookie或Query Params等)将来自不同用户的请求路由到不同版本的服务上,如可以将来自开发测试团队的请求路由到新版服务上去,同时客户仍然访问老版本服务,等新版服务测试通过后再将来自客户的请求路由到新版服务上,实现了在线热更新。
具体地,一个微服务链路一般由多个服务应用组成,现有的超文本传输协议(HTTP,HyperText Transfer Protocol)网关虽然可以基于请求内容做蓝绿发布,但微服务链路不同节点之间的流量(东西向流量)通常不经过HTTP网关,且不同版本的服务对外暴露同样的统一资源定位符(Uniform Resource Locator,URL)域名,若微服务链路中的每个服务(例如A微服务、B微服务以及C微服务)都分别部署了V1和V2两个版本,由于微服务之间的调用会丢失包含版本信息的Header等信息,所以为了实现微服务全链路蓝绿发布(即保证V1版本A微服务调用B微服务时流量一定路由到V1版本的B微服务上,V1版本B微服务调用C微服务时流量也一定路由到V1版本的C微服务上;以及为了保证V2版本A微服务调用B微服务时流量一定路由到V2版本的B微服务上,V2版本B微服务调用C微服务时流量也一定路由到V2版本的C微服务上);在现有技术中,需要业务开发人员花费大量精力将携带版本信息的非业务代码耦合到业务代码中,在代码层面上实现请求内容的透传;且若要修改透传的信息,则还需要业务开发人员在微服务代码层面上进行透传信息的修改。
可见,现有技术需要通过请求内容的透传实现微服务全链路蓝绿发布,由于透传代码与业务代码强耦合,增加了业务开发人员的工作量,导致开发成本高且开发效率低。
发明内容
本申请实施例提供了一种微服务调用方法、相关装置及存储介质,可以减少开发人员的工作量,从而降低开发成本以及提高开发效率。
第一方面,本申请实施例提供了一种微服务调用方法,所述方法应用于微服务调用***,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,所述方法包括:
当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;
所述目标规则模块将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中。
第二方面,本申请实施例还提供了一种微服务调用***,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,其中:
所述标签添加模块,用于当所述微服务链路中的第一目标微服务接收到第一调用请求时,生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块,用于获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块,用于将所述第二调用请求路由至所述第二目标微服务中。
在一些实施例中,所述微服务中包含有服务节点,所述服务节点携带有所在的微服务对应的版本标签;所述标签添加模块在执行所述生成包含所述第一目标微服务的目标版本标签的第二调用请求步骤时,具体用于:
利用所述目标规则模块获取所述第一目标微服务中的所述服务节点所携带的第一微服务版本标签,并将所述第一微服务版本标签作为所述目标版本标签;
根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求。
在一些实施例中,所述标签添加模块在执行所述根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求步骤时,具体用于:
通过所述虚拟服务模块从所述第一调用请求中确定待调用微服务对应的目标调用请求,所述待调用微服务为位于所述第一目标微服务下游的所有微服务;
将所述目标版本标签添加至所述目标调用请求的请求头字段,生成所述第二调用请求。
在一些实施例中,所述微服务调用***包括网关;在所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求步骤执行之前,所述网关用于:
接收用户的初始调用请求,所述初始调用请求携带有目标用户标识;
根据预设的用户标识与版本的对应关系确定与所述目标用户标识对应的所述目标版本标签;
获取各第一微服务的第一微服务版本标签,所述第一微服务为所述微服务链路中与所述网关相邻且位于所述网关下游的微服务;
将所述第一微服务版本标签与所述目标版本标签相同的所述第一微服务确定为第一目标微服务,并将所述第一调用请求路由至所述第一目标微服务中。
在一些实施例中,在所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求步骤之前,所述网关还用于:
接收用户输入的用户标识与版本的设定指令;
根据所述设定指令设定所述用户标识与版本的对应关系。
在一些实施例中,所述当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块在执行所述生成包含所述第一目标微服务的目标版本标签的第二调用请求步骤时,具体用于:
当所述第一目标微服务接收到第一调用请求时,通过所述虚拟服务模块确定所述第一目标微服务是否存在下游服务;
若所述第一目标微服务存在下游服务,则生成包含所述第一目标微服务的目标版本标签的第二调用请求。
在一些实施例中,在所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中之后,当所述第二目标微服务接收到所述第二调用请求路由时,所述标签添加模块,还用于生成包含所述目标版本标签的第三调用请求;
所述目标规则模块,还用于获取各第三微服务的第三微服务版本标签,所述第三微服务为位于所述第二目标微服务下游的微服务;
所述虚拟服务模块,还用于将所述第三微服务版本标签与所述目标版本标签相同的所述第三微服务确定为第三目标微服务,并将所述第三调用请求路由至所述第三目标微服务中。
第三方面,本申请实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述方法。
相较于现有技术,本申请实施例提供了一种微服务调用***,用于管理微服务链路,其中,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,本方案在对微服务链路中不同微服务之间的调用中,在调用下游微服务之前,会通过标签添加模块在调用请求中添加版本标签,由于该调用请求中包含了版本标签,故可以通过目标规则模块以及虚拟服务模块根据调用请求中的版本标签,将调用请求路由至与该版本标签对应的下游微服务中,可见,本方案不需要对请求内容进行透传即可实现微服务全链路蓝绿发布,故不需要业务开发人员在花费精力将携带版本信息的非业务代码耦合到业务代码中,减少了业务开发人员的工作量,从而减少了开发成本以及提高了开发效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的微服务调用方法的应用场景示意图;
图2为本申请实施例提供的微服务调用方法的流程示意图;
图3为本申请另一实施例提供的微服务调用方法的流程示意图;
图4为本申请实施例提供的微服务调用***的示意性框图;
图5为本申请实施例中终端的一种结构示意图;
图6为本申请实施例中服务器的一种结构示意图。
具体实施方式
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个***中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
本申请实施例供了一种微服务调用方法、相关装置及存储介质,该微服务调用方法的执行主体可以是本申请实施例提供的微服务调用***,或者集成了模型鲁棒性检测***的计算机设备,其中,该微服务调用***可以采用硬件或者软件的方式实现,该计算机设备可以为终端或服务器。
当该计算机设备为服务器时,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
当该计算机设备为终端时,该终端可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、智能音箱、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)、台式计算机、智能手表等携带多媒体数据处理功能(例如,视频数据播放功能、音乐数据播放功能)的智能终端,但并不局限于此。
本申请实施例的方案可基于人工智能技术实现,具体来说涉及人工智能技术中的计算机视觉技术技术领域和云技术中的云计算、云存储和数据库等领域,下面将分别进行介绍。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
计算机视觉技术(Computer Vision,CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能***。计算机视觉技术通常包括图像处理、模型鲁棒性检测、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的模型鲁棒性检测、指纹识别等生物特征识别技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例的方案可基于云技术实现,具体来说涉及云技术中的云计算、云存储和数据库等技术领域,下面将分别进行介绍。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图像类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。本申请实施例可通过云技术对识别结果进行保存。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。在本申请实施例中,可将网络配置等信息均保存在该存储***中,便于服务器调取。
目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理***(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言,Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。在本申请实施例中,可将识别结果存储在该数据库管理***中,便于服务器调取。
其中,需要特别说明的是,本申请实施例涉及的服务终端,可以是指向服务终端提供语音和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。例如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语音和/或数据。例如,个人通信业务(英文全称:Personal Communication Service,英文简称:PCS)电话、无绳电话、会话发起协议(SIP)话机、无线本地环路(Wireless LocalLoop,英文简称:WLL)站、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)等设备。
需要说明的是,本申请包括术语:
Kubernetes(简称:K8s):是一个用于自动部署、扩展和管理容器化应用程序的开源***;而且K8s可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。另外,K8s也可以将运行容器化应用程序的多组主机聚集在一起,以使K8s能够轻松高效地管理这些集群。其中,这些集群可以包括跨越公共云、私有云或混合云部署主机。
Istio:是一个与K8s紧密结合的适用于云原生场景的Service Mesh形态的用于服务治理的开放平台。服务治理涉及连接(Connect)、安全(Secure)、策略执行(Control)和可观察性(Observe)。
微服务:是以一组小型服务来开发单个应用程序的方法,每个服务都运行在自己的进程中,服务间采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并可通过全自动部署机制独立部署,还共用一个最小型的集中式管理,可用不同的语言开发,并使用不同的数据存储技术。
虚拟服务模块(VirtualService):是istio中一个重要的资源,它定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议的匹配规则。如果流量符合这些特征,就会根据规则发送到服务注册表中的目标服务(或者目标服务的子集或版本),在本实施例中,虚拟服务模块的服务注册表中规定了微服务链路中各微服务的调用顺序。
目标规则模块(DestinationRule):是Istio的资源对象之一,可以将虚拟服务模块视为将流量如何路由到给定目标地址,然后使用目标规则模块来配置该目标地址的流量。其中,目标规则模块不能独自使用,必须跟虚拟服务模块共同发挥作用。具体地,在本申请实施例中,目标规则模块中定义了微服务链路中各微服务的路由调用顺序,在本申请实施例中,目标规则模块还可以识别微服务中各服务节点(Pod)的版本标签,进而识别当前微服务或下游各微服务所属的版本类型。
标签添加模块(EnvoyFilter):是Istio的资源对象之一,标签添加模块描述了针对代理服务的过滤器,这些过滤器可以定制由Istio Pilot生成的代理配置。在本申请实施例中,标签添加模块用于将识别得到的版本标签添加至调用请求中。
在一些实施例中,请参阅图1,图1为本申请实施例提供的微服务调用方法的应用场景示意图。该微服务调用方法应用于图1中的微服务调用***10,所述微服务调用***10用于管理微服务链路,所述微服务链路包括多个微服务(如图1所示,包括A、B、C三个微服务应用),且每个所述微服务包括至少两个版本(如图1所示,每个微服务包括V1版本和V2版本),本实施例中的微服务部署在K8s集群中,且每个微服务运行着多个实例,其中,本实施例中的微服务调用***10为基于Istio的微服务调用***,并且该***同样部署在K8s集群中,以管理K8s集群中的微服务。
所述微服务调用***10包括虚拟服务模块、目标规则模块以及标签添加模块,具体地,在一些实施例中,当目标用户通过网关访问微服务链路时,***首先将调用请求(携带有目标用户的目标用户标识)发往网关,然后网关根据预设的用户标识与版本的对应关系确定与目标用户标识对应的目标版本(如V2),然后网关将请求转发至V2版本的A微服务,V2版本的A微服务收到请求后,在调用下一个微服务的之前,标签添加模块会在调用请求中添加与A微服务对应的版本标签V2,然后目标规则模块获取A微服务下游的B微服务的版本标签(包括V1版本B微服务以及V2版本B微服务),由于调用请求包括版本标签V2,此时,虚拟服务模块可以将该调用请求路由至V2版本的B微服务,当V2版本的B微服务收到请求后,又调用C微服务,其调用方法与A微服务调用B微服务的调用方法类似,具体此处不作赘述。
具体地,在一些实施例中,本实施例提供的虚拟服务模块、目标规则模块以及标签添加模块可以以实例的形式分别运行在微服务链路中的每个微服务中,即,需要在需管理的微服务链路中的每个微服务中分别设置虚拟服务模块、目标规则模块以及标签添加模块,以控制微服务调用时流量的走向。在另一些实施例中,***中的虚拟服务模块、目标规则模块以及标签添加模块不需要专门设置在各微服务中,此时,虚拟服务模块、目标规则模块以及标签添加模块均可以对各个微服务进行管理,通过对各微服的管理实现对同版本的微服务的调用。
其中,本实施例中的网关可以为现有网关也可以为Istio自带的Istio网关。
图2是本申请实施例提供的微服务调用方法的流程示意图。如图2所示,该方法包括以下步骤S110-S140。
其中,本申请提供的微服务调用方法由微服务调用***实现,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块。
需要说明的是,本实施例需要将调用请求路由至整个微服务链路中所有微服务的指定应用上,实现全链路蓝绿发布。
S110、当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求。
其中,本实施例中的第一目标微服务为网关与链路中最后一个微服务之间的微服务,例如,当微服务链路包括A微服务、B微服务以及C微服务时,此时,第一目标微服务为A微服务或B微服务,以下实施例,以第一目标微服务为V2版本的A微服务为例进行说明。
需要说明的是,当第一目标微服务的上游服务向第一目标微服务发送调用请求时,上游服务发送的第一调用请求携带有请求头字段,该请求头字段携带有目标版本标签请求头字段,其中,该调用请求为HTTP请求,该请求头字段为HTTP请求中的Header、Cookie或Query Params,即目标版本标签可以携带在Header、Cookie或Query Params中;然而,在服务之间的调用时,调用请求中的请求头字段不会被透传(例如版本标签在Header中携带,但是Header信息在传递是默认不会被透传,除非在代码里做了透传,但是本申请并没有在代码里做对应的透传,所以本申请中的Header信息在传递时会被丢弃,即版本标签的信息会被丢弃),此时,第一目标微服务接收到第一调用请求不携带请求头字段,即不携带版本标签信息,只包括用户发送的请求内容。
由于第一目标微服务接收到的第一调用请求中不携带版本标签,为了可以将请求准确路由至对应版本的下游微服务,此时,需要在第一目标微服务接收到的第一调用请求的请求内容的基础上添加对应的版本标签,得到第二调用请求,为了确保版本标签识别的准确率以及为了提高版本标签的确定效率,步骤S110通过以下方式实现:
具体地,本实施例中的微服务链路中的每个微服务中均运行着服务节点(pod),且服务节点中携带有所在的微服务的版本标签,例如,V1版本的微服务中的服务节点中携带有版本标签“V1”,V2版本的微服务中的服务节点中携带有版本标签“V2”,在一些实施例中,为了保证版本标签识别的准确性,具体通过以下步骤生成第二调用请求:
所述标签添加模块利用所述目标规则模块获取所述第一目标微服务中的所述服务节点所携带的第一微服务版本标签,并将所述第一微服务版本标签作为所述目标版本标签;所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求。
即,当第一目标微服务为V2版本的A微服务时,目标规则模块将识别A微服务内部服务节点的版本标签(内部服务节点携带有版本标签),该标签标识为A微服务实际的版本标签,所以通过识别A微服务内部的服务节点确定当前A微服务的版本类型可以确保识别的准确性;此时,目标规则模块识别到A微服务的版本标签为V2,即目标版本标签为V2,此时,***再通过标签添加模块将识别到的目标版本标签添加至第二调用请求的请求头字段。
其中,在一些实施例中,该第二调用请求的请求内容与第一调用请求的请求内容相同,均为用户发送给网关时的调用请求。在另一些实施例中,第一调用请求与第二调用请求的请求内容不同,第一调用请求的请求内容包括第一目标微服务对应的请求内容以及第一目标微服务的各下游微服务分别对应的请求内容,而第二调用请求包括第二目标微服务对应的请求内容以及第二目标微服的各下游微服务分别对应的请求内容。即,将调用请求从第一目标微服务路由至第二目标微服务时,不透传的除了请求头字段之外,还包括第一目标微服务对应的请求内容,此时,用户从网关中发送的请求内容包括微服务链路中各微服务分别对应的请求内容。此时,所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求,包括:所述标签添加模块通过所述虚拟服务模块从所述第一调用请求中确定待调用微服务对应的目标调用请求,所述待调用微服务为位于所述第一目标微服务下游的所有微服务;所述标签添加模块将所述目标版本标签添加至所述目标调用请求的请求头字段,生成所述第二调用请求。
在一些实施例中,当所述微服务链路中的第一目标微服务接收到第一调用请求时,由于虚拟服务模块中定义了微服务链路中各微服务的调用顺序,为了防止无下游微服务调用的情况发生,此时,还需要通过虚拟服务模块的中定义的调用顺序确定第一目标微服务是否存在下游微服务,若存在下游微服务,则生成第二调用请求,否则不需要生成第二调用请求,此时,步骤S110具体包括:当所述第一目标微服务接收到第一调用请求时,所述标签添加模块通过所述虚拟服务模块确定所述第一目标微服务是否存在下游服务;若所述第一目标微服务存在下游服务,则所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求。
在一些实施例中,标签添加模块添加请求头字段(如HTTP Header)时,可以通过Lua脚本或WASM实现,原理是在“SIDECAR_OUTBOUND”context位置***Lua或WASM脚本,这样微服务在请求后续调用其他微服务时便可带上HTTP请求特定信息了(即在请求头字段添加目标版本标签)。
S120、所述目标规则模块获取各第二微服务的第二微服务版本标签。
本实施例中,由于不同版本的微服务对外暴露同样的URL域名,为了获知即将调用的微服务的版本标签,本实施例需要通过目标规则模块获取各个第二微服务的分别对应的第二微服务版本标签,其中,第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务,具体地,第二微服务根据虚拟服务模块中各微服务的调用顺序以及各微服务暴露的URL域名确定,当确定了哪些是第二微服务之后,***即通过目标规则模块获取各个第二微服务的第二微服版本标签,具体地,目标规则模块通过识别第二微服务中的服务节点所携带的版本标签确定对应第二微服务的版本标签。
例如,当第二微服务包括V1版本的B微服务以及V2版本的B微服务时,V1版本的B微服务以及V2版本的B微服务暴露的是同样的URL域名,且V1版本的B微服务中的服务节点中携带有版本标签V1,V2版本的B微服务中的服务节点中携带有版本标签V2,由于目标规则模块可以探索到各微服务中服务节点的版本标签,故通过目标规则模块确定各B微服务分别对应的版本标签,例如,确定V1版本的B微服务的第二微服务版本标签为V1,确定V2版本的B微服务的第二微服务版本标签为V2。
S130、所述目标规则模块将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务。
本实施例中,当目标规则模块获取到了各个第二微服务分别对应的第二微服务版本标签之后,需要将各第二微服务中,版本标签与目标版本标签相同的第二微服务确定为第二目标微服务。即,本实施例可以通过目标规则模块识别出哪个第二微服务才是与目标版本标签对应第二微服务。
例如,当第二微服务包括V1版本的B微服务以及V2版本的B微服务,目标版本标签为V2时,此时,目标规则模块将版本标签为V2的B微服务确定为第二目标微服务。其中,该第二目标微服务为下一个需要调用的微服务。
S140、所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中。
本实施例中,当通过目标规则模块确定了第二目标微服务时,虚拟服务模块将所述第二调用请求路由至所述第二目标微服务中。
具体地,虚拟服务模块需要根据第二调用请求中携带的目标版本标签,将该第二调用请求路由至与第二调用请求中携带的目标版本标签对应的第二目标微服务中,由于目标规则模块已经确定了哪个是与目标版本标签对应的第二目标微服务,故此时,虚拟服务模块可以准确地将第二调用请求路由至第二目标微服务中。
例如,虚拟服务模块通过第二调用请求中携带的目标版本标签V2,确定需要将调用请求路由至V2版本的B服务中,且由于已经通过目标规则模块确定了哪个是V2版本的B服务,此时,虚拟服务模块可以准确地将调用请求路由至V2版本的B服务中。
在一些实施例中,当管理的微服务链路中的每个微服务中都分别设置虚拟服务模块、目标规则模块以及标签添加模块时,步骤S110至步骤S140中的虚拟服务模块、目标规则模块以及标签添加模块均为第一目标微服务中的模块。
在另一些实施例中,***中的虚拟服务模块、目标规则模块以及标签添加模块不需要专门设置在各微服务中,此时,虚拟服务模块、目标规则模块以及标签添加模块均可以对各个微服务进行管理,通过对各微服的管理实现对同版本的微服务的调用。
在一些实施例中,当第二目标微服务不是微服务链路中的最后一个微服务时,此时,当所述第二目标微服务接收到所述第二调用请求路由时,所述标签添加模块生成包含所述目标版本标签的第三调用请求;所述目标规则模块获取各第三微服务的第三微服务版本标签,所述第三微服务为位于所述第二目标微服务下游的微服务;所述虚拟服务模块将所述第三微服务版本标签与所述目标版本标签相同的所述第三微服务确定为第三目标微服务,并将所述第三调用请求路由至所述第三目标微服务中。
具体地,由于微服务之间的调用会丢失包含版本信息的请求头字段,所以第二目标微服务接收到的第二调用请求中不包含版本信息,此时,在B微服务调用C微服务之前,需要在调用信息的请求头字段中添加对应的版本标签。
其中,第二目标微服务调用第三目标微服务时的步骤与第一目标微服调用第二目标微服的步骤类似,具体可参阅步骤S110至步骤S140,此处不作赘述。
可见,本实施例中可以将来自特定版本微服务的请求路由到相同版本的后续微服上,例如,来自V2版本的A微服务的请求只会路由至V2版本的B微服务,来自V2版本的B微服务的请求只会路由至V2版本的C微服务。
综上所述,本申请提供的微服务调用***,用于管理微服务链路,其中,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,本方案在对微服务链路中不同微服务之间的调用中,在调用下游微服务之前,会通过标签添加模块在调用请求中添加版本标签,由于该调用请求中包含了版本标签,故可以通过目标规则模块以及虚拟服务模块根据调用请求中的版本标签,将调用请求路由至与该版本标签对应的下游微服务中,可见,本方案不需要对请求内容进行透传即可实现微服务全链路蓝绿发布,故不需要业务开发人员在花费精力将携带版本信息的非业务代码耦合到业务代码中,减少了业务开发人员的工作量,从而减少了开发成本以及提高了开发效率。
图3是本申请另一实施例提供的一种微服务调用方法的流程示意图。如图3所示,本实施例的微服务调用方法包括步骤S210-S270。
其中,本申请提供的微服务调用方法由微服务调用***实现,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块、标签添加模块以及网关。
S210、所述网关接收用户的初始调用请求,所述初始调用请求携带有目标用户标识。
例如,用户张三想要通过网关访问微服务,此时,张三向网关发送初始调用请求,其中,该初始调用请求中携带有目标用户标识,该目标用户标识为请求者对应的用户标识,张三对应的用户标识为“zhangsan”,则此时,目标请求标识为“zhangsan”。
S220、所述网关根据预设的用户标识与版本的对应关系确定与所述目标用户标识对应的所述目标版本标签。
例如,如表1所示,用户在网关中设定了用户标识与版本的对应关系:
表1
用户标识 | 版本 |
Zhangsan | V2 |
Lisi | V2 |
Wangwu | V2 |
Zhaoliu | V2 |
Else | V1 |
如表1所示,当目标用户标识为“Zhangsan”、“Lisi”、“Wangwu”或“Zhaoliu”时,此时目标版本标签为“V2”,即***将对应的请求路由至V2版本的微服务中,如果目标用户表示为其他用户标识(“Zhangsan”、“Lisi”、“Wangwu”以及“Zhaoliu”以外的用户标识)时,此时,目标版本标签为“V1”,即***将对应的请求路由至V1版本的微服务中。
本实施例中,用户可以将开发测试团队中人员对应的用户标识确定为目标用户标识,此时,***可以将来自开发团队的请求路由到新版本(V2版本)的微服务中,同时其他客户的请求仍然可以路由到旧版本(V1版本)中,以等新版本微服务测试通过后再将来自其他客户的请求路由到新版本服务中,实现在线热更新。
S230、所述网关获取各第一微服务的第一微服务版本标签。
其中,所述第一微服务为所述微服务链路中与所述网关相邻且位于所述网关下游的微服务。
本实施例中,由于微服务链路中与第一微服务与网关连接,所以网关可以直接获取各微服务的版本标签(即第一微服务版本标签)。
例如,当第一微服务为A微服务时,A微服务包括V1版本的A微服务以及V2版本的A微服务,此时,网关识别到V1版本的A微服务的版本标签为V1,识别到V2版本的A微服务的版本标签为V2。
S240、所述网关将所述第一微服务版本标签与所述目标版本标签相同的所述第一微服务确定为第一目标微服务,并将所述第一调用请求路由至所述第一目标微服务中。
当网关获取到各个第一微服务的版本标签时,此时将与目标版本标签相同的第一微服务确定为第一目标微服务。
例如,当第一微服务为A微服务,目标版本标签为V2时,此时,将V2版本的A微服务确定为第一目标微服务。然后将第一调用请求路由至该第一目标微服务中。其中,该第一调用请求可以为初始调用请求,此时,网关直接将初始调用请求转发至微服务链路中的首个微服务中。
S250、当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求。
S260、所述目标规则模块获取各第二微服务的第二微服务版本标签。
其中,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务。
S270、所述目标规则模块将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务。
S280、所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中。
其中,步骤S250-S280与图2实施例中的步骤S110-S140类似,具体此处不作赘述。
其中,所述网关还可以接收用户输入的用户标识与版本的设定指令;然后根据所述设定指令设定所述用户标识与版本的对应关系。设定哪些用户标识对应V1版本的微服务,哪些用户标识对应V2版本的微服务,此外,如果每个所述微服务包括两个以上的版本,例如包括3个版本(V1、V2和V3),此时,还需要为V3版本的微服务设定对应的用户标识,其中,该设定指令可以为该对应关系的新增指令,修改指令或删除指令。可见,通过本申请可以灵活调整用户标识与版本的对应关系。
可见,本实施例中的网关可以将来自特定用户的调用请求路由至与该特定用户对应版本的微服务链路中,且本实施例中可以将来自特定版本微服务的请求路由到相同版本的后续微服上,可见,本方案不需要对请求内容进行透传即可实现微服务全链路蓝绿发布,故不需要业务开发人员在花费精力将携带版本信息的非业务代码耦合到业务代码中,减少了业务开发人员的工作量,从而减少了开发成本以及提高了开发效率。
图4是本申请实施例提供的一种微服务调用***的示意性框图。如图4所示,对应于以上微服务调用方法,本申请还提供一种微服务调用***400。所述微服务调用***400用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***400包括虚拟服务模块401、目标规则模块402以及标签添加模块403,其中:
所述标签添加模块401,用于当所述微服务链路中的第一目标微服务接收到第一调用请求时,生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块402,用于获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块403,用于将所述第二调用请求路由至所述第二目标微服务中。
上面从模块化功能实体的角度对本申请实施例中的微服务调用***进行了描述,下面从硬件处理的角度分别对本申请实施例中的微服务调用***进行描述。
本申请实施例还提供了一种终端设备,如图5所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)、销售终端(英文全称:Point ofSales,英文简称:POS)、车载电脑等任意终端设备,以终端为手机为例:
图5示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图5,手机包括:射频(英文全称:Radio Frequency,英文简称:RF)电路55、存储器520、输入单元530、显示单元540、传感器550、音频电路560、无线保真(英文全称:wirelessfidelity,英文简称:Wi-Fi)模块570、处理器580、以及电源590等部件。本领域技术人员可以理解,图5中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对手机的各个构成部件进行具体的介绍:
RF电路55可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将设计上行的数据发送给基站。通常,RF电路55包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low NoiseAmplifier,英文简称:LNA)、双工器等。此外,RF电路55还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(英文全称:Global System of Mobile communication,英文简称:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,英文简称:GPRS)、码分多址(英文全称:Code Division Multiple Access,英文简称:CDMA)、宽带码分多址(英文全称:WidebandCode Division Multiple Access,英文简称:WCDMA)、长期演进(英文全称:Long TermEvolution,英文简称:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,英文简称:SMS)等。
存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(英文全称:LiquidCrystal Display,英文简称:LCD)、有机发光二极管(英文全称:Organic Light-EmittingDiode,英文简称:OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图5中,触控面板531与显示面板541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器561,传声器562可提供用户与手机之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路55以发送给比如另一手机,或者将音频数据输出至存储器520以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了Wi-Fi模块570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器580可包括一个或多个处理单元;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
手机还包括给各个部件供电的电源590(比如电池),电源可以通过电源管理***与处理器580逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该手机所包括的处理器580还具有控制执行以上由图2所示的微服务调用方法的流程图。
图6是本申请实施例提供的一种服务器结构示意图,该服务器620可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(英文全称:centralprocessing units,英文简称:CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器620上执行存储介质630中的一系列指令操作。
服务器620还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作***641,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
上述实施例中由服务器所执行的步骤可以基于该图6所示的服务器620的结构。例如上述实施例中由图2所示的服务器的步骤可以基于该图6所示的服务器结构。例如,所述处理器622通过调用存储器632中的指令,执行以下操作:
当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;
所述目标规则模块将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。
Claims (7)
1.一种微服务调用方法,其特征在于,所述方法应用于微服务调用***,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,所述方法包括:
当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;
所述目标规则模块将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中;
所述微服务中包含有服务节点,所述服务节点携带有所在的微服务对应的版本标签;所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求,包括:
所述标签添加模块利用所述目标规则模块获取所述第一目标微服务中的所述服务节点所携带的第一微服务版本标签,并将所述第一微服务版本标签作为所述目标版本标签;
所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求;
其中,所述第一目标微服务为网关与所述微服务链路中最后一个微服务之间的微服务;
所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求,包括:
所述标签添加模块通过所述虚拟服务模块从所述第一调用请求中确定待调用微服务对应的目标调用请求,所述待调用微服务为位于所述第一目标微服务下游的所有微服务;
所述标签添加模块将所述目标版本标签添加至所述目标调用请求的请求头字段,生成所述第二调用请求;
其中,所述第一调用请求的请求内容与所述第二调用请求的请求内容相同,或者所述第一调用请求的请求内容与所述第二调用请求的请求内容不同;
所述微服务调用***包括网关;所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求之前,所述方法还包括:
所述网关接收用户的初始调用请求,所述初始调用请求携带有目标用户标识;
所述网关根据预设的用户标识与版本的对应关系确定与所述目标用户标识对应的所述目标版本标签;
所述网关获取各第一微服务的第一微服务版本标签,所述第一微服务为所述微服务链路中与所述网关相邻且位于所述网关下游的微服务;
所述网关将所述第一微服务版本标签与所述目标版本标签相同的所述第一微服务确定为第一目标微服务,并将所述第一调用请求路由至所述第一目标微服务中;
其中,所述目标用户标识为请求者对应的用户标识。
2.根据权利要求1所述的方法,其特征在于,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求之前,所述方法还包括:
所述网关接收用户输入的用户标识与版本的设定指令;
所述网关根据所述设定指令设定所述用户标识与版本的对应关系。
3.根据权利要求1至2中任一项所述的方法,其特征在于,所述当所述微服务链路中的第一目标微服务接收到第一调用请求时,所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求,包括:
当所述第一目标微服务接收到第一调用请求时,所述标签添加模块通过所述虚拟服务模块确定所述第一目标微服务是否存在下游服务;
若所述第一目标微服务存在下游服务,则所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求。
4.根据权利要求1至2中任一项所述的方法,其特征在于,所述虚拟服务模块根据所述第二调用请求中的所述目标版本标签将所述第二调用请求路由至所述第二目标微服务中之后,所述方法还包括:
当所述第二目标微服务接收到所述第二调用请求路由时,所述标签添加模块生成包含所述目标版本标签的第三调用请求;
所述目标规则模块获取各第三微服务的第三微服务版本标签,所述第三微服务为位于所述第二目标微服务下游的微服务;
所述虚拟服务模块将所述第三微服务版本标签与所述目标版本标签相同的所述第三微服务确定为第三目标微服务,并将所述第三调用请求路由至所述第三目标微服务中。
5.一种微服务调用***,其特征在于,所述微服务调用***用于管理微服务链路,所述微服务链路包括多个微服务,且每个所述微服务包括至少两个版本,所述微服务调用***包括虚拟服务模块、目标规则模块以及标签添加模块,其中:
所述标签添加模块,用于当所述微服务链路中的第一目标微服务接收到第一调用请求时,生成包含所述第一目标微服务的目标版本标签的第二调用请求;
所述目标规则模块,用于获取各第二微服务的第二微服务版本标签,所述第二微服务为所述微服务链路中与所述第一目标微服务相邻且位于所述第一目标微服务下游的微服务;将所述第二微服务版本标签与所述目标版本标签相同的所述第二微服务确定为第二目标微服务;
所述虚拟服务模块,用于将所述第二调用请求路由至所述第二目标微服务中;
所述微服务中包含有服务节点,所述服务节点携带有所在的微服务对应的版本标签;所述标签添加模块具体用于:
所述标签添加模块利用所述目标规则模块获取所述第一目标微服务中的所述服务节点所携带的第一微服务版本标签,并将所述第一微服务版本标签作为所述目标版本标签;
所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求;
其中,所述第一目标微服务为网关与所述微服务链路中最后一个微服务之间的微服务;
所述标签添加模块根据所述第一调用请求以及所述目标版本标签生成所述第二调用请求,包括:
所述标签添加模块通过所述虚拟服务模块从所述第一调用请求中确定待调用微服务对应的目标调用请求,所述待调用微服务为位于所述第一目标微服务下游的所有微服务;
所述标签添加模块将所述目标版本标签添加至所述目标调用请求的请求头字段,生成所述第二调用请求;
其中,所述第一调用请求的请求内容与所述第二调用请求的请求内容相同,或者所述第一调用请求的请求内容与所述第二调用请求的请求内容不同;
所述微服务调用***包括网关;所述标签添加模块生成包含所述第一目标微服务的目标版本标签的第二调用请求之前,还包括:
所述网关接收用户的初始调用请求,所述初始调用请求携带有目标用户标识;
所述网关根据预设的用户标识与版本的对应关系确定与所述目标用户标识对应的所述目标版本标签;
所述网关获取各第一微服务的第一微服务版本标签,所述第一微服务为所述微服务链路中与所述网关相邻且位于所述网关下游的微服务;
所述网关将所述第一微服务版本标签与所述目标版本标签相同的所述第一微服务确定为第一目标微服务,并将所述第一调用请求路由至所述第一目标微服务中;
其中,所述目标用户标识为请求者对应的用户标识。
6.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211386623.8A CN115658348B (zh) | 2022-11-07 | 2022-11-07 | 微服务调用方法、相关装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211386623.8A CN115658348B (zh) | 2022-11-07 | 2022-11-07 | 微服务调用方法、相关装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658348A CN115658348A (zh) | 2023-01-31 |
CN115658348B true CN115658348B (zh) | 2024-05-14 |
Family
ID=85015160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211386623.8A Active CN115658348B (zh) | 2022-11-07 | 2022-11-07 | 微服务调用方法、相关装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658348B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117498994B (zh) * | 2023-11-16 | 2024-05-24 | 浪潮智慧科技有限公司 | 一种微服务架构的资源请求方法及设备 |
CN117270916B (zh) * | 2023-11-21 | 2024-02-06 | 北京凌云雀科技有限公司 | 一种基于Istio的Sidecar热更新方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和*** |
CN110716815A (zh) * | 2019-10-11 | 2020-01-21 | 集奥聚合(北京)人工智能科技有限公司 | 基于Spring Gateway的微服务各版本定向调用方法 |
CN111666092A (zh) * | 2020-06-16 | 2020-09-15 | 腾讯科技(上海)有限公司 | 服务提供方法、装置、设备及计算机可读存储介质 |
CN114615192A (zh) * | 2022-02-16 | 2022-06-10 | 杭州信公小安信息科技有限公司 | 一种分布式全链路灰度发布方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11489943B2 (en) * | 2019-02-13 | 2022-11-01 | Red Hat, Inc. | Automatic version routing among multiple instances of an application |
US11281447B2 (en) * | 2019-12-18 | 2022-03-22 | Citrix Systems, Inc. | Service graphs for canary deployment systems and methods |
-
2022
- 2022-11-07 CN CN202211386623.8A patent/CN115658348B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和*** |
CN110716815A (zh) * | 2019-10-11 | 2020-01-21 | 集奥聚合(北京)人工智能科技有限公司 | 基于Spring Gateway的微服务各版本定向调用方法 |
CN111666092A (zh) * | 2020-06-16 | 2020-09-15 | 腾讯科技(上海)有限公司 | 服务提供方法、装置、设备及计算机可读存储介质 |
CN114615192A (zh) * | 2022-02-16 | 2022-06-10 | 杭州信公小安信息科技有限公司 | 一种分布式全链路灰度发布方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115658348A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115658348B (zh) | 微服务调用方法、相关装置及存储介质 | |
CN111416845B (zh) | 一种配置边缘设备的方法、装置及存储介质 | |
US11388220B2 (en) | Image distribution method and apparatus, and image obtaining method and apparatus | |
CN108989384B (zh) | 一种数据处理的方法、多云管理***以及相关设备 | |
EP2618278B1 (en) | Synchronizing endpoint data stores having disparate schemas | |
CN114694226B (zh) | 一种人脸识别方法、***及存储介质 | |
CN115640567B (zh) | Tee完整性认证方法、装置、***及存储介质 | |
CN116758362A (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
CN116071614A (zh) | 样本数据处理方法、相关设备及存储介质 | |
CN116596202A (zh) | 工单处理方法、相关装置及存储介质 | |
CN115984643A (zh) | 模型训练方法、相关设备及存储介质 | |
CN113609349A (zh) | 租赁车辆库存检测方法、装置及介质 | |
CN115525554B (zh) | 模型的自动化测试方法、***及存储介质 | |
CN115883352B (zh) | 服务节点创建方法、相关设备及存储介质 | |
CN115412726B (zh) | 视频真伪检测方法、装置及存储介质 | |
CN116257657B (zh) | 数据处理方法、数据查询方法、相关装置及存储介质 | |
CN115909186B (zh) | 图像信息识别方法、装置、计算机设备及存储介质 | |
CN115048463B (zh) | 数据迁移方法、***及存储介质 | |
CN114722970B (zh) | 一种多媒体检测方法、装置及存储介质 | |
CN115565215B (zh) | 一种人脸识别算法切换方法、装置及存储介质 | |
CN116756350A (zh) | 多媒体数据处理方法、装置、计算机设备及存储介质 | |
CN116954631A (zh) | 模型部署方法、相关装置及存储介质 | |
CN116386647B (zh) | 音频验证方法、相关装置、存储介质及程序产品 | |
CN116244071A (zh) | 资源调整方法、相关设备及存储介质 | |
CN117056387A (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 |