CN112306848B - 微服务系统的架构视图生成方法及装置 - Google Patents
微服务系统的架构视图生成方法及装置 Download PDFInfo
- Publication number
- CN112306848B CN112306848B CN201910703963.0A CN201910703963A CN112306848B CN 112306848 B CN112306848 B CN 112306848B CN 201910703963 A CN201910703963 A CN 201910703963A CN 112306848 B CN112306848 B CN 112306848B
- Authority
- CN
- China
- Prior art keywords
- service
- architecture
- component
- micro
- trigger
- 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 119
- 230000008569 process Effects 0.000 claims abstract description 64
- 230000001960 triggered effect Effects 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 11
- 238000004891 communication Methods 0.000 claims description 17
- 230000002776 aggregation Effects 0.000 claims description 10
- 238000004220 aggregation Methods 0.000 claims description 10
- 238000012098 association analyses Methods 0.000 claims description 10
- 230000009466 transformation Effects 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000003860 storage Methods 0.000 claims description 3
- 238000009420 retrofitting Methods 0.000 claims 1
- 238000012800 visualization Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 27
- 230000003068 static effect Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000009960 carding Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000010219 correlation analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种微服务系统的架构视图生成方法及装置,方法包括:分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;各个服务及各个组件被封装在其对应的触发适配器中;应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。该方式通过构建触发适配器对服务和组件的访问流量进行拦截,分析出元素之间的调用关系,从而生成微服务系统的架构视图,实现系统架构的可视化,该方式处理的数据量小且处理的实时性高。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种微服务系统的架构视图生成方法及装置。
背景技术
随着信息技术的不断发展,企业逐步深入推进微服务架构改造,应用系统已经从单体时代来到了微服务时代,系统架构复杂度也变得越来越高。随着架构变化日趋频繁,系统微服务改造后的实际架构模型可能与静态预期模型已经产生了巨大差异,架构师或系统运维人员很难准确记忆所有资源实例的构成和交互情况。而使用与实际架构不符的架构图对线上架构的认知的危害是巨大的,因此需要不断更新系统架构的视图,以保持对系统架构的敏感度。其次,由于系统架构在动态演化过程中可能引入了不可靠的因素,比如弱依赖变强依赖、局部容量不足、系统耦合过重等,给系统的稳定性带了极大的安全隐患。因此,在面对系统架构改造以及稳定性治理工作时,都会通过梳理架构图的方式,呈现系统架构中每个组件之间的交互方式及状态,架构可视化能够清晰、明确、动态地帮助识别架构中存在的问题、建立高可用的系统、规避架构漏洞而带来的隐患以及构建稳定安全的系统架构。
在一种现有技术中,梳理架构图的方式为手工绘制法,即架构图是静态的,如停留在PPT或者Word上。在另一种现有技术中,基于CMDB(Configuration ManagementDatabase,配置管理数据库)中业务系统的配置数据及其相关关系发现业务拓扑,即在CMDB配置管理系统中录入主机、数据库、中间件以及业务系统的数据,并维护业务系统的数据之间关联关系,来呈现业务系统的拓扑架构视图。在另一种现有技术中,通过在交换机上配置端口镜像,对端口进行抓包,对抓包结果进行分析,生成业务拓扑。
但是,发明人在实现本发明的过程中发现现有技术至少存在以下不足:上述第一种现有技术中,很多时候架构已经发生了非常大的变化,但手工绘制的静态架构图无法及时更新。上述第二种现有技术中,由于CMDB的数据反应的是一个系统的模糊架构,而非业务系统动态调用过程中的实时架构,所以严格意义上来说还是一种静态架构拓扑关系,相比较于第一种现有技术,只是将其架构构建由手工变成了自动化,使用计算机系统的自动化手段来实现。这两种方式都是采用的一种静态方式且非实时呈现系统的整体架构,并不能够很好的界定和反映系统所包含的服务、组件以及运行环境之间的核心调用关系,而且由于架构的更新不及时,对线上架构的认知差异性会导致严重的生产危害,也不能可视化每一次业务调用产生的动态架构。上述第三种现有技术中,虽然可以生成动态拓扑,但抓包数据量处理大,分析难度很大,得到的拓扑准确性差。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的微服务系统的架构视图生成方法及装置。
根据本发明的一个方面,提供了一种微服务系统的架构视图生成方法,包括:
分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;
应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;
其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。
可选地,分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器具体包括:
针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;
则被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求进一步包括:
被调用触发的触发适配器中的客户端拦截针对被调用触发的触发适配器所对应的服务或者组件的访问请求。
可选地,客户端中还包括识别器;则对访问请求进行识别处理,得到关键架构元素信息进一步包括:
识别器对访问请求进行分析处理,得到关键架构元素信息。
可选地,应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图具体包括:
应用端发起N次调用,其中,N>1,对每一次调用过程中被调用触发的各个触发适配器所得到关键架构元素信息进行关联分析,重构得到聚合架构视图。
可选地,关键架构元素信息具体包括:
调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息。
可选地,方法进一步包括:
根据用户选择的目标调用ID,获取目标调用ID所对应调用过程的目标架构视图,将目标架构视图提供给用户。
可选地,分别对微服务系统中的各个服务及各个组件进行改造进一步包括:
根据各个服务及各个组件所属的架构层,对各个服务及各个组件分层进行改造。
根据本发明的另一方面,提供了一种微服务系统的架构视图生成装置,包括:
改造模块,适于分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;
应用端,适于发起调用;
架构视图生成模块包括:触发适配器,适于当被调用触发时,拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息;
架构视图生成模块适于:根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;
可选地,改造模块进一步适于:
针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;
其中,客户端适于:当其对应的触发适配器被调用时,拦截针对被调用触发的触发适配器所对应的服务或者组件的访问请求。
可选地,客户端中还包括识别器,适于对访问请求进行分析处理,得到关键架构元素信息。
可选地,应用端进一步适于:发起N次调用,其中,N>1;
架构视图生成模块进一步适于:对每一次调用过程中被调用触发的各个触发适配器所得到关键架构元素信息进行关联分析,重构得到聚合架构视图。
可选地,关键架构元素信息具体包括:
调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息
可选地,装置进一步包括:
目标架构视图获取模块,适于根据用户选择的目标调用ID,获取目标调用ID所对应调用过程的目标架构视图,将目标架构视图提供给用户。
可选地,改造模块进一步适于:
根据各个服务及各个组件所属的架构层,对各个服务及各个组件分层进行改造。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述微服务系统的架构视图生成方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述微服务系统的架构视图生成方法对应的操作。
根据本发明的微服务系统的架构视图生成方法,分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。该方式提供了一种高效的分析微服务系统架构的方式,通过构建各个服务以及各个组件的触发适配器,利用触发适配器对服务和组件的访问流量进行拦截,分析识别出调用过程中被调用的关键元素及关键元素之间的调用关系,从而生成微服务系统的架构视图,实现系统架构的可视化,该方式处理的数据量小且实时性高,有助于实现及时对系统架构视图进行更新,生成的架构拓扑关系更加准确。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的微服务系统的架构视图生成方法的流程示意图;
图2示出了根据本发明另一个实施例的微服务系统的架构视图生成方法的流程示意图;
图3示出了一种单体系统架构图和一种微服务系统架构图;
图4示出了本发明一个实施例中触发适配器的示意图;
图5a示出了本发明一个示例中的单次调用流程的示意图;
图5b示出了本发明一个示例中所构建的单次调用的架构拓扑视图;
图6a示出了本发明一个示例中微服务系统下的多实例运行环境的示意图;
图6b示出了本发明一个示例中经过N轮调用形成的聚合架构视图;
图7示出了根据本发明另一个实施例的微服务系统的架构视图生成装置的功能模块图;
图8示出了根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
应用单体系统中,所有业务处理模块(即服务)都是被封装在一个可独立部署和运行的Web容器中,其形成的架构也是极其简单和固定的,无论通过怎样的路径访问,都是静态的架构视图。而相比较微服务系统,由于单体业务处理模块被拆分成多个具有高内聚低耦合的微服务,且每一个微服务都拥有多个动态实例,且独立使用不同组件(如数据库、消息队列、中间件等),所以每次服务访问都会产生不同的访问路径,形成不同的架构视图,也就是动态架构视图,仅仅用一张静态架构视图不能够刻画其全貌。图3示出了一种单体系统架构图和一种微服务系统架构图,如图3所示,单体系统中模块X、模块Y、模块Z被封装在一个业务逻辑中,经过拆分之后,模块Z被单独构建成为一个微服务,并具有独立的数据库和相关运行容器。基于此,本实施例提供了一种通过构建Trigger(触发器)适配器的方式对微服务系统架构进行可视化的方法。
图1示出了根据本发明一个实施例的微服务系统的架构视图生成方法的流程示意图,如图1所示,该方法包括:
步骤S101,分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中。
本实施例方法的核心在于寻找在体系结构中有意义和有效的元素以及这些元素之间的关系,排除掉不重要的信息,给用户呈现有价值的视图,特别是在微服务架构下庞大而复杂的调用关系链场景中,主要目的就是识别每个进程是什么,发生的网络调用源端是什么,调用过程中的关键指标等信息。基于此,本实施例的方法利用非侵入的方式部署触发适配器,利用触发适配器来捕获关键架构元素信息。
具体地,针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在触发适配器中,将该组件也封装在触发适配器中,最终得到每一个服务分别对应的触发适配器以及每一个组件分别对应的触发适配器。
步骤S102,应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图。其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。
微服务系统改造之前,当应用端发起调用时,会访问微服务系统中的服务以及组件。那么,对经过改造的微服务系统进行调用时,服务以及组件对应的触发适配器会被调用触发。被调用触发的触发适配器拦截针对其对应的服务或者组件的访问流量,对访问流量进行处理,识别出有意义以及有效的调用端到被调用端的相关信息,从而确定关键架构元素。利用触发适配器对访问流量进行引流拦截,实现进程数据和网络调用数据等关键数据的拦截,进一步对拦截到的数据进行分析,调用流程中的关键架构元素信息。
具体实施时,可以根据单次调用过程中被调用触发的各个触发适配器输出的关键架构元素信息,构建单次调用的架构拓扑视图,实现单次调用架构的可视化,也即刻画微服务系统的动态架构。如对被调用触发的各个触发适配器输出关键架构元素信息进行分析,分析被调用的服务以及被调用的组件之间的调用关系,根据分析结果构建单次调用的架构视图。或者,也可以对多次调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息进行关联分析,重构出聚合架构视图,即微服务系统的整体架构视图。
由此可见,根据本实施例的所提供的微服务系统的架构视图生成方法,分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。该方式提供了一种高效的分析微服务系统架构的方式,通过构建各个服务以及各个组件的触发适配器,利用触发适配器对服务和组件的访问流量进行拦截,分析识别出调用过程中被调用的关键元素及关键元素之间的调用关系,从而生成微服务系统的架构视图,实现系统架构的可视化,该方式处理的数据量小且实时性高,有助于实现及时对系统架构视图进行更新,生成的架构拓扑关系更加准确。
图2示出了根据本发明另一个实施例的微服务系统的架构视图生成方法的流程示意图,如图2所示,该方法包括:
步骤S201,针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器。
该步骤是预执行的步骤,在进行架构分析之前,首先对微服务系统中的每一个服务以及每一个组件进行改造。本实施例中设计了一种触发适配器,包含Client端和Server端,两者成对进行部署,将每一个服务以及每一个组件分别进行Server端的封装,并实现各自对应的独立Client端。需要强调的是,本发明引入触发适配器是一种非侵入的方式,是对服务或者组件的外层封装,能够独立运行和部署。
可选地,在进行改造时,根据各个服务及各个组件所属的架构层,对各个服务及各个组件分层进行改造。架构层具体包括:应用层、服务层、PaaS(Platform as a Service,平台即服务)层和IaaS(Infrastructure as a Service,基础设施即服务)层。通过分层设计不同的触发适配器,利用不同层次的触发适配器可以开展架构分层治理,例如,根据位于各层的触发适配器所捕获到的关键架构元素信息(如调用延时信息、被调用者的CPU信息及内存信息)对各层的架构进行分析以及进行优化调整。
步骤S202,应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图。其中,被调用触发的触发适配器中的客户端拦截针对所述被调用触发的触发适配器所对应的服务或者组件的访问请求,客户端中的识别器对所述访问请求进行分析处理,得到关键架构元素信息。
图4示出了本发明一个实施例中触发适配器的示意图。如图4所示,触发适配器包含一个Client端和一个Server端,Client端中包含识别器,Server端中封装了服务或者组件。Client端用于拦截所有访问对应服务或者组件的流量,识别器用于将有意义和有效的元素信息关键架构元素以日志的形式捕获关键架构元素信息。
调用过程中,当访问某个服务或者组件时,该服务或者组件对应的触发适配器被调用,被触发调用的触发设配器中的客户端对访问请求进行拦截。通过这种采用引流拦截的方式,能够灵活、动态和及时地采集进程数据和网络调用数据等关键数据。
然后,客户端中设置的识别器对客户端所拦截到的访问请求进行分析,得到关键架构元素信息,通过识别器,能够将有效的元素信息以日志的形式捕获关键架构元素信息,从而以日志的形式构建服务以及组件之间的调用关系。关键架构元素信息包括:调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息。
其中,调用ID是一次端到端调用的唯一标识,即从应用端发起调用,可能经过N个服务或者组件,该单次调用生成的ID是唯一且不重复的,这是生成动态架构可视化的串接器,非常重要且关键。时间信息(DateTime)是用于记录一次调用过程中每一个触发适配器捕获到的时间信息;源端ID(FromID)是标识调用者的唯一索引信息;源端IP(FromIP)是用于记录调用者的所属IP;目的端ID(ToID)是标识被调用者的唯一索引信息;目的端进程ID(ToProcessID)是被调用者Server端的服务进程ID;目的端IP(ToIP)是用于记录被调用者的所属IP,用于后续配合Port确定运行环境信息;目的端Port(ToPort)是被调用者的运行端口;调用延时(Delay)是标识本次服务或者组件调用的延时情况,能够显性标识服务或组件的状态。可以理解,这里所说的调用者以及被调用者均指的是系统中的服务或者组件。
步骤S202包括以下两种实施方式,第一种实施方式为单次调用的架构视图的生成方式,第二种实施方为系统整体架构视图的生成方式,下面分别进行说明。
第一种实施方式:在实际生产过程中,架构师和运维人员更多地关注每一次业务调用,所产生的动态架构是怎样的。因此,在获取到一次调用过程的关键架构元素信息之后,根据获取到的关键元素信息分析被调用的元素之间的调用关系,生成单次调用的架构拓扑视图。具体地,以日志的方式构建被调用的服务以及组件之间的调用关系,这种方式能够更加准确地彰显服务以及组件之间的调用关系进而准确地构建单次调用的架构拓扑视图,也就是微服务系统的动态架构视图。
举例来说,图5a示出了本发明一个示例中的单次调用过程的示意图,该示例中,首先,应用端发起调用流程,由应用端生成唯一的调用ID,并向此次调用范围内的所有后续Trigger(触发适配器)传入此调用ID,由图可知,本次调用过程中调用的服务及组件包括:应用层的“Web”、接入层的“Nginx集群”、服务层“Web-Service集群”和“Server A”、IaaS层的“DB”(数据库)和“Redis”、PaaS层的“虚拟机”以及“物理机”;然后,链路过程中的Trigger捕获关键架构元素,即上述各个被调用的服务以及组件所对应的Trigger记录的端到端的Trigger信息(关键架构元素信息);最后,根据调用过程中Trigger生成的端到端Trigger信息,分析得到单次调用架构拓扑信息,构建单次调用的架构拓扑视图。
图5b示出了本发明一个示例中所构建的单次调用的架构拓扑视图,如图5b所示,生成的架构视图能够彰显本次调用过程中具体调用了哪些服务以及组件,以及各个服务和组件之间的调用关系,在视图中以日志的方式显示各个被调用的触发适配器所获取的关键架构元素信息,有助于相关人员高效进行相关分析处理。
第二种实施方式:由于微服务场景下,每一层的服务或组件的运行实例并不是只有一个,且组件和服务之间存在调用,所以无法通过单次动态架构生成来展示整个架构的完整视图。由于服务访问均采用负载均衡策略,经过N轮调用,能够将所有服务或组件示例都遍历。基于此,本实施例在单次调用的架构视图的基础上,通过不断重复迭代来聚合和重构完整的架构视图,实现全局的架构可视化。
具体地,应用端发起N次调用,调用次数N的数值可以根据实际需要进行设置。针对于每一次调用过程,对每一次调用过程中被调用触发的触发设配器所获取的关键架构元素信息进行关联分析,最终实现架构信息聚合,重构出整体的架构视图,例如,对每一次调用过程中各个被触发调用的触发适配器输出的源端ID和目的端ID等关键信息进行关联分析,重构出系统整体架构视图,或者,针对于每一次调用过程,对被触发调用的各个触发适配器输出的关键架构元素信息进行分析,构建该调用过程的动态架构信息,然后,根据每一次调用过程的动态架构信息,构建出系统整体架构视图。由于系统的架构不是一成不变的,系统架构会随着系统的版本迭代不断进行演化,而反应在架构视图上就是整体架构的完善和更新。
可选地,应用端按照预设的频率或者预设的周期发起调用,就可以达到定时对系统整体架构进行更新和完善的目的。由此可见,本实施例中的架构视图生成方法是比较方便的,只需应用端去调用微服务系统,就可以完成系统架构的可视化,从而能够达到及时更新架构视图的目的,并且生成的架构视图的准确性也很高。
除此之外,本发明还提供有架构视图的回溯功能,由于调用ID能够唯一标识调用过程,用户可通过选择调用ID,回溯历史中的某一时刻的架构视图。具体地,根据用户选择的目标调用ID,获取与目标调用ID所对应的调用过程的目标架构视图,将获取的目标架构视图提供给用户。这种方式具有较好的应用意义,例如,系统版本在变更时,可以排查发布后的系统架构是否发生了违背一些高可用原则的问题,或者排查是否出现了不合理的依赖问题等等。
图6a示出了本发明一个示例中微服务系统下的多实例运行环境的示意图,图6b示出了本发明一个示例中经过N轮调用形成的聚合架构视图。每一次调用过程中,获取关键架构元素信息的方法参照上述描述,通过对每一次调用过程中被调用触发的各个触发适配器所获取的关键架构元素信息进行关联分析,最终实现架构信息聚合,重构出整体架构视图。
由此可见,根据本实施例所提供的方法,能够生成微服务系统的架构视图,包括单次调用的架构视图和整体架构视图,而架构视图又具有很广泛的应用意义,例如能够用于解决以下问题:
(1)确定系统边界,通过构建一张实时、完整的架构图,明确系统所包含的各个组件以及各个组件之间的核心调用关系。因为这些组件的集合就是系统的处理边界,系统架构的边界在一定程度上也反映了业务域的边界。
(2)架构问题识别,依照高可用的架构准则,结合可视化的架构图,可以评估架构可能存在的安全风险,比如系统在容灾、隔离以及自愈维度下的健壮性。
(3)提高系统可用性,获取得到系统架构的上下游依赖关系图,在故障发生时,开发人员可以借助依赖数据快速定位到问题的来源,极大缩短问题修复时间。运维人员可以借助架构图,梳理出系统中存在的强弱依赖,在业务高峰期对弱依赖进行降级,或者针对系统依赖的各个组件进行故障模拟,以评测系统整体在面对局部故障的可靠性。架构师可以根据动态架构视图,调整系统架构,使其能够更好得掌握系统运行状态,更好地支撑系统可持续性发展。
由此可知,本实施例提供可一种高效的可视化微服务系统架构的方式,通过部署非侵入的包含Client端和Server端的Trigger适配器,将微服务、各类组件进行Server端封装,并实现各自对应的Client端,实现所有访问该服务或者组件的流量请求都被Client端截获,通过Client端的识别器,能够将有意义和有效的元素信息以日志的形式捕获关键架构元素;通过单次调用过程中生成的端到端Trigger信息,分析并形成单次调用架构拓扑视图;通过N轮单次调用过程中生成的端到端Trigger信息,通过Trigger中生成的关键信息进行关联分析,在微服务复杂场景下构建一张动态、实时、完整的架构视图,明确系统所包含的各个组件以及各个组件之间的核心调用关系,最终实现架构信息聚合,重构出整体的架构视图,有助于识别架构中存在的问题,弥补了传统人工、静态架构视图下架构视图更新的滞后性、展示的局部性,生成手段的单一性和风险无法及时发现和把控等一系列问题;另外,该方式还提供历史架构视图的回溯功能,通过提供选择的目标调用ID,可以获取历史中的某一刻的架构视图,实现对历史的架构进行回溯。综上,该方式基于Trigger生成的关键信息,能够实现动态架构生成、架构分层治理和架构聚合、重构回放,从而能够更加准确地识别架构问题,评估架构可能存在的安全风险,提高系统可用性。
图7示出了根据本发明另一个实施例的微服务系统的架构视图生成装置的功能模块图,如图7所示,该装置包括:
改造模块71,适于分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;
应用端72,适于发起调用;
架构视图生成模块73,包括触发适配器,适于当被调用触发时,拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息;
架构视图生成模块还适于:根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;
可选地,改造模块71进一步适于:
针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;
其中,客户端适于:当其对应的触发适配器被调用时,拦截针对被调用触发的触发适配器所对应的服务或者组件的访问请求。
可选地,客户端中还包括识别器,适于对访问请求进行分析处理,得到关键架构元素信息。
可选地,应用端72进一步适于:发起N次调用,其中,N>1;
架构视图生成模块进一步适于:对每一次调用过程中被调用触发的各个触发适配器所得到关键架构元素信息进行关联分析,重构得到聚合架构视图。
可选地,关键架构元素信息具体包括:
调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息
可选地,装置进一步包括:
目标架构视图获取模块,适于根据用户选择的目标调用ID,获取目标调用ID所对应调用过程的目标架构视图,将目标架构视图提供给用户。
可选地,改造模块71进一步适于:
根据各个服务及各个组件所属的架构层,对各个服务及各个组件分层进行改造。
本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的微服务系统的架构视图生成方法。
图8示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图8所示,该电子设备可以包括:处理器(processor)802、通信接口(Communications Interface)804、存储器(memory)806、以及通信总线808。
其中:
处理器802、通信接口804、以及存储器806通过通信总线808完成相互间的通信。
通信接口804,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器802,用于执行程序810,具体可以执行上述微服务系统的架构视图生成方法实施例中的相关步骤。
具体地,程序810可以包括程序代码,该程序代码包括计算机操作指令。
处理器802可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器806,用于存放程序810。存储器806可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序810具体可以用于使得处理器802执行以下操作:
分别对微服务系统中的各个服务及各个组件进行改造,形成各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;
应用端发起调用,根据调用过程中被调用触发的各个触发适配器所输出的关键架构元素信息生成架构视图;其中,被调用触发的触发适配器拦截针对其对应的服务或者组件的访问请求,对访问请求进行识别处理,得到关键架构元素信息。
在一种可选的方式中,程序810具体可以用于使得处理器802执行以下操作:
针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;
被调用触发的触发适配器中的客户端拦截针对被调用触发的触发适配器所对应的服务或者组件的访问请求。
在一种可选的方式中,客户端中还包括识别器,识别器对访问请求进行分析处理,得到关键架构元素信息。
在一种可选的方式中,应用端发起N次调用,其中,N>1,程序810具体可以用于使得处理器802执行以下操作:对每一次调用过程中被调用触发的各个触发适配器所得到关键架构元素信息进行关联分析,重构得到聚合架构视图。
在一种可选的方式中,关键架构元素信息具体包括:调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息
在一种可选的方式中,程序810具体可以用于使得处理器802执行以下操作:根据用户选择的目标调用ID,获取目标调用ID所对应调用过程的目标架构视图,将目标架构视图提供给用户。
在一种可选的方式中,程序810具体可以用于使得处理器802执行以下操作:根据各个服务及各个组件所属的架构层,对各个服务及各个组件分层进行改造。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的电子设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (8)
1.一种微服务系统的架构视图生成方法,包括:
分别对微服务系统中的各个服务及各个组件进行改造,形成所述各个服务及各个组件分别对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中,该步骤进一步包括:针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器,以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;
应用端发起N次调用,N>1,对每一次调用过程中被调用触发的各个触发适配器所得到的关键架构元素信息进行关联分析,重构得到聚合架构视图;
其中,被调用触发的触发适配器中的客户端拦截针对所述被调用触发的触发适配器所对应的服务或者组件的访问请求,对所述访问请求进行识别处理,得到关键架构元素信息。
2.根据权利要求1所述的方法,其中,所述客户端中还包括识别器;则对所述访问请求进行识别处理,得到关键架构元素信息进一步包括:
所述识别器对所述访问请求进行分析处理,得到关键架构元素信息。
3.根据权利要求1所述的方法,其中,所述关键架构元素信息具体包括:
调用ID、时间信息、源端ID、源端IP、目的端ID、目的端进程ID、目的端IP、目的端端口信息、调用延时信息、被调用者的CPU信息及内存信息。
4.根据权利要求3所述的方法,其中,所述方法进一步包括:
根据用户选择的目标调用ID,获取所述目标调用ID所对应调用过程的目标架构视图,将所述目标架构视图提供给所述用户。
5.根据权利要求1所述的方法,其中,所述分别对微服务系统中的各个服务及各个组件进行改造进一步包括:
根据各个服务及各个组件所属的架构层,对所述各个服务及各个组件分层进行改造。
6.一种微服务系统的架构视图生成装置,包括:
改造模块,适于针对于微服务系统中的每一个服务以及每一个组件,将该服务封装在服务端中,并为封装了该服务的服务端部署相应的客户端,以形成该服务对应的触发适配器;以及,将该组件封装在服务端中,并为封装了该组件的服务端部署相应的客户端,以形成该组件对应的触发适配器;其中,各个服务及各个组件被封装在其对应的触发适配器中;
应用端,适于发起N次调用,N>1;
架构视图生成模块包括触发适配器,所述触发适配器适于:当被调用触发时,其中的客户端拦截针对其对应的服务或者组件的访问请求,对所述访问请求进行识别处理,得到关键架构元素信息;
所述架构视图生成模块还适于:对每一次调用过程中被调用触发的各个触发适配器所得到的关键架构元素信息进行关联分析,重构得到聚合架构视图。
7.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-5中任一项所述的微服务系统的架构视图生成方法对应的操作。
8.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-5中任一项所述的微服务系统的架构视图生成方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910703963.0A CN112306848B (zh) | 2019-07-31 | 2019-07-31 | 微服务系统的架构视图生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910703963.0A CN112306848B (zh) | 2019-07-31 | 2019-07-31 | 微服务系统的架构视图生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306848A CN112306848A (zh) | 2021-02-02 |
CN112306848B true CN112306848B (zh) | 2023-11-03 |
Family
ID=74485395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910703963.0A Active CN112306848B (zh) | 2019-07-31 | 2019-07-31 | 微服务系统的架构视图生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306848B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826864A (zh) * | 2022-03-11 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 应用系统的架构确定方法和装置、电子设备及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055609A (zh) * | 2016-05-25 | 2016-10-26 | 北京小米移动软件有限公司 | nginx日志监控方法、装置、消息分布系统及信息处理的装置 |
CN106464736A (zh) * | 2014-10-30 | 2017-02-22 | 环球互连及数据中心公司 | 用于基于云的服务交换的实时配置和管理的互连平台 |
CN106991035A (zh) * | 2017-04-06 | 2017-07-28 | 北京计算机技术及应用研究所 | 一种基于微服务架构的主机监控系统 |
CN108200146A (zh) * | 2017-12-29 | 2018-06-22 | 华南理工大学 | 一种轻量级的微服务架构实现方法 |
CN108270818A (zh) * | 2016-12-30 | 2018-07-10 | 中国移动通信集团公司 | 一种微服务架构系统及其访问方法 |
CN108650262A (zh) * | 2018-05-09 | 2018-10-12 | 聚龙股份有限公司 | 一种基于微服务架构的云平台扩展方法及系统 |
CN109086409A (zh) * | 2018-08-02 | 2018-12-25 | 泰康保险集团股份有限公司 | 微服务数据处理方法、装置、电子设备及计算机可读介质 |
CN109902105A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游网络技术(上海)有限公司 | 用于微服务架构的数据查询系统、方法、设备及存储介质 |
CN110062043A (zh) * | 2019-04-16 | 2019-07-26 | 杭州朗和科技有限公司 | 服务治理方法、服务治理装置、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018006097A1 (en) * | 2016-07-01 | 2018-01-04 | Gade Saikant | Orchestration of elastic value-streams |
-
2019
- 2019-07-31 CN CN201910703963.0A patent/CN112306848B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106464736A (zh) * | 2014-10-30 | 2017-02-22 | 环球互连及数据中心公司 | 用于基于云的服务交换的实时配置和管理的互连平台 |
CN106055609A (zh) * | 2016-05-25 | 2016-10-26 | 北京小米移动软件有限公司 | nginx日志监控方法、装置、消息分布系统及信息处理的装置 |
CN108270818A (zh) * | 2016-12-30 | 2018-07-10 | 中国移动通信集团公司 | 一种微服务架构系统及其访问方法 |
CN106991035A (zh) * | 2017-04-06 | 2017-07-28 | 北京计算机技术及应用研究所 | 一种基于微服务架构的主机监控系统 |
CN108200146A (zh) * | 2017-12-29 | 2018-06-22 | 华南理工大学 | 一种轻量级的微服务架构实现方法 |
CN108650262A (zh) * | 2018-05-09 | 2018-10-12 | 聚龙股份有限公司 | 一种基于微服务架构的云平台扩展方法及系统 |
CN109086409A (zh) * | 2018-08-02 | 2018-12-25 | 泰康保险集团股份有限公司 | 微服务数据处理方法、装置、电子设备及计算机可读介质 |
CN109902105A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游网络技术(上海)有限公司 | 用于微服务架构的数据查询系统、方法、设备及存储介质 |
CN110062043A (zh) * | 2019-04-16 | 2019-07-26 | 杭州朗和科技有限公司 | 服务治理方法、服务治理装置、存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
Comparison of event choreography and orchestration techniques in microservice architecture;Chaitanya K. Rudrabhatla 等;《International Journal of Advanced Computer Science and Applications》;第9卷(第8期);第18-22页 * |
基于微服务化的Web后台系统架构优化及实现;罗贵木;《中国优秀硕士学位论文全文数据库 信息科技辑》(第3期);I139-285 * |
微服务架构在大数据管理平台中的应用;侯阔 殷晓磊;《建设科技》(第19期);第13-16页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112306848A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021079B (zh) | 一种基于用户频繁访问序列模型的Web应用性能测试方法 | |
US9122510B2 (en) | Querying and managing computing resources in a networked computing environment | |
US10795748B2 (en) | Tailoring diagnostic information in a multithreaded environment | |
US9684524B1 (en) | Service-oriented system optimization using trace data | |
US20190095284A1 (en) | Enhanced application write performance | |
CN111506511A (zh) | 一种测试用例生成方法、装置、电子设备及介质 | |
CN110858172A (zh) | 一种自动化测试代码生成方法和装置 | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
US10775751B2 (en) | Automatic generation of regular expression based on log line data | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
US10873628B2 (en) | System and method for non-intrusive context correlation across cloud services | |
Kim-Hung et al. | A scalable IoT framework to design logical data flow using virtual sensor | |
CN112306848B (zh) | 微服务系统的架构视图生成方法及装置 | |
CN114338684A (zh) | 一种能源管理系统及方法 | |
CN115705190A (zh) | 依赖程度的确定方法及装置 | |
US10135728B2 (en) | Partial switching of network traffic | |
US20230118838A1 (en) | Advanced agent instrumentation for opentelemetry implementations | |
US10200271B2 (en) | Building and testing composite virtual services using debug automation | |
CN112491943A (zh) | 数据请求方法、装置、存储介质和电子设备 | |
CN111698109A (zh) | 监控日志的方法和装置 | |
CN110347380A (zh) | 前后端开发方法及设备 | |
CN112491601B (zh) | 流量拓扑生成方法、装置、存储介质及电子设备 | |
CN109992614B (zh) | 数据获取方法、装置和服务器 | |
Soundararajan et al. | Applying graph databases to cloud management: An exploration | |
CN114546817A (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 |