CN114172823A - 一种微服务链路采样方法、装置、设备及可读存储介质 - Google Patents

一种微服务链路采样方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN114172823A
CN114172823A CN202111400526.5A CN202111400526A CN114172823A CN 114172823 A CN114172823 A CN 114172823A CN 202111400526 A CN202111400526 A CN 202111400526A CN 114172823 A CN114172823 A CN 114172823A
Authority
CN
China
Prior art keywords
request
service
sampling
micro
target application
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
CN202111400526.5A
Other languages
English (en)
Other versions
CN114172823B (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.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information 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 Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN202111400526.5A priority Critical patent/CN114172823B/zh
Publication of CN114172823A publication Critical patent/CN114172823A/zh
Application granted granted Critical
Publication of CN114172823B publication Critical patent/CN114172823B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种微服务链路采样方法、装置、设备及可读存储介质,方法包括:预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率;在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;若是,则从劫持的流量中对请求进行链路数据采集。本申请公开的上述技术方案,通过分别为各微服务设置对应的采样率而实现细粒度及灵活地对目标应用中的各微服务进行链路数据采集,从而有效解决因过度采样而导致业务请求时延加大和资源占用过高与采样不足而导致无法准确定位性能瓶颈间的矛盾。

Description

一种微服务链路采样方法、装置、设备及可读存储介质
技术领域
本申请涉及微服务技术领域,更具体地说,涉及一种微服务链路采样方法、装置、设备及可读存储介质。
背景技术
随着云原生技术的不断发展,应用程序被分解为多个微服务来进行设计,这使得每个微服务从开发到交付整条链路上都是独立进行的,这不仅加快了微服务的迭代和交互效率,也提高了应用的扩展性和隔离性。但同时微服务的增加会导致业务访问时的访问链路变得复杂,一旦出现问题,就不好追踪和定位。因此,则需要对微服务进行链路追踪。
目前,在对微服务进行链路追踪时,是对整个链路上的所有微服务设置同样的采样率,并根据采样率来对各微服务的链路进行采样,以进行链路追踪。但是,如果采样率设置过大,则会导致对链路数据的过度采集,从而导致业务请求时延加大和资源占用过高,而采样率设置过小,则会导致采样不足,从而无法准确的定位性能瓶颈。
综上所述,如何灵活地对微服务链路进行采样,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种微服务链路采样方法、装置、设备及可读存储介质,用于灵活地对微服务链路进行采样。
为了实现上述目的,本申请提供如下技术方案:
一种微服务链路采样方法,包括:
预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率;
在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样;
若是,则从劫持的流量中对所述请求进行链路数据采集。
优选的,在预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率之前,还包括:
根据各所述微服务所在机器的CPU类型,通过sidecar模式分别为各所述微服务注入对应的代理;
在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样,包括:
在所述目标应用中的当前微服务接收到请求时,利用所述当前微服务中的代理进行流量劫持,并利用所述代理根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数,判断是否对所述请求进行采样;
从劫持的流量中对所述请求进行链路数据采集,包括:
利用所述代理从劫持的流量中对所述请求进行链路数据采集。
优选的,利用所述代理根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数,判断是否对所述请求进行采样,包括:
利用所述代理中的采样率控制器将所述请求中的请求采样率设置为所述当前微服务对应的采样率,并将所述请求传递给计数器;
利用所述计数器计算所述当前微服务对应的历史采样请求数与历史请求总数的比率,并判断所述比率是否大于所述请求中的请求采样率,若否,则确定对所述请求进行采样。
优选的,分别为各所述微服务注入对应的代理,包括:
分别将各所述微服务对应的代理以独立容器的形式注入到所述微服务器所在的pod中。
优选的,在从劫持的流量中对所述请求进行链路数据采集之后,还包括:
将采集到的链路数据保存在数据库中。
优选的,还包括:
以所述目标应用为边界,从所述数据库中获取与所述目标应用对应的链路数据,并根据所述链路数据获取所述目标应用对应的链路信息。
优选的,在根据所述链路数据获取所述目标应用对应的链路信息之后,还包括:
对所述目标应用对应的链路信息进行展示。
一种微服务链路采样装置,包括:
设置模块,用于预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率;
判断模块,用于在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样;
采集模块,用于若根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数确定对所述请求进行采样,则从劫持的流量中对所述请求进行链路数据采集。
一种微服务链路采样设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的微服务链路采样方法的步骤。
一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的微服务链路采样方法的步骤。
本申请提供了一种微服务链路采样方法、装置、设备及可读存储介质,其中,该方法包括:预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率;在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;若是,则从劫持的流量中对请求进行链路数据采集。
本申请公开的上述技术方案,预先根据目标应用自身的类型及目标应用中各微服务的功能分别为各微服务设置对应的采样率,然后,在目标应用中的当前微服务接收到请求时先进行流量劫持,以便为后续采样做准备,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样,且在确定要进行采样时再从劫持到的流量中对请求进行链路数据采集,以通过分别为各微服务设置与自身对应的采样率而实现细粒度及灵活地对目标应用中的各微服务进行链路数据采集,从而有效解决现有所有微服务采用同一采样率进行链路数据采集所存在的因过度采样而导致业务请求时延加大和资源占用过高与采样不足而导致无法准确定位性能瓶颈间的矛盾。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种微服务链路采样方法的流程图;
图2为本申请实施例提供的另一种微服务链路采样方法的流程图;
图3为本申请实施例提供的一种微服务链路采样装置的结构示意图;
图4为本申请实施例提供的一种微服务链路采样设备的结构示意图。
具体实施方式
随着云原生技术的不断发展,应用程序被分解为多个微服务(微服务是一种云原生架构方法)来进行设计(也即单个应用由许多松散耦合且可独立部署的较小组件或服务组成),这使得每个微服务从开发到交付整条链路上都是独立进行的,这不仅加快了微服务的迭代和交互效率,也提高了应用的扩展性和隔离性。但同时微服务的增加会导致业务访问时的访问链路变得复杂,一旦出现问题,就不好追踪和定位。因此,则需要进行链路追踪。其中,链路追踪即为将一次分布式请求还原成调用链路,进行日志记录,性能监控,并将一次分布式请求的调用情况集中展示。
在对请求进行链路数据采集时必然会导致请求时延的产生,如果不采集则无法进行链路追踪,为此,则通过设置采样率来保持两者之间的平衡,现有方案是对整个链路上的微服务设置同样的采样率,以根据采样率来对所有微服务进行链路追踪,但是,如果采样率设置过大,则会导致对链路数据的过度采集,从而导致业务请求时延加大和资源占用过高,而采样率设置过小,则会导致采样不足,从而无法准确的定位性能瓶颈。
为此,本申请提供一种微服务链路采样方法、装置、设备及可读存储介质,用于灵活地对微服务链路进行采样。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种微服务链路采样方法的流程图,本申请实施例提供的一种微服务链路采样方法,可以包括:
S11:预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率。
在本申请中,在进行微服务链路采样之前,用户可以通过页面选择要进行链路追踪的应用,并将该应用作为目标应用。然后,可以根据目标应用的类型以及目标应用中各微服务的功能来分别为各微服务设置对应的采样率,也即可以综合考虑目标应用以及其中各微服务的特点而为各微服务设置分别设置各自对应的采样率,例如:对于较为复杂的目标应用,则可以为其内部的各微服务分别设置更高的采样率,对于较为简单的目标应用,则可以为其内部的各微服务分别设置较低的采样率;对于目标应用中处理复杂逻辑的微服务则设置大的采样率,方便采集更全面的链路信息,以用于性能分析,对于目标应用中处理简单逻辑的微服务,则设置小的采样率,以降低请求时延和资源消耗。
通过上述过程可以实现结合目标应用自身以及目标应用中各微服务的特点而分别为各微服务设置对应的采样率,即实现灵活地对微服务进行采样率设置,而不再设置成同一个采样率,以使得一个请求在经过应用中的不同微服务时可以分别基于为各微服务所设置的采样率来决定是否进行采样,以便于有效解决现有所有微服务采用同一采样率进行链路数据采集所存在的因过度采样而导致业务请求时延加大和资源占用过高的问题和采样不足导致的无法准确定位性能瓶颈的矛盾。
需要说明的是,目标应用中的各微服务可以部署在kubernetes容器云平台中,其中,kubernetes容器云平台中提供容器编排能力,其是部署云原生微服务应用的基础设施平台。
S12:在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;若是,则执行步骤S13,若否,则返回执行步骤S12;
在步骤S11的基础上,当目标应用中的当前微服务接收到请求时先进行流量劫持,以为采样做准备。其中,这里提及的当前微服务具体指的是目标应用中当前接收到请求的微服务(也即目标应用中的各微服务在接收到请求时均可作为当前微服务进行后续处理)。
在进行流量劫持的同时或之后,可以获取当前微服务对应的历史采样请求数以及历史请求总数,并计算当前微服务对应的历史采样请求数与历史请求总数的比率,且判断所计算出的比率是否大于当前微服务对应的采样率,若所计算出的比率大于当前微服务对应的采样率,则表明对当前微服务的采样情况已达到为该当前微服务所设置的采样率,此时,为了降低请求时延和资源消耗,则确定不对请求进行采样(此时,历史请求总数则加1),然后,则可以返回步骤S12进行执行,也即每当当前微服务接收到请求,则根据当前微服务对应的采样率、历史采样请求数和历史请求总数判断是否对请求进行采样,以始终按照微服务对应的采样率进行采样;若所计算出的比率不大于当前微服务对应的采样率,则表明对当前微服务的采样情况未达到为该当前微服务所设置的采样率,此时,则确定对请求进行采样,然后,则可以执行步骤S13。
S13:从劫持的流量中对请求进行链路数据采集。
在根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数确定对请求进行采样时,则从步骤S12中劫持的流量中对请求进行链路数据采集(其中,所采集到的链路数据中可以包括请求耗时、请求是否成功等),以便于后续基于所采集到的链路数据进行性能分析,定位性能瓶颈。
通过上述过程可知,在本申请中,可以根据用户自己的应用的特点细粒度地控制每个微服务链路数据采集的采样率,实现同一请求在经过不同微服务时根据为微服务所设置的采样率来确定该微服务是否对本次请求采集链路数据,增强了对单个数据采集的灵活性,有效解决了对链路数据进行过度采集导致的业务请求时延加大和资源占用过高的问题和采样不足导致的无法准确定位性能瓶颈的矛盾。
本申请公开的上述技术方案,预先根据目标应用自身的类型及目标应用中各微服务的功能分别为各微服务设置对应的采样率,然后,在目标应用中的当前微服务接收到请求时先进行流量劫持,以便为后续采样做准备,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样,且在确定要进行采样时再从劫持到的流量中对请求进行链路数据采集,以通过分别为各微服务设置与自身对应的采样率而实现细粒度及灵活地对目标应用中的各微服务进行链路数据采集,从而有效解决现有所有微服务采用同一采样率进行链路数据采集所存在的因过度采样而导致业务请求时延加大和资源占用过高与采样不足而导致无法准确定位性能瓶颈间的矛盾。
参见图2,其示出了本申请实施例提供的另一种微服务链路采样方法的流程图。本申请实施例提供的一种微服务链路采样方法,在预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率之前,还可以包括:
根据各微服务所在机器的CPU类型,通过sidecar模式分别为各微服务注入对应的代理;
在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样,可以包括:
在目标应用中的当前微服务接收到请求时,利用当前微服务中的代理进行流量劫持,并利用代理根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数,判断是否对请求进行采样;
从劫持的流量中对请求进行链路数据采集,可以包括:
利用代理从劫持的流量中对请求进行链路数据采集。
在本申请中,在预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率之前,当用户选择完目标应用之后,可以开启微服务治理功能,具体地,可以基于服务网格来根据目标应用中各微服务所在机器的CPU(CentralProcessing Unit,中央处理器)类型,通过sidecar模式分别为各微服务注入对应的代理。其中,服务网格是一种用于微服务应用的可配置基础架构层,可提供诸如服务发现、负载均衡、加密、身份鉴定、授权、连接池配置等一系列功能,其是新一代的服务治理框架,具备无侵入、语言和架构无关的特点,它依托kubernetes容器云平台,为应用提供了基础设施层,提供代理以sidecar模式与微服务应用一起运行,为原生应用提供服务链路追踪、链路可视化等治理功能,解决微服务的链路追踪问题。sidecar是一种将一部分应用功能从应用本身剥离出来作为单独进程来运行的设计模式,这种设计模式允许为应用程序添加许多功能,而无需额外第三方组件的配置和应用本身代码的修改。
在为各微服务注入对应的代理的基础上,在目标应用中的当前微服务接收到请求时,则可以利用当前微服务中的代理进行流量劫持,并利用代理来根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数,判断是否对请求进行采样,且在确定对请求进行采样时,则利用代理从劫持的流量中对请求进行链路数据采集。
通过上述过程实现基于服务网格,对部署在kubernetes容器云平台上的微服务以sidecar的模式注入代理,在代理劫持流量后细粒度的控制每个微服务的链路数据采样率,该方法无需对代理进行业务逻辑的改造就可实现细粒度的采样率控制,对业务本身完全没有侵入,也即本申请可以方便、简单、无需对已部署云原生微服务的应用***进行任何改造,即可实现灵活的采样率细粒度控制,极大地节省了人力成本和时间成本。
本申请实施例提供的一种微服务链路采样方法,利用代理根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数,判断是否对请求进行采样,可以包括:
利用代理中的采样率控制器将请求中的请求采样率设置为当前微服务对应的采样率,并将请求传递给计数器;
利用计数器计算当前微服务对应的历史采样请求数与历史请求总数的比率,并判断比率是否大于请求中的请求采样率,若否,则确定对请求进行采样。
在本申请中,在利用代理根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数,判断是否对请求进行采样时,首先,可以利用代理中的采样率控制器将请求所包含的请求头中的请求采样率设置为当前服务器所对应的采样率(即设置为预先为当前微服务所设置的采样率),也即利用采样率控制器将下游过来的请求采样率(下游指的是上一个接收到请求的微服务,此时,请求所包含的请求头中的请求采样率即等于上一个接收到请求的微服务对应的采样率)修改为预先为当前微服务所设置的采样率。然后,采样率控制器则将修改完请求采样率的请求传递给计数器。之后,则利用计数器计算当前微服务对应的历史采样请求数与历史请求总数的比率,并判断比率是否大于请求中的请求采样率,若否,则确定对请求进行采样,若是,则确定不对请求进行采样。
通过上述使得请求在到达每个微服务时均将请求中的请求采样率设置为对应微服务的采样率,以便于直接基于请求所携带的信息来判断是否对请求进行采样,从而提高采样判断的便利性。
本申请实施例提供的一种微服务链路采样方法,分别为各微服务注入对应的代理,可以包括:
分别将各微服务对应的代理以独立容器的形式注入到微服务器所在的pod中。
在本申请中,在分别为各微服务注入对应的代理时,可以将分别将各微服务对应的代理以独立容器的形式注入到微服务器所在的pod(kubernetes中最小的调度单元)中,以使得代理可以更好地在kubernetes容器云平台上进行运行,从而更好地进行流量劫持和链路采样等。
本申请实施例提供的一种微服务链路采样方法,在从劫持的流量中对请求进行链路数据采集之后,还可以包括:
将采集到的链路数据保存在数据库中。
在本申请中,在从劫持的流量中对请求进行链路数据采集之后,可以将采集到的链路数据保存在数据库中。其中,在保存在数据库时,具体可以将请求以及采集到的链路数据均进行转化,并将转化后的结果保存在数据库中(转化的目的是为了便于相关人员直观地进行查看),具体可以存储到Elasticsearch(是一个基于Lucene的搜索服务器),它提供了一个分布式多用户能力的全文搜索引擎,能很方便地使大量数据具有搜索、分析和探索的能力,以便于相关人员可以从数据库中获取和查看请求及其链路数据。
本申请实施例提供的一种微服务链路采样方法,还可以包括:
以目标应用为边界,从数据库中获取与目标应用对应的链路数据,并根据链路数据获取目标应用对应的链路信息。
在本申请中,在将将采集到的链路数据保存在数据库中之后,还可以以目标应用为边界而从数据库中获取与目标应用对应的链路数据,并根据链路数据计算并获取目标应用对应的链路信息,其中,这里提及的链路信息包含但不限于目标应用的总请求数、请求最高耗时、错误请求数以及一个完整的请求经过哪些微服务、每个微服务的响应是否成功、请求在该微服务上的耗时,以供相关人员基于链路信息判断和分析应用的某个微服务是否存在性能瓶颈等。
本申请实施例提供的一种微服务链路采样方法,在根据链路数据获取目标应用对应的链路信息之后,还可以包括:
对目标应用对应的链路信息进行展示。
在本申请中,在根据链路数据获取目标应用对应的链路信息之后,还可以利用UI(User Interface,用户界面)对目标应用对应的链路信息进行展示,以便于相关人员可以直观地获取到目标应用的链路信息。
本申请实施例还提供了一种微服务链路采样装置,参见图3,其示出了本申请实施例提供的一种微服务链路采样装置的结构示意图,可以包括:
设置模块31,用于预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率;
判断模块32,用于在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;
采集模块33,用于若根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数确定对请求进行采样,则从劫持的流量中对请求进行链路数据采集。
本申请实施例提供的一种微服务链路采样装置,还可以包括:
注入模块,用于在预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率之前,根据各微服务所在机器的CPU类型,通过sidecar模式分别为各微服务注入对应的代理;
判断模块32可以包括:
判断单元,用于在目标应用中的当前微服务接收到请求时,利用当前微服务中的代理进行流量劫持,并利用代理根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数,判断是否对请求进行采样;
采集模块33可以包括:
采集单元,用于利用代理从劫持的流量中对请求进行链路数据采集。
本申请实施例提供的一种微服务链路采样装置,判断单元可以包括:
设置子单元,用于利用代理中的采样率控制器将请求中的请求采样率设置为当前微服务对应的采样率,并将请求传递给计数器;
判断子单元,用于利用计数器计算当前微服务对应的历史采样请求数与历史请求总数的比率,并判断比率是否大于请求中的请求采样率,若否,则确定对请求进行采样。
本申请实施例提供的一种微服务链路采样装置,注入模块可以包括:
注入单元,用于分别将各微服务对应的代理以独立容器的形式注入到微服务器所在的pod中。
本申请实施例提供的一种微服务链路采样装置,还可以包括:
保存模块,用于在从劫持的流量中对请求进行链路数据采集之后,将采集到的链路数据保存在数据库中。
本申请实施例提供的一种微服务链路采样装置,还可以包括:
获取模块,用于以目标应用为边界,从数据库中获取与目标应用对应的链路数据,并根据链路数据获取目标应用对应的链路信息。
本申请实施例提供的一种微服务链路采样装置,还可以包括:
展示模块,用于在根据链路数据获取目标应用对应的链路信息之后,对目标应用对应的链路信息进行展示。
本申请实施例还提供了一种微服务链路采样设备,参见图4,其示出了本申请实施例提供的一种微服务链路采样设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行存储器41存储的计算机程序时可实现如下步骤:
预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率;在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;若是,则从劫持的流量中对请求进行链路数据采集。
本申请实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
预先根据目标应用的类型及目标应用中各微服务的功能,分别为各微服务设置对应的采样率;在目标应用中的当前微服务接收到请求时进行流量劫持,并根据当前微服务对应的采样率、当前微服务对应的历史采样请求数及历史请求总数判断是否对请求进行采样;若是,则从劫持的流量中对请求进行链路数据采集。
该可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请提供的一种微服务链路采样装置、设备及可读存储介质中相关部分的说明可以参见本申请实施例提供的一种微服务链路采样方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种微服务链路采样方法,其特征在于,包括:
预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率;
在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样;
若是,则从劫持的流量中对所述请求进行链路数据采集。
2.根据权利要求1所述的微服务链路采样方法,其特征在于,在预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率之前,还包括:
根据各所述微服务所在机器的CPU类型,通过sidecar模式分别为各所述微服务注入对应的代理;
在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样,包括:
在所述目标应用中的当前微服务接收到请求时,利用所述当前微服务中的代理进行流量劫持,并利用所述代理根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数,判断是否对所述请求进行采样;
从劫持的流量中对所述请求进行链路数据采集,包括:
利用所述代理从劫持的流量中对所述请求进行链路数据采集。
3.根据权利要求2所述的微服务链路采样方法,其特征在于,利用所述代理根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数,判断是否对所述请求进行采样,包括:
利用所述代理中的采样率控制器将所述请求中的请求采样率设置为所述当前微服务对应的采样率,并将所述请求传递给计数器;
利用所述计数器计算所述当前微服务对应的历史采样请求数与历史请求总数的比率,并判断所述比率是否大于所述请求中的请求采样率,若否,则确定对所述请求进行采样。
4.根据权利要求2所述的微服务链路采样方法,其特征在于,分别为各所述微服务注入对应的代理,包括:
分别将各所述微服务对应的代理以独立容器的形式注入到所述微服务器所在的pod中。
5.根据权利要求1所述的微服务链路采样方法,其特征在于,在从劫持的流量中对所述请求进行链路数据采集之后,还包括:
将采集到的链路数据保存在数据库中。
6.根据权利要求5所述的微服务链路采样方法,其特征在于,还包括:
以所述目标应用为边界,从所述数据库中获取与所述目标应用对应的链路数据,并根据所述链路数据获取所述目标应用对应的链路信息。
7.根据权利要求6所述的微服务链路采样方法,其特征在于,在根据所述链路数据获取所述目标应用对应的链路信息之后,还包括:
对所述目标应用对应的链路信息进行展示。
8.一种微服务链路采样装置,其特征在于,包括:
设置模块,用于预先根据目标应用的类型及所述目标应用中各微服务的功能,分别为各所述微服务设置对应的采样率;
判断模块,用于在所述目标应用中的当前微服务接收到请求时进行流量劫持,并根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数判断是否对所述请求进行采样;
采集模块,用于若根据所述当前微服务对应的采样率、所述当前微服务对应的历史采样请求数及历史请求总数确定对所述请求进行采样,则从劫持的流量中对所述请求进行链路数据采集。
9.一种微服务链路采样设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的微服务链路采样方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的微服务链路采样方法的步骤。
CN202111400526.5A 2021-11-19 2021-11-19 一种微服务链路采样方法、装置、设备及可读存储介质 Active CN114172823B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111400526.5A CN114172823B (zh) 2021-11-19 2021-11-19 一种微服务链路采样方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111400526.5A CN114172823B (zh) 2021-11-19 2021-11-19 一种微服务链路采样方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114172823A true CN114172823A (zh) 2022-03-11
CN114172823B CN114172823B (zh) 2023-08-22

Family

ID=80480216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111400526.5A Active CN114172823B (zh) 2021-11-19 2021-11-19 一种微服务链路采样方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114172823B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180331905A1 (en) * 2017-05-11 2018-11-15 Nirmata, Inc. Method and system for tuning performance of microservices-based applications
CN109672741A (zh) * 2018-12-25 2019-04-23 鼎信信息科技有限责任公司 微服务监控方法、装置、计算机设备和存储介质
CN112035317A (zh) * 2020-08-28 2020-12-04 北京浪潮数据技术有限公司 一种微服务链路监控方法、装置、设备及介质
US20210026646A1 (en) * 2019-07-24 2021-01-28 Vmware, Inc. System and method for adaptively sampling application programming interface execution traces based on clustering
CN112491585A (zh) * 2020-11-04 2021-03-12 新华三大数据技术有限公司 微服务健康度评估方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180331905A1 (en) * 2017-05-11 2018-11-15 Nirmata, Inc. Method and system for tuning performance of microservices-based applications
CN109672741A (zh) * 2018-12-25 2019-04-23 鼎信信息科技有限责任公司 微服务监控方法、装置、计算机设备和存储介质
US20210026646A1 (en) * 2019-07-24 2021-01-28 Vmware, Inc. System and method for adaptively sampling application programming interface execution traces based on clustering
CN112035317A (zh) * 2020-08-28 2020-12-04 北京浪潮数据技术有限公司 一种微服务链路监控方法、装置、设备及介质
CN112491585A (zh) * 2020-11-04 2021-03-12 新华三大数据技术有限公司 微服务健康度评估方法及装置

Also Published As

Publication number Publication date
CN114172823B (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
CN111831420B (zh) 用于任务调度的方法、相关装置及计算机程序产品
US10872029B1 (en) System, apparatus and method for deploying infrastructure to the cloud
US10990370B1 (en) System, apparatus and method for deploying infrastructure to the cloud
CN109885624A (zh) 数据处理方法、装置、计算机设备和存储介质
CN110147470B (zh) 一种跨机房数据比对***及方法
CN107315952A (zh) 用于确定应用程序可疑行为的方法和装置
CN112954031B (zh) 一种基于云手机的设备状态通知方法
CN110610376A (zh) 行为数据的响应方法、装置、计算机设备及存储介质
CN109327325A (zh) 面向云平台可信性评估的多级数据采集与证据提取方法
CN108965291A (zh) 混合应用程序的注册登录方法、***及计算机设备
CN109992506A (zh) 调度测试方法、装置、计算机设备和存储介质
CN110968479A (zh) 一种针对应用程序的业务级全链路监控方法及服务器
CN110262955A (zh) 基于pinpoint的应用性能监控工具
CN112712339A (zh) 业务流程的执行方法、装置、电子设备和计算机可读介质
CN114331446B (zh) 区块链的链外服务实现方法、装置、设备和介质
CN114172823A (zh) 一种微服务链路采样方法、装置、设备及可读存储介质
CN115982049A (zh) 性能测试中的异常检测方法、装置和计算机设备
US20180123866A1 (en) Method and apparatus for determining event level of monitoring result
CN112363940A (zh) 一种数据处理方法、装置、存储介质及服务器
CN113297358A (zh) 数据处理方法、装置、服务器和计算机可读存储介质
CN115242799B (zh) 数据上报方法、装置、设备、存储介质及程序产品
CN109684158A (zh) 分布式协调***的状态监控方法、装置、设备及存储介质
CN115623602B (zh) 资源重选方法及装置
CN117873691B (zh) 数据处理方法、装置、设备及可读存储介质
CN115048413B (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