CN115102999A - DevOps系统、服务提供方法、存储介质和电子装置 - Google Patents

DevOps系统、服务提供方法、存储介质和电子装置 Download PDF

Info

Publication number
CN115102999A
CN115102999A CN202210647336.1A CN202210647336A CN115102999A CN 115102999 A CN115102999 A CN 115102999A CN 202210647336 A CN202210647336 A CN 202210647336A CN 115102999 A CN115102999 A CN 115102999A
Authority
CN
China
Prior art keywords
service
rpc
interface
rpc service
layer
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
Application number
CN202210647336.1A
Other languages
English (en)
Other versions
CN115102999B (zh
Inventor
王涛
马龙飞
赵静
李跃超
高春祥
李璠
丁永建
黄时光
向小佳
蒋继航
邓飞
吴海洋
张荣臻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Everbright Xinglong Trust Co ltd
Everbright Technology Co ltd
Original Assignee
Everbright Xinglong Trust Co ltd
Everbright Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Everbright Xinglong Trust Co ltd, Everbright Technology Co ltd filed Critical Everbright Xinglong Trust Co ltd
Priority to CN202210647336.1A priority Critical patent/CN115102999B/zh
Publication of CN115102999A publication Critical patent/CN115102999A/zh
Application granted granted Critical
Publication of CN115102999B publication Critical patent/CN115102999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例提供了一种DevOps系统、服务提供方法、存储介质和电子装置。该DevOps系统包括:基础服务层、应用服务层和注册中心,所述基础服务层,用于提供远程过程调用RPC服务,并将所述RPC服务的RPC服务接口注册到所述注册中心;所述应用服务层,用于向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务;所述注册中心,用于管理所述基础服务层注册的所述RPC服务的RPC服务接口,并向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口。通过本发明,解决了DevOps系统采用SpringCloud微服务架构,只支持应用级服务发现导致模块依赖关系调整成本过高的问题。

Description

DevOps系统、服务提供方法、存储介质和电子装置
技术领域
本发明实施例涉及通信领域,具体而言,涉及一种DevOps系统、服务提供方法、存储介质和电子装置。
背景技术
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(Quality Assurance,QA)部门之间的沟通、协作与整合。
目前业内,传统DevOps架构主要分为两种,分别是单体可扩展和SpringCloudhttp架构微服务应用,目前业内DevOps平台后端架构主要以SpringCloud架构微服务应用为主。单体式应用模块耦合过高,程序稳定性较差,但开发速度快。基于SpringCloud微服务架构,支持高可用,服务可以平滑升级,但只支持应用级服务发现发现导致模块依赖关系调整成本过高。
发明内容
本发明实施例提供了一种DevOps系统、服务提供方法、存储介质和电子装置,以至少解决相关技术中的DevOps系统采用SpringCloud微服务架构,只支持应用级服务发现发现导致模块依赖关系调整成本过高的问题。
根据本发明的一个实施例,提供了一种DevOps系统,包括:基础服务层、应用服务层和注册中心,其中,所述基础服务层,用于提供远程过程调用(Remote Procedure Call,RPC)服务,并将所述RPC服务的RPC服务接口注册到所述注册中心;所述应用服务层,用于向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务;所述注册中心,用于管理所述基础服务层注册的所述RPC服务的RPC服务接口,并向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口。
在至少一个示例性实施例中,所述注册中心用于通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,并提供给所述应用服务层。
在至少一个示例性实施例中,所述基础服务层注册的所述RPC服务的RPC服务接口包括多个接口实例。
在至少一个示例性实施例中,所述注册中心用于通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,在确定查找到的所述RPC服务接口包括多个接口实例的情况下,根据每个接口实例的健康状态选择一个或多个接口实例提供给所述应用服务层。
在至少一个示例性实施例中,每个接口实例的所述健康状态包括以下至少之一:所述接口实例的负载情况、所述接口实例的响应速度、所述接口实例是否正常服务。
在至少一个示例性实施例中,所述注册中心用于通过以下方式至少之一管理所述基础服务层注册的所述RPC服务的RPC服务接口:接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的注销请求的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例;接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的变更请求的情况下,根据所述变更请求更新所述RPC服务接口或所述RPC服务接口的接口实例;检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务,在检测到所述RPC服务接口或所述RPC服务接口的接口实例不能正常服务的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例。
在至少一个示例性实施例中,所述注册中心用于通过以下方式检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务:接收所述基础服务层通过所述RPC服务接口或所述RPC服务接口的每个接口实例定期发送的心跳信息;在预定时间内未接收到所述心跳信息的情况下,确定所述RPC服务接口或所述RPC服务接口的每个接口实例不能正常服务;否则,确定所述RPC服务接口或所述RPC服务接口的每个接口实例正常服务。
在至少一个示例性实施例中,所述基础服务层和所述应用服务层还用于向所述注册中心订阅RPC服务列表;所述注册中心用于按照预定策略向所述基础服务层和所述应用服务层发送所述RPC服务列表,其中,所述预定策略包括以下至少之一:定期发送、所述RPC服务列表发生变更时发送。
在至少一个示例性实施例中,所述应用服务层用于:根据获取的所述RPC服务接口,通过RPC组件与所述至少一个RPC服务建立连接,并通过RPC协议与所述至少一个RPC服务进行数据交互或传输以提供所述应用服务。
根据本发明的另一个实施例,提供了一种基于前述实施例所述的DevOps系统的服务提供方法,包括:所述DevOps系统的基础服务层提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述DevOps系统的注册中心;所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口;所述DevOps系统的应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,DevOps系统的基础服务层提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述注册中心;所述应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务;所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口,并向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口。该DevOps系统基于RPC架构,RPC架构支持种类多,能够减少DevOps平台中不同服务之间的http创建连接的时间,同时支持对传输内容压缩。另外,在DevOps平台服务层service之间的交互关系通过接口服务发现实现,这与传统微服务应用级服务发现相比,组件间依赖关系更加独立灵活,不强依赖,扩展成本低。在本发明实施例的DevOps平台中,除基础服务层开源组件外,在服务层只引入注册中心组件,比传统微服务引入的组件数量有明显降低,因此也就降低了开发人员的学习理解成本,同时也能满足DevOps产品的高可用需求。除此之外,RPC方式取消硬编码调用,是通过注册中心引用服务名称,与应用无关,在服务模块调整的情况下也不需要重新再编写调用逻辑代码。
附图说明
图1是猪齿鱼DevOps平台的后端架构图;
图2是本发明实施例的一种基于DevOps系统的服务提供方法的计算机的硬件结构框图;
图3是根据本发明实施例的DevOps系统的架构示意图;
图4是根据本发明实施例的基于DevOps系统的服务提供方法的流程图;
图5是根据本发明实施例的基于RPC架构的DevOps系统架构示意图;
图6是根据本发明实施例的基于RPC架构的DevOps系统逻辑架构示意图。
具体实施方式
传统DevOps架构主要分为两种,分别是单体可扩展和SpringCloud http架构微服务应用。单体式应用模块耦合过高,程序稳定性和可扩展性较差,但开发速效率高、部署简单。基于SpringCloud微服务架构,支持高可用,服务可以平滑升级,但组件过多,只支持应用级服务发现导致模块依赖关系调整成本过高,开发和维护成本高、部署复杂,导致架构交互逻辑复杂,问题排查困难,对开发人员的运维和开发能力总体要求较高。
目前业内DevOps平台后端架构主要以SpringCloud架构微服务应用为主。例如,图1是猪齿鱼DevOps平台的后端架构图,如图1所示,微服务架构是Choerodon猪齿鱼DevOps平台的核心功能之一,Choerodon采用Spring Cloud作为微服务架构的基础,并深度结合Kubernetes进行定制化开发。微服务框架包含如下部分:服务注册/发现,服务网关,负载均衡,安全性,服务解耦,熔断降级,面向切面编程,数据一致性,测试,部署,监控等。当前主流的DevOps分布式产品主要采用SpringCloud微服务架构,基于微服务架构的DevOps平台目前主要有以下问题:
1.依赖组件过多,但在实际开发应用中实际使用中发挥的作用较小(网关、容断器、负载均衡等组件);
2.本地化开发部署困难;
3.交互流程过于复杂,问题定位困难;
4.只支持应用级服务发现,服务层交互耦合度过高,导致系统扩展成本过高,这就导致了如果前期模块规划不规范后期要调整几乎很难实现,而且内部调用都采用http协议,性能较差,反而增加了开发人员的开发成本、理解成本和运维人员的部署成本。
为解决本地开发困难、依赖组件过多,部署架构复杂导致运维和开发成本过高的问题,本发明实施例主要通过在组件引入、传输协议、架构设计层面进行设计,针对DevOps实际业务场景,减少不必要的概念引入,从底层代码架构上优化设计简化交互流程和降低模块耦合,通过采用一种新的架构来达到单体式应用本地快速开发的优势,可以快速重新规划模块关系而不调整程序代码,同时新增模块和精减模块对架构影响较小,来达到部署模式简洁清晰易懂,并支持快速平滑部署高可用实例。
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在云计算平台、计算机终端或者类似的运算装置中执行。以运行在计算机上为例,图2是本发明实施例的一种基于DevOps系统的服务提供方法的计算机的硬件结构框图。如图2所示,计算机可以包括一个或多个(图2中仅示出一个)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器204,其中,上述计算机还可以包括用于通信功能的传输设备206以及输入输出设备208。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述计算机的结构造成限定。例如,计算机还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器204可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的基于DevOps系统的服务提供方法对应的计算机程序,处理器202通过运行存储在存储器204内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的基于DevOps系统的服务提供方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机的通信供应商提供的有线或无线网络。
图3是根据本发明实施例的DevOps系统的架构示意图,如图3所示,该DevOps系统包括:基础服务层32、应用服务层34和注册中心36。
所述基础服务层32,用于提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述注册中心36。
所述应用服务层34,用于向所述注册中心36获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
所述注册中心36,用于管理所述基础服务层32注册的所述RPC服务的RPC服务接口,并向所述应用服务层34提供所述应用服务层34要调用的至少一个RPC服务的RPC服务接口。
在至少一个示例性实施例中,所述注册中心36用于通过以下方式向所述应用服务层34提供所述应用服务层34要调用的至少一个RPC服务的RPC服务接口:
接收所述应用服务层34发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层34要调用的至少一个RPC服务的标识信息;
根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,并提供给所述应用服务层34。
在至少一个示例性实施例中,所述基础服务层32注册的所述RPC服务的RPC服务接口包括多个接口实例。
在至少一个示例性实施例中,所述注册中心36用于通过以下方式向所述应用服务层34提供所述应用服务层34要调用的至少一个RPC服务的RPC服务接口:
接收所述应用服务层34发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层34要调用的至少一个RPC服务的标识信息;
根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,在确定查找到的所述RPC服务接口包括多个接口实例的情况下,根据每个接口实例的健康状态选择一个或多个接口实例提供给所述应用服务层34。
在至少一个示例性实施例中,每个接口实例的所述健康状态包括以下至少之一:所述接口实例的负载情况、所述接口实例的响应速度、所述接口实例是否正常服务。按照实际应用选择健康状态的构成信息以及具体的选择策略,可以依托注册中心实现接口负载均衡。
在至少一个示例性实施例中,所述注册中心36用于通过以下方式至少之一管理所述基础服务层32注册的所述RPC服务的RPC服务接口:
接收到所述基础服务层32对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的注销请求的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例;
接收到所述基础服务层32对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的变更请求的情况下,根据所述变更请求更新所述RPC服务接口或所述RPC服务接口的接口实例;
检测所述基础服务层32注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务,在检测到所述RPC服务接口或所述RPC服务接口的接口实例不能正常服务的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例。
在至少一个示例性实施例中,所述注册中心36用于通过以下方式检测所述基础服务层32注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务:
接收所述基础服务层32通过所述RPC服务接口或所述RPC服务接口的每个接口实例定期发送的心跳信息;
在预定时间内未接收到所述心跳信息的情况下,确定所述RPC服务接口或所述RPC服务接口的每个接口实例不能正常服务;否则,确定所述RPC服务接口或所述RPC服务接口的每个接口实例正常服务。
在至少一个示例性实施例中,所述基础服务层32和所述应用服务层34还用于向所述注册中心36订阅RPC服务列表;所述注册中心36用于按照预定策略向所述基础服务层32和所述应用服务层34发送所述RPC服务列表,其中,所述预定策略包括以下至少之一:定期发送、所述RPC服务列表发生变更时发送。
在至少一个示例性实施例中,所述应用服务层34用于:根据获取的所述RPC服务接口,通过RPC组件与所述至少一个RPC服务建立连接,并通过RPC协议与所述至少一个RPC服务进行数据交互或传输以提供所述应用服务。
在本实施例中还提供了一种用于实施上述DevOps系统的运算装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
需要说明的是,上述DevOps系统是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:DevOps系统中的各个层级和注册中心位于同一处理器中或由同一处理器实现;或者,DevOps系统中的各个层级和注册中心以任意组合的形式分别位于不同的处理器中或由不同的处理器实现。
在本实施例中提供了一种运行于计算机的基于DevOps系统的服务提供方法,图4是根据本发明实施例的基于DevOps系统的服务提供方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,所述DevOps系统的基础服务层提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述DevOps系统的注册中心。
步骤S404,所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口。
在至少一个示例性实施例中,所述注册中心向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口,例如,可以通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,并提供给所述应用服务层。
在至少一个示例性实施例中,所述基础服务层注册的所述RPC服务的RPC服务接口可以包括多个接口实例。在这种情况下,所述注册中心可以通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,在确定查找到的所述RPC服务接口包括多个接口实例的情况下,根据每个接口实例的健康状态选择一个或多个接口实例提供给所述应用服务层。在至少一个示例性实施例中,每个接口实例的所述健康状态包括以下至少之一:所述接口实例的负载情况、所述接口实例的响应速度、所述接口实例是否正常服务。
在至少一个示例性实施例中,所述注册中心通过以下方式至少之一管理所述基础服务层注册的所述RPC服务的RPC服务接口:接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的注销请求的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例;接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的变更请求的情况下,根据所述变更请求更新所述RPC服务接口或所述RPC服务接口的接口实例;检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务,在检测到所述RPC服务接口或所述RPC服务接口的接口实例不能正常服务的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例。
在至少一个示例性实施例中,所述注册中心通过以下方式检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务:接收所述基础服务层通过所述RPC服务接口或所述RPC服务接口的每个接口实例定期发送的心跳信息;在预定时间内未接收到所述心跳信息的情况下,确定所述RPC服务接口或所述RPC服务接口的每个接口实例不能正常服务;否则,确定所述RPC服务接口或所述RPC服务接口的每个接口实例正常服务。
步骤S406,所述DevOps系统的应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
在至少一个示例性实施例中,所述应用服务层根据获取的所述RPC服务接口,通过RPC组件与所述至少一个RPC服务建立连接,并通过RPC协议与所述至少一个RPC服务进行数据交互或传输以提供所述应用服务。
在至少一个示例性实施例中,所述基础服务层和所述应用服务层还向所述注册中心订阅RPC服务列表;所述注册中心按照预定策略向所述基础服务层和所述应用服务层发送所述RPC服务列表,其中,所述预定策略包括以下至少之一:定期发送、所述RPC服务列表发生变更时发送。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,DevOps系统的基础服务层提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述DevOps系统的注册中心;
S2,所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口;
S3,所述DevOps系统的应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,DevOps系统的基础服务层提供RPC服务,并将所述RPC服务的RPC服务接口注册到所述DevOps系统的注册中心;
S2,所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口;
S3,所述DevOps系统的应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
以下详细描述本发明实施例所基于的系统架构,并通过示例性实施例给出DevOps系统逻辑架构实现。
当前市场上DevOps产品比较多,系统运行的业务流程基本已经成熟,但也面临一些问题,单体式应用开发效率高但扩展较差、也不能支持平滑升级高可用和负载均衡策略,当前主流的SpringCloud微服务架构生态复杂,依赖组件多,需要整体串联起来,对团队开发人员总体开发水平要求较高,导致系统研发成本快速上升。同时应用级服务发现,需要在调用端编写较多的业务代码,就导致服务端模块关系有调整,调用端要全部重构,成本过高。因此,急需解决本地开发困难,部署流程复杂,模块调整成本过高的问题。为此,本发明实施例提出了一种基于RPC架构的DevOps系统架构设计,用于克服目前DevOps系统架构所具有的一系列问题。
图5是根据本发明实施例的基于RPC架构的DevOps系统架构示意图,如图5所示,本发明实施例的DevOps系统采用远程过程调用(Remote Procedure Call,RPC)架构,通过RPC架构,能够在远程调用时像本地调用一样方便,让调用者感知不到远程调用的逻辑。借助RPC架构,只需引入极少的组件就可以满足DevOps系统的业务场景,依靠成熟的RPC组件(Dubbo、motan等)结合注册中心,可以像开发本地应用一样引用RPC服务实现本地快速开发,在基础服务层中的基础服务所开发的接口不直接对外调用,而是直接通过注册中心组件的客户端http接口注册到服务治理层中的注册中心,同时一个接口可以在注册中心注册多个实例,注册中心组件会根据每个实例的负载情况进行适时转发,而这对开发者是无感知的,都由注册中心实现,应用服务层依托基础服务层接口都由服务治理层的注册中心来实现,应用层逻辑首先连接到注册中心集群再指定要调用的基础注册层接口名称,注册中心会自动根据健康状态为其分配符合要求的接口地址,如果某个基础服务层实例掉线或宕机无法提供服务,注册中心也会定时发送消息实现健康检查发现基础服务层实例的状态变化,将其从注册中心实例中移除从而不影响应用层正常业务逻辑,应用逻辑层从注册中心拿到接口地址直接依靠(Dubbo、motan)等组件与其建立连接并采用RPC协议进行数据交互,采用RPC协议进行传输实现微服务,比http传输由于减少握手次数,并支持对传输内容进行压缩从而提高了传输办理效率。同时对于开发人员也是无感知的,不需要额外的理解成本和开发http协议对应的client调用逻辑。
系统主要业务模块分为基础服务、组织管理中心、权限认证中心、流水线中心等模块,应用服务主要有产品服务、质量服务、CI/CD服务等,与传统DevOps系统架构不同的是由于基于RPC交互协议,在基础服务层和应用层每个模块都是独立可拆分,应用层逻辑无需调整,传统DevOps系统架构的方式需要重新在代码层面指定拆分后模块名称,如果模块重构后拆分较多,传统DevOps系统架构模式会导致代码大量调整。
内置流水线引擎默认采用平台规范接口,可按规范实现来支持多种不同ci/cd组件(jenkins、GitLab CI等),本发明实施例采用GitLab ci做为实现。通过DevOps平台内置引擎与外部GitLab ci交互实现,全流程实现需求管理、设计、开发、测试、发布制品库、部署。
图6是根据本发明实施例的基于RPC架构的DevOps系统逻辑架构示意图,如图6所示,系统访问流程,自上向下分别为应用层—>业务处理层(RPC服务)—>mysql数据存储层,其中业务处理层通过将RPC service接口注册到nacos注册中心对外服务,应用层通过将不同的controller根据需求组合成不同的starter入口面向nginx层对外服务,其中controller通过连接到注册中心获取RPC service相关接口服务进行消费,starter入口层做为基础网关,主要通过maven模块依赖整合各模块controller。controller和服务层service可以灵活的根据业务情况组合,无需要代码调整。RPC服务层注册服务到注册中心中,starter所有controller层通过注册中心按照指定负载均衡策略选取合适的服务,负载均衡由具体采用的注册决定,本架构采用apache组织开源组件nacos,支持轮询、权限、ip_hash几种主流规则,直接在组件中配置即可。
starter入口,所有模块可独立运行也可以通过创建一个空starter工程,整合多个模块合并的情况,适合在本地开发和前期系统负载量较小的情况,可以很好的节约资源,又可以根据访问量迅速拆分升级实现高可用。
maven模块化管理工具组合controller属上面描述starter中被包含和可独立运行的模块类型(controller和service)中的一种示例。
controller工程中每个工程中都包含application.yml配置文件,通过yml配置连接到nacos注册中心,例如,可以基于注册中心的信息(服务器地址、端口、用户名、密码)配置nacos所对应的服务器地址、端口、用户名、密码,后续dubbo标准RPC以nacos作为注册中心。
在上面注册中心配置完成后,controller可以引用nacos中注册的RPC服务,区别是无需要像传统SpringCluoud微服务一样指定具体的应用名称,也不需要写回调处理逻辑。
同时通过控制层controller接口实现系统对应用的监控,对接监控平台实现可视化展示系统运行健康状况和内存占用等详细信息,通过过滤器和拦截器相结合实现日志记录和接口的鉴权。在业务层服务service通过在模块中配置注册中心的地址,引用其他服务RPC接口,同时在服务中与GitLab提供的开放http服务接口数据交互。
综上所述,本发明实施例提供的基于RPC架构的可扩展的DevOps平台,具有以下特点:
1)RPC协议支持种类多,减少DevOps平台中不同服务之间的http创建连接的时间,同时支持对传输内容压缩。
2)在DevOps平台服务层service之间的交互关系通过接口服务发现实现,这与传统微服务应用级服务发现相比,组件间依赖关系更加独立灵活,不强依赖,扩展成本低。
3)在DevOps平台中,除基础层开源组件外,在服务层只引入注册中心组件,比传统微服务引入的组件减少80%,降低了开发人员的学习理解成本,同时也能满足DevOps产品的高可用需求,且具有依赖组件少,维护成本低的优点。
4)取消硬编码调用,在SpringCloud微服务调用一次,需要写对应的调用client代码和调用失败后的处理代码,并且需要手动指定调用的服务名称,如服务模块调整,需要重写所有调用逻辑,RPC方式是通过注册中心引用服务名称,与应用无关,也不需要重新再编写调用逻辑代码。
5)本地部署架构自主简易、开发成本低,模块可扩展性好,能够解决本地开发困难、依赖组件过多,部署架构复杂导致运维和开发成本过高的问题。
本发明实施例中的DevOps平台通过采用RPC架构来达到单体式应用本地快速开发的优势,可以快速重新规划模块关系而不调整程序代码,同时新增模块和精减模块对架构影响较小,来达到部署模式简洁清晰易懂,并支持快速平滑部署高可用实例。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种DevOps系统,其特征在于,包括:基础服务层、应用服务层和注册中心,其中,
所述基础服务层,用于提供远程过程调用RPC服务,并将所述RPC服务的RPC服务接口注册到所述注册中心;
所述应用服务层,用于向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务;
所述注册中心,用于管理所述基础服务层注册的所述RPC服务的RPC服务接口,并向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口。
2.根据权利要求1所述的DevOps系统,其特征在于,所述注册中心用于通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:
接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;
根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,并提供给所述应用服务层。
3.根据权利要求1所述的DevOps系统,其特征在于,所述基础服务层注册的所述RPC服务的RPC服务接口包括多个接口实例。
4.根据权利要求3所述的DevOps系统,其特征在于,所述注册中心用于通过以下方式向所述应用服务层提供所述应用服务层要调用的至少一个RPC服务的RPC服务接口:
接收所述应用服务层发送的接口获取请求,其中,所述接口获取请求中携带所述应用服务层要调用的至少一个RPC服务的标识信息;
根据所述标识信息查找要调用的每个RPC服务的RPC服务接口,在确定查找到的所述RPC服务接口包括多个接口实例的情况下,根据每个接口实例的健康状态选择一个或多个接口实例提供给所述应用服务层。
5.根据权利要求4所述的DevOps系统,其特征在于,每个接口实例的所述健康状态包括以下至少之一:所述接口实例的负载情况、所述接口实例的响应速度、所述接口实例是否正常服务。
6.根据权利要求1-5中任一项所述的DevOps系统,其特征在于,所述注册中心用于通过以下方式至少之一管理所述基础服务层注册的所述RPC服务的RPC服务接口:
接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的注销请求的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例;
接收到所述基础服务层对所述RPC服务的所述RPC服务接口或所述RPC服务接口的接口实例的变更请求的情况下,根据所述变更请求更新所述RPC服务接口或所述RPC服务接口的接口实例;
检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务,在检测到所述RPC服务接口或所述RPC服务接口的接口实例不能正常服务的情况下,移除所述RPC服务接口或所述RPC服务接口的接口实例。
7.根据权利要求6所述的DevOps系统,其特征在于,所述注册中心用于通过以下方式检测所述基础服务层注册的所述RPC服务的所述RPC服务接口或所述RPC服务接口的每个接口实例是否正常服务:
接收所述基础服务层通过所述RPC服务接口或所述RPC服务接口的每个接口实例定期发送的心跳信息;
在预定时间内未接收到所述心跳信息的情况下,确定所述RPC服务接口或所述RPC服务接口的每个接口实例不能正常服务;否则,确定所述RPC服务接口或所述RPC服务接口的每个接口实例正常服务。
8.根据权利要求1-5中任一项所述的DevOps系统,其特征在于,
所述基础服务层和所述应用服务层还用于向所述注册中心订阅RPC服务列表;
所述注册中心用于按照预定策略向所述基础服务层和所述应用服务层发送所述RPC服务列表,其中,所述预定策略包括以下至少之一:定期发送、所述RPC服务列表发生变更时发送。
9.根据权利要求1-5中任一项所述的DevOps系统,其特征在于,所述应用服务层用于:根据获取的所述RPC服务接口,通过RPC组件与所述至少一个RPC服务建立连接,并通过RPC协议与所述至少一个RPC服务进行数据交互或传输以提供所述应用服务。
10.一种基于权利要求1-9中任一项所述的DevOps系统的服务提供方法,其特征在于,包括:
所述DevOps系统的基础服务层提供远程过程调用RPC服务,并将所述RPC服务的RPC服务接口注册到所述DevOps系统的注册中心;
所述注册中心管理所述基础服务层注册的所述RPC服务的RPC服务接口;
所述DevOps系统的应用服务层向所述注册中心获取要调用的至少一个RPC服务的RPC服务接口,并根据获取的所述RPC服务接口调用所述至少一个RPC服务以提供应用服务。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求10所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求10所述的方法。
CN202210647336.1A 2022-06-09 2022-06-09 DevOps系统、服务提供方法、存储介质和电子装置 Active CN115102999B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210647336.1A CN115102999B (zh) 2022-06-09 2022-06-09 DevOps系统、服务提供方法、存储介质和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210647336.1A CN115102999B (zh) 2022-06-09 2022-06-09 DevOps系统、服务提供方法、存储介质和电子装置

Publications (2)

Publication Number Publication Date
CN115102999A true CN115102999A (zh) 2022-09-23
CN115102999B CN115102999B (zh) 2024-02-09

Family

ID=83289090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210647336.1A Active CN115102999B (zh) 2022-06-09 2022-06-09 DevOps系统、服务提供方法、存储介质和电子装置

Country Status (1)

Country Link
CN (1) CN115102999B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357231A (zh) * 2022-10-20 2022-11-18 东方合智数据科技(广东)有限责任公司 基于DevOps的应用发布系统、应用发布方法及介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017206422A1 (zh) * 2016-05-28 2017-12-07 华为技术有限公司 一种网络设备中的远程过程调用方法及网络设备
CN108874567A (zh) * 2018-07-19 2018-11-23 广州市创乐信息技术有限公司 一种服务处理方法及系统
CN108989372A (zh) * 2017-06-02 2018-12-11 华为技术有限公司 服务发现的方法、注册中心和设备
CN109257440A (zh) * 2018-10-29 2019-01-22 南京南瑞信息通信科技有限公司 一种基于服务注册中心的服务发现和客户端负载均衡方法
CN109766080A (zh) * 2019-01-22 2019-05-17 努比亚技术有限公司 微服务注册方法、装置、电子设备及可读存储介质
CN110311900A (zh) * 2019-06-19 2019-10-08 微梦创科网络科技(中国)有限公司 一种服务调用方法、装置、电子设备及存储介质
CN112256246A (zh) * 2020-09-18 2021-01-22 许继集团有限公司 一种用于电力系统中支持跨语言调用的微服务集成架构
CN112328413A (zh) * 2020-11-25 2021-02-05 中国工商银行股份有限公司 应用服务的调用方法、装置及系统
CN112988223A (zh) * 2021-03-25 2021-06-18 北京百度网讯科技有限公司 框架集成方法、装置、电子设备及存储介质
CN113821335A (zh) * 2021-01-22 2021-12-21 北京沃东天骏信息技术有限公司 一种数据处理的方法、装置和存储介质
CN114064766A (zh) * 2020-07-29 2022-02-18 阿里巴巴集团控股有限公司 服务注册方法及装置
CN114416276A (zh) * 2021-12-02 2022-04-29 北京百度网讯科技有限公司 设备管理服务的调度方法、装置、电子设备及存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017206422A1 (zh) * 2016-05-28 2017-12-07 华为技术有限公司 一种网络设备中的远程过程调用方法及网络设备
CN113162996A (zh) * 2017-06-02 2021-07-23 华为技术有限公司 服务发现的方法、注册中心和设备
CN108989372A (zh) * 2017-06-02 2018-12-11 华为技术有限公司 服务发现的方法、注册中心和设备
CN108874567A (zh) * 2018-07-19 2018-11-23 广州市创乐信息技术有限公司 一种服务处理方法及系统
CN109257440A (zh) * 2018-10-29 2019-01-22 南京南瑞信息通信科技有限公司 一种基于服务注册中心的服务发现和客户端负载均衡方法
CN109766080A (zh) * 2019-01-22 2019-05-17 努比亚技术有限公司 微服务注册方法、装置、电子设备及可读存储介质
CN110311900A (zh) * 2019-06-19 2019-10-08 微梦创科网络科技(中国)有限公司 一种服务调用方法、装置、电子设备及存储介质
CN114064766A (zh) * 2020-07-29 2022-02-18 阿里巴巴集团控股有限公司 服务注册方法及装置
CN112256246A (zh) * 2020-09-18 2021-01-22 许继集团有限公司 一种用于电力系统中支持跨语言调用的微服务集成架构
CN112328413A (zh) * 2020-11-25 2021-02-05 中国工商银行股份有限公司 应用服务的调用方法、装置及系统
CN113821335A (zh) * 2021-01-22 2021-12-21 北京沃东天骏信息技术有限公司 一种数据处理的方法、装置和存储介质
CN112988223A (zh) * 2021-03-25 2021-06-18 北京百度网讯科技有限公司 框架集成方法、装置、电子设备及存储介质
CN114416276A (zh) * 2021-12-02 2022-04-29 北京百度网讯科技有限公司 设备管理服务的调度方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357231A (zh) * 2022-10-20 2022-11-18 东方合智数据科技(广东)有限责任公司 基于DevOps的应用发布系统、应用发布方法及介质

Also Published As

Publication number Publication date
CN115102999B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
CN108206852B (zh) 一种微服务框架下的基于会话的服务实例管理方法及设备
CN105099988B (zh) 用于支持灰度发布的方法、访问方法以及装置和系统
US11576031B2 (en) Service registration in a communications network
CN109756366A (zh) 基于caas的智能网scp云服务实现系统
WO2020147331A1 (zh) 一种微服务监控方法及系统
CN110990047B (zh) 用于多个微服务架构的融合方法及装置
CN108965381A (zh) 基于Nginx的负载均衡实现方法、装置、计算机设备和介质
CN108683516A (zh) 一种应用实例的升级方法、装置和系统
CN112035228A (zh) 一种资源调度方法及装置
WO2016184175A1 (zh) 数据库处理方法及装置
GB2407887A (en) Automatically modifying fail-over configuration of back-up devices
CN103019757A (zh) 一种在多台客户端间同步软件的方法、装置及系统
CN112799786A (zh) 微服务实例的退出方法、装置、设备及存储介质
US10389653B2 (en) Request distribution system, management system, and method for controlling the same
CN110196731A (zh) 一种运维系统、方法及存储介质
CN103530193A (zh) 用于调节应用进程的方法和设备
CN114189525B (zh) 服务请求方法、装置和电子设备
CN106790403B (zh) 实现移动云计算中间平台的方法及实现分布式的方法
WO2021057605A1 (zh) 设备管理方法、装置、系统、设备及存储介质
WO2020211362A1 (zh) 提高集群系统可用性的方法、装置和计算机设备
CN113794652A (zh) 数据处理方法、装置、电子设备及存储介质
CN113127023B (zh) 业务升级的方法、装置和系统
CN115102999A (zh) DevOps系统、服务提供方法、存储介质和电子装置
CN116319732A (zh) 一种基于RabbitMQ的消息队列集中配置管理系统及方法
CN114448686B (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