CN110401579B - 基于hash表的全链路数据采样方法、装置、设备及存储介质 - Google Patents
基于hash表的全链路数据采样方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110401579B CN110401579B CN201910524131.2A CN201910524131A CN110401579B CN 110401579 B CN110401579 B CN 110401579B CN 201910524131 A CN201910524131 A CN 201910524131A CN 110401579 B CN110401579 B CN 110401579B
- Authority
- CN
- China
- Prior art keywords
- hash table
- service request
- initial
- operation name
- sampling
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/022—Capturing of monitoring data by sampling
- H04L43/024—Capturing of monitoring data by sampling by adaptive sampling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及基架运维领域,公开了一种基于hash表的全链路数据采样方法、装置、设备及存储介质。基于hash表的全链路数据采样方法包括:在调用链入口初始化哈希hash表,hash表的键为业务操作名称,hash表的值包括初始业务请求次数和初始采样次数;判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;若hash表的业务操作名称中存在接收的业务请求的操作名称,则调整hash表的初始业务请求次数,得到目标业务请求次数;判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数;若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则采集业务请求。本发明基于hash表的方式对全链路数据进行自定义采样,提高全链路监控系统性能。
Description
技术领域
本发明涉及监控流程改进领域,尤其涉及基于hash表的链路数据采样方法、装置、设备及存储介质。
背景技术
随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。全链路监控就在这样的问题背景下产生了。
但是在大流量的生产环境下,全链路监控系统不可能将所有的业务请求全部记录,这就会对请求进行采样,因此可通过设置采样率确定百分之多少的请求会被记录下来,一般是针对全局设置,没有做到精细化设置。
目前全链路监控的采样率采用百分比来采样,比如,百分之一,每100条请求采样1条,这种会造成比较大的问题,如果某个业务的调用频率比较低,很可能不会被采样到,只能全采样或者增加采样频率,但是这样又会降低业务性能、消耗网络带宽以及降低监控系统性能。
发明内容
本发明的主要目的在于解决全链路监控系统中业务请求采用全局采样频率,导致部分业务没有被采样,而增加全局采样频率又会降低业务性能、消耗网络带宽以及降低监控系统性能的技术问题。
为实现上述目的,本发明第一方面提供了一种基于hash表的全链路数据采样方法,包括:在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数;判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称;若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则调整所述hash表的初始业务请求次数,得到目标业务请求次数;判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数;若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则采集所述接收的业务请求。
可选的,在本发明第一方面的第一种实现方式中,所述在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数包括:在所述调用链入口调用预设的哈希hash表,所述hash表包括键和值;通过配置文件将设置好的业务操作名称作为所述hash表的键,将设置好的初始业务请求次数和初始采样次数作为所述hash表的值。
可选的,在本发明第一方面的第二种实现方式中,所述判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称包括:接收所述业务请求,所述业务请求包括请求参数;解析所述请求参数,得到所述接收的业务请求的操作名称;根据所述接收的业务请求的操作名称查询所述hash表,得到查询结果;若所述查询结果不为空,则确定所述hash表的业务操作名称中存在所述接收的业务请求的操作名称;若所述查询结果为空,则确定所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称。
可选的,在本发明第一方面的第三种实现方式中,所述若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则调整所述hash表的初始业务请求次数,得到目标业务请求次数包括:若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则根据所述业务请求的操作名称对所述hash表的初始业务请求次数进行加1,得到目标业务请求次数。
可选的,在本发明第一方面的第四种实现方式中,所述判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数包括:根据所述hash表的业务操作名称查询所述hash表,得到所述hash表的目标业务请求次数和所述hash表的初始采样次数;根据所述hash表的目标业务请求次数和所述hash表的初始采样次数进行差运算,得到计算结果;若所述计算结果大于或者等于0,则确定所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数;若所述计算结果小于0,则确定所述hash表的目标业务请求次数小于所述hash表的初始采样次数。
可选的,在本发明第一方面的第五种实现方式中,所述判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称之后,所述基于hash表的全链路数据采样方法还包括:若所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称,则根据预置的采样频率进行采样。
可选的,在本发明第一方面的第六种实现方式中,所述若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则采集所述业务请求之后,所述基于hash表的全链路数据采样方法还包括:根据所述接收的业务请求的操作名称设置所述hash表的目标业务请求次数为0。
本发明第二方面提供了一种基于hash表的全链路数据采样装置,包括:初始化单元,用于在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数;第一判断单元,用于判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称;第一处理单元,若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则用于调整所述hash表的初始业务请求次数,得到目标业务请求次数;第二判断单元,用于判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数;采集单元,若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则用于采集所述接收的业务请求。
可选的,在本发明第二方面的第一种实现方式中,所述初始化单元具体用于:在所述调用链入口调用预设的哈希hash表,所述hash表包括键和值;通过配置文件将设置好的业务操作名称作为所述hash表的键,将设置好的初始业务请求次数和初始采样次数作为所述hash表的值。
可选的,在本发明第二方面的第二种实现方式中,所述第一判断单元具体用于:接收所述业务请求,所述业务请求包括请求参数;解析所述请求参数,得到所述接收的业务请求的操作名称;根据所述接收的业务请求的操作名称查询所述hash表,得到查询结果;若所述查询结果不为空,则确定所述hash表的业务操作名称中存在所述接收的业务请求的操作名称;若所述查询结果为空,则确定所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称。
可选的,在本发明第二方面的第三种实现方式中,所述第一处理单元具体用于:若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则用于根据所述业务请求的操作名称对所述hash表的初始业务请求次数进行加1,得到目标业务请求次数。
可选的,在本发明第二方面的第四种实现方式中,所述第二判断单元具体用于:根据所述hash表的业务操作名称查询所述hash表,得到所述hash表的目标业务请求次数和所述hash表的初始采样次数;根据所述hash表的目标业务请求次数和所述hash表的初始采样次数进行差运算,得到计算结果;若所述计算结果大于或者等于0,则确定所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数;若所述计算结果小于0,则确定所述hash表的目标业务请求次数小于所述hash表的初始采样次数。
可选的,在本发明第二方面的第五种实现方式中,所述基于hash表的全链路数据采样装置还包括:第二处理单元,若所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称,则用于根据预置的采样频率进行采样。
可选的,在本发明第二方面的第六种实现方式中,所述基于hash表的全链路数据采样装置还包括:清零单元,用于根据所述业务请求的操作名称设置所述hash表的目标业务请求次数为0。
本发明第三方面提供了一种基于hash表的全链路数据采样设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于hash表的全链路数据采样设备执行上述第一方面所述的方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
从以上技术方案可以看出,本发明具有以下优点:
本发明提供的技术方案中,在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数;判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称;若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则调整根调整所述hash表的初始业务请求次数,得到目标业务请求次数;判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数;若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则采集所述接收的业务请求。本发明实施例中,基于hash表的方式设置业务操作名称、初始业务请求次数和初始采样次数,根据业务请求得到目标业务请求次数,根据目标业务请求次数和初始采样次数进行比较,确定是否采集业务请求,实现对全链路数据的自定义采样,提高全链路监控系统性能。
附图说明
图1为本发明实施例中基于hash表的全链路数据采样方法的一个实施例示意图;
图2为本发明实施例中基于hash表的全链路数据采样方法的另一个实施例示意图;
图3为本发明实施例中基于hash表的全链路数据采样装置的一个实施例示意图;
图4为本发明实施例中基于hash表的全链路数据采样装置的另一个实施例示意图;
图5为本发明实施例中基于hash表的全链路数据采样设备的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种基于hash表的全链路数据采样方法、装置、设备及存储介质,本发明实施例中,基于hash表的方式设置业务操作名称、初始业务请求次数和初始采样次数,根据业务请求得到目标业务请求次数,根据目标业务请求次数和初始采样次数进行比较,确定是否采集业务请求,实现对全链路数据的自定义采样。基于hash表的方式对全链路数据进行采样,根据业务调用频率设计一种细粒度的自定义采样策略,该自定义采样策略对调用频率低的业务采用全采样和增加采样频率,调用频率高的业务设置不同的采样频率,提高全链路监控系统性能。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于hash表的全链路数据采样方法的一个实施例包括:
101、在调用链入口初始化哈希hash表,hash表的键为业务操作名称,hash表的值包括初始业务请求次数和初始采样次数;
服务器在调用链入口设置哈希hash表,该hash表的键为业务操作名称,该hash表的值包括初始业务请求次数和初始采样次数,该初始业务请求次数的初始值全部为0。具体的,服务器在调用链入口调用预设的哈希hash表,hash表包括键和值。该hash表的键和值都是可以动态扩展的,hash表是根据关键码值key和value直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
服务器根据业务调用频率设置业务操作名称、初始业务请求次数和初始采样次数,服务器通过配置文件将设置好的业务操作名称作为hash表的键,将设置好的初始业务请求次数和初始采样次数作为hash表的值,该初始采样次数等于1为全采样。其中,业务操作名称可以根据实际业务操作预先设置,初始业务请求次数是在采样次数范围内对用户操作业务次数的记录。初始采样次数是指服务器采集业务请求的周期,初始采样次数和业务操作名称是一一对应的,该初始采样次数根据实际业务预先设置,例如,对于请求量很高或者负载低的业务,可以将其初始采样次数设置为100,当请求次数累计到预置的采样次数值100时,服务器采集业务请求数据;对于业务请求量很低、重要的、请求出现异常或者超时的业务,比如用户登录这种业务操作,为防止遗漏重要信息,可以将初始采样次数设置为1,即全采样模式,业务请求一次采集一次,保证跟踪到有价值的信息,具体此处不做限定。
需要说明的是,一个请求完整的调用链是分布式的拓扑接口,根据请求判断是否为调用链入口,若是前端发起请求,那么调用链入口就是前端;若是分布式组件发起的请求,那么调用链入口就是该分布式组件,具体此处不做限定。
102、判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;
服务器判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;具体的,服务器接收业务请求,该业务请求包括请求参数;服务器根据预置算法解析请求参数,得到接收的业务请求的操作名称;服务器根据接收的业务请求的操作名称查询hash表,得到查询结果;若查询结果不为空,则确定hash表的业务操作名称中存在接收的业务请求的操作名称;若查询结果为空,则确定hash表的业务操作名称中不存在接收的业务请求的操作名称。
103、若hash表的业务操作名称中存在接收的业务请求的操作名称,则调整hash表的初始业务请求次数,得到目标业务请求次数;
若hash表的业务操作名称中存在接收的业务请求的操作名称,则服务器调整hash表的初始业务请求次数,得到目标业务请求次数。具体的,服务器根据hash表的业务操作名称对hash表的初始业务请求次数进行加1,例如,hash表的初始业务请求次数原始值为0,当服务器根据hash表的业务操作名称对hash表的初始业务请求次数进行加1,则相应hash表的目标业务请求次数为1。
需要说明的是,若hash表的业务操作名称中不存在接收的业务请求的操作名称,则根据预置的采样频率进行采样,可选的,服务器根据业务请求的操作名称和预置的采样频率写入hash表中,动态扩展hash表,便于统一维护hash表,实现自定义采样频率的控制。
104、判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数;
服务器判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数。具体的,服务器根据hash表的业务操作名称查询hash表,得到hash表的目标业务请求次数和hash表的初始采样次数,服务器根据该hash表的目标业务请求次数和hash表的初始采样次数进行差运算,得到计算结果,若计算结果大于或者等于0,则hash表的目标业务请求次数大于或者等于hash表的初始采样次数;若计算结果小于0,则hash表的目标业务请求次数小于hash表的初始采样次数。例如,hash表的采样次数为100,若hash表的业务请求次数为100,则服务器确定hash表的业务请求次数大于或者等于hash表的采样次数;若hash表的业务请求次数为99,则服务器确定hash表的业务请求次数小于hash表的采样次数,不予采样。
105、若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则采集接收的业务请求。
若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则服务器采集该接收的业务请求。进一步的,服务器采集业务请求后,还要根据该业务请求的操作名称设置hash表的目标业务请求次数为0。
需要说明的是,服务器每次采集业务请求后,都要设置hash表的目标业务请求次数为0,便于进行下一次业务请求的采样,通过该设置,对全链路数据进行周期性采集,进而实现一种全链路数据的自定义采样策略。
本发明实施例中,基于hash表的方式设置业务操作名称、初始业务请求次数和初始采样次数,根据业务请求得到目标业务请求次数,根据目标业务请求次数和初始采样次数进行比较,确定是否采集业务请求,实现对全链路数据的自定义采样。基于hash表的方式对全链路数据进行采样,根据业务调用频率设计一种细粒度的自定义采样策略,该自定义采样策略对调用频率低的业务采用全采样和增加采样频率,调用频率高的业务设置不同的采样频率,提高全链路监控系统性能。
请参阅图2,本发明实施例中基于hash表的全链路数据采样方法的另一个实施例包括:
201、在调用链入口调用预设的哈希hash表,hash表包括键和值;
服务器在调用链入口调用预设的哈希hash表,该hash表包括键和值,该hash表的键和值都是可以动态扩展的,hash表是根据关键码值key和value直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
需要说明的是,一个请求完整的调用链是分布式的拓扑接口,根据请求判断是否为调用链入口,若是前端发起请求,那么调用链入口就是前端;若是分布式组件发起的请求,那么调用链入口就是该分布式组件,具体此处不做限定。
202、通过配置文件将设置好的业务操作名称作为hash表的键,将设置好的初始业务请求次数和初始采样次数作为hash表的值;
服务器根据业务调用频率设置业务操作名称、初始业务请求次数和初始采样次数,服务器通过配置文件将设置好的业务操作名称作为hash表的键,将设置好的初始业务请求次数和初始采样次数作为hash表的值,该初始采样次数等于1为全采样,该初始业务请求次数的初始值全部为0。
其中,业务操作名称可以根据实际业务操作预先设置,初始业务请求次数是在采样次数范围内对用户操作业务次数的记录。初始采样次数是指服务器采集业务请求的周期,初始采样次数和业务操作名称是一一对应的,该初始采样次数根据实际业务预先设置,例如,对于请求量很高或者负载低的业务,可以将其初始采样次数设置为100,当业务请求次数累计到初始采样次数值100时,服务器采集业务请求数据;对于业务请求量很低、重要的、请求出现异常或者超时的业务,比如用户登录这种业务操作,为防止遗漏重要信息,可以将初始采样次数设置为1,即全采样模式,业务请求一次采集一次,保证跟踪到有价值的信息,具体此处不做限定。
203、接收业务请求,得到接收的业务请求的操作名称;
服务器接收调用链的业务请求,该业务请求包括请求参数,服务器根据预置算法解析该请求参数,得到接收的业务请求的操作名称,服务器根据接收的业务请求的操作名称识别hash表。
需要说明的是,该接收的业务请求的操作名称的命名规则与通过配置文件设置的hash表的业务操作名称以及hash表的业务操作名称的命名规则保持一致,命名规则能准确表述或者标识业务操作,例如,服务器使用业务请求名称userlogin和userlogout分别表示用户登录系统和用户退出系统的业务操作请求,也可以使用login和logout进行标识,具体此处不做限定。
204、判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;
服务器判断hash表的业务操作名称中是否存在接收的业务请求的操作名称,具体的,服务器根据接收的业务请求的操作名称查询hash表,得到查询结果,若查询结果为空,则确定hash表的业务操作名称中存在接收的业务请求的操作名称;若查询结果不为空,则确定hash表的业务操作名称中不存在接收的业务请求的操作名称。
205、若hash表的业务操作名称中不存在接收的业务请求的操作名称,则根据预置的采样频率进行采样;
若hash表的业务操作名称中不存在接收的业务请求的操作名称,则服务器根据预置的采样频率进行采样,该预置的采样频率是全局的,例如,该预置的采样频率为百分之一,表示在单位时间内,业务请求一百次,采集一次。
可选的,服务器将该业务操作名称设置为键,将预置的采样频率和业务请求次数设置为该业务操作名称的值,写入hash表,动态扩展以及维护该hash表,则可以对每一个业务请求都进行采样频率的自定义,形成一种细粒度的采样频率。
206、若hash表的业务操作名称中存在接收的业务请求的操作名称,则调整hash表的初始业务请求次数,得到目标业务请求次数;
若hash表的业务操作名称中存在接收的业务请求的业务操作名称,则服务器调整hash表的初始业务请求次数,得到目标业务请求次数。具体的,服务器根据hash表的业务操作名称对hash表的初始业务请求次数进行加1,例如,hash表的初始业务请求次数原始值为0,当服务器根据hash表的业务操作名称对hash表的初始业务请求次数进行加1,则相应hash表的目标业务请求次数为1。
207、判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数;
服务器判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数。具体的,服务器根据hash表的业务操作名称查询hash表,得到hash表的目标业务请求次数和hash表的初始采样次数,服务器根据该hash表的目标业务请求次数和hash表的初始采样次数进行差运算,得到计算结果,若计算结果大于或者等于0,则hash表的目标业务请求次数大于或者等于hash表的初始采样次数;若计算结果小于0,则hash表的目标业务请求次数小于hash表的初始采样次数。例如,hash表的初始采样次数为100,若hash表的目标业务请求次数为100,则服务器确定hash表的目标业务请求次数大于或者等于hash表的初始采样次数;若hash表的目标业务请求次数为99,则服务器确定hash表的目标业务请求次数小于hash表的初始采样次数。
208、若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则采集接收的业务请求;
若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则服务器采集接收的业务请求。服务器采集该业务请求,并发送该业务请求的监控数据,该业务请求生成一个全局的链路标识traceid,通过traceid可以串联起整个调用链,一个traceid代表一次调用链请求,不同的业务请求对应不同的traceid,该traceid会在该业务请求的整个调用网络中传递。
进一步的,服务器采集业务请求后,还要根据该业务请求的操作名称设置hash表的目标业务请求次数为0。需要说明的是,服务器每次采集业务请求后,都要设置hash表的目标业务请求次数为0,便于进行下一次业务请求的采样。
209、若hash表的目标业务请求次数小于hash表的初始采样次数,则丢弃接收的业务请求。
若hash表的目标业务请求次数小于hash表的初始采样次数,则服务器丢弃接收的业务请求。具体的,服务器等待下一次业务请求,重复以上203至209步骤。
本发明实施例中,基于hash表的方式设置业务操作名称、初始业务请求次数和初始采样次数,根据目标业务请求次数和初始采样次数进行比较,确定是否采集业务请求,实现对全链路数据的自定义采样。基于hash表的方式对全链路数据进行采样,根据业务调用频率设计一种细粒度的自定义采样策略,该自定义采样策略对调用频率低的业务采用全采样和增加采样频率,调用频率高的业务设置不同的采样频率,提高全链路监控系统性能。
上面对本发明实施例中基于hash表的全链路数据采样方法进行了描述,下面对本发明实施例中基于hash表的全链路数据采样装置进行描述,请参阅图3,本发明实施例中基于hash表的全链路数据采样装置一个实施例包括:
初始化单元301,用于在调用链入口初始化哈希hash表,hash表的键为业务操作名称,hash表的值包括初始业务请求次数和初始采样次数;
第一判断单元302,用于判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;
第一处理单元303,若hash表的业务操作名称中存在接收的业务请求的操作名称,则用于调整hash表的初始业务请求次数,得到目标业务请求次数;
第二判断单元304,用于判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数;
采集单元305,若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则用于采集接收的业务请求。
本发明实施例中,基于hash表的方式设置预置的业务操作名称、业务请求次数和预置的采样次数,根据业务请求次数和预置的采样次数进行比较,实现对全链路数据的自定义采样。基于hash表的方式对全链路数据进行采样,根据业务调用频率设计一种细粒度的自定义采样策略,该自定义采样策略对调用频率低的业务采用全采样和增加采样频率,调用频率高的业务设置不同的采样频率,提高全链路监控系统性能。
请参阅图4,本发明实施例中基于hash表的全链路数据采样装置的另一个实施例包括:
初始化单元301,用于在调用链入口初始化哈希hash表,hash表的键为业务操作名称,hash表的值包括初始业务请求次数和初始采样次数;
第一判断单元302,用于判断hash表的业务操作名称中是否存在接收的业务请求的操作名称;
第一处理单元303,若hash表的业务操作名称中存在接收的业务请求的操作名称,则用于调整hash表的初始业务请求次数,得到目标业务请求次数;
第二判断单元304,用于判断hash表的目标业务请求次数是否大于或者等于hash表的初始采样次数;
采集单元305,若hash表的目标业务请求次数大于或者等于hash表的初始采样次数,则用于采集接收的业务请求。
可选的,初始化单元301还可以具体用于:
在调用链入口调用预设的哈希hash表,hash表包括键和值;
通过配置文件将设置好的业务操作名称作为hash表的键,将设置好的初始业务请求次数和初始采样次数作为hash表的值。
可选的,第一判断单元302还可以具体用于:
接收业务请求,业务请求包括请求参数;
解析请求参数,得到接收的业务请求的操作名称;
根据接收的业务请求的操作名称查询hash表,得到查询结果;
若查询结果不为空,则确定hash表的业务操作名称中存在接收的业务请求的操作名称;
若查询结果为空,则确定hash表的业务操作名称中不存在接收的业务请求的操作名称。
可选的,第一处理单元303还可以具体用于:
若hash表的业务操作名称中存在接收的业务请求的操作名称,则根据业务请求的操作名称对hash表的初始业务请求次数进行加1,得到目标业务请求次数。
可选的,第二判断单元304还可以具体用于:
根据hash表的业务操作名称查询hash表,得到hash表的目标业务请求次数和hash表的初始采样次数;
根据hash表的目标业务请求次数和hash表的初始采样次数进行差运算,得到计算结果;
若计算结果大于或者等于0,则确定hash表的目标业务请求次数大于或者等于hash表的初始采样次数;
若计算结果小于0,则确定hash表的目标业务请求次数小于hash表的初始采样次数。
可选的,基于hash表的全链路数据采样装置还可以进一步包括:
第二处理单元306,若hash表的业务操作名称中不存在接收的业务请求的操作名称,则用于根据预置的采样频率进行采样。
可选的,基于hash表的全链路数据采样装置还可以进一步包括:
清零单元307,用于根据业务请求的操作名称设置hash表的业务请求次数为0。
本发明实施例中,基于hash表的方式设置业务操作名称、初始业务请求次数和初始采样次数,根据业务请求得到目标业务请求次数,根据目的业务请求次数和初始采样次数进行比较,确定是否采集业务请求,实现对全链路数据的自定义采样。基于hash表的方式对全链路数据进行采样,根据业务调用频率设计一种细粒度的自定义采样策略,该自定义采样策略对调用频率低的业务采用全采样和增加采样频率,调用频率高的业务设置不同的采样频率,提高全链路监控系统性能。
上面图3和图4从模块化功能实体的角度对本发明实施例中的基于hash表的全链路数据采样装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于hash表的全链路数据采样设备进行详细描述。
图5是本发明实施例提供的一种基于hash表的全链路数据采样设备的结构示意图,该基于hash表的全链路数据采样设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序509或数据509的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于hash表的全链路数据采样中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在基于hash表的全链路数据采样设备500上执行存储介质508中的一系列指令操作。
基于hash表的全链路数据采样设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5示出的基于hash表的全链路数据采样设备结构并不构成对基于hash表的全链路数据采样设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于hash表的全链路数据采样方法,其特征在于,包括:
在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数;
判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称,其中,所述业务请求包括请求参数,根据预置算法对所述请求参数进行解析,得到所述业务请求的操作名称,并根据所述操作名称查询hash表,得到查询结果;
若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则调整所述hash表的初始业务请求次数,得到目标业务请求次数;
判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数,并根据所述hash表的目标业务请求次数和所述hash表的初始采样次数进行差运算,得到计算结果;
若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则采集所述接收的业务请求。
2.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数包括:
在所述调用链入口调用预设的哈希hash表,所述hash表包括键和值;
通过配置文件将设置好的业务操作名称作为所述hash表的键,将设置好的初始业务请求次数和初始采样次数作为所述hash表的值。
3.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称包括:
接收所述业务请求,所述业务请求包括请求参数;
解析所述请求参数,得到所述接收的业务请求的操作名称;
根据所述接收的业务请求的操作名称查询所述hash表,得到查询结果;
若所述查询结果不为空,则确定所述hash表的业务操作名称中存在所述接收的业务请求的操作名称;
若所述查询结果为空,则确定所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称。
4.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则调整所述hash表的初始业务请求次数,得到目标业务请求次数包括:
若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则根据所述业务请求的操作名称对所述hash表的初始业务请求次数进行加1,得到目标业务请求次数。
5.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数包括:
根据所述hash表的业务操作名称查询所述hash表,得到所述hash表的目标业务请求次数和所述hash表的初始采样次数;
根据所述hash表的目标业务请求次数和所述hash表的初始采样次数进行差运算,得到计算结果;
若所述计算结果大于或者等于0,则确定所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数;
若所述计算结果小于0,则确定所述hash表的目标业务请求次数小于所述hash表的初始采样次数。
6.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称之后,所述基于hash表的全链路数据采样方法还包括:
若所述hash表的业务操作名称中不存在所述接收的业务请求的操作名称,则根据预置的采样频率进行采样。
7.根据权利要求1所述的基于hash表的全链路数据采样方法,其特征在于,所述若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则采集所述业务请求之后,所述基于hash表的全链路数据采样方法还包括:
根据所述接收的业务请求的操作名称设置所述hash表的目标业务请求次数为0。
8.一种基于hash表的全链路数据采样装置,其特征在于,所述全链路数据采样装置包括:
初始化单元,用于在调用链入口初始化哈希hash表,所述hash表的键为业务操作名称,所述hash表的值包括初始业务请求次数和初始采样次数;
第一判断单元,用于判断所述hash表的业务操作名称中是否存在接收的业务请求的操作名称,其中,所述业务请求包括请求参数,根据预置算法对所述请求参数进行解析,得到所述业务请求的操作名称,并根据所述操作名称查询hash表,得到查询结果;
第一处理单元,若所述hash表的业务操作名称中存在所述接收的业务请求的操作名称,则用于调整所述hash表的初始业务请求次数,得到目标业务请求次数;
第二判断单元,用于判断所述hash表的目标业务请求次数是否大于或者等于所述hash表的初始采样次数,并根据所述hash表的目标业务请求次数和所述hash表的初始采样次数进行差运算,得到计算结果;
采集单元,若所述hash表的目标业务请求次数大于或者等于所述hash表的初始采样次数,则用于采集所述接收的业务请求。
9.一种基于hash表的全链路数据采样设备,其特征在于,所述基于hash表的全链路数据采样设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于hash表的全链路数据采样设备执行如权利要求1-7中任意一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910524131.2A CN110401579B (zh) | 2019-06-18 | 2019-06-18 | 基于hash表的全链路数据采样方法、装置、设备及存储介质 |
PCT/CN2019/102472 WO2020252896A1 (zh) | 2019-06-18 | 2019-08-26 | 基于hash表的全链路数据采样方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910524131.2A CN110401579B (zh) | 2019-06-18 | 2019-06-18 | 基于hash表的全链路数据采样方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110401579A CN110401579A (zh) | 2019-11-01 |
CN110401579B true CN110401579B (zh) | 2022-08-23 |
Family
ID=68324159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910524131.2A Active CN110401579B (zh) | 2019-06-18 | 2019-06-18 | 基于hash表的全链路数据采样方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110401579B (zh) |
WO (1) | WO2020252896A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586092A (zh) * | 2020-03-25 | 2020-08-25 | 深圳壹账通智能科技有限公司 | 全链路监控方法、系统及cat客户端 |
CN111478806B (zh) * | 2020-04-02 | 2022-10-14 | 聚好看科技股份有限公司 | 一种链路追踪采样方法及系统 |
CN111460510B (zh) * | 2020-04-17 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护确定相同业务数据的方法及装置 |
CN113986955B (zh) * | 2021-11-01 | 2024-03-19 | 华青融天(北京)软件股份有限公司 | 业务链的确定方法、装置、电子设备及介质 |
CN115037653B (zh) * | 2022-06-28 | 2023-10-13 | 北京奇艺世纪科技有限公司 | 业务流量监控方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108183927A (zh) * | 2017-11-22 | 2018-06-19 | 链家网(北京)科技有限公司 | 一种分布式系统中链路调用的监控方法及系统 |
CN109087055A (zh) * | 2018-06-06 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 业务请求的控制方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635331B (zh) * | 2014-11-18 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 一种分布式环境下的服务寻址方法及装置 |
US10476629B2 (en) * | 2017-05-02 | 2019-11-12 | Juniper Networks, Inc. | Performing upper layer inspection of a flow based on a sampling rate |
CN109697456B (zh) * | 2018-11-21 | 2021-02-09 | 华为技术有限公司 | 业务分析方法、装置、设备及存储介质 |
-
2019
- 2019-06-18 CN CN201910524131.2A patent/CN110401579B/zh active Active
- 2019-08-26 WO PCT/CN2019/102472 patent/WO2020252896A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108183927A (zh) * | 2017-11-22 | 2018-06-19 | 链家网(北京)科技有限公司 | 一种分布式系统中链路调用的监控方法及系统 |
CN109087055A (zh) * | 2018-06-06 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 业务请求的控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110401579A (zh) | 2019-11-01 |
WO2020252896A1 (zh) | 2020-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110401579B (zh) | 基于hash表的全链路数据采样方法、装置、设备及存储介质 | |
US11232087B2 (en) | Fast circular database | |
US7752307B2 (en) | Technique of analyzing an information system state | |
US11829797B1 (en) | Dynamic configuration of virtual machines | |
JP4343983B2 (ja) | ネットワーク管理装置およびネットワークの管理方法 | |
CN110719194B (zh) | 一种网络数据的分析方法及装置 | |
US20080147673A1 (en) | High-throughput extract-transform-load (ETL) of program events for subsequent analysis | |
CN111124819A (zh) | 全链路监控的方法和装置 | |
JP2009503686A (ja) | パフォーマンス情報およびイベント情報を適応的に収集するシステムおよび方法 | |
US8799923B2 (en) | Determining relationship data associated with application programs | |
US8438276B1 (en) | Method of monitoring network and application performance by analyzing web clients and web servers | |
US7698417B2 (en) | Optimized performance counter monitoring | |
KR102328938B1 (ko) | 전자 시스템들에서의 로그 데이터의 관리 | |
GB2608925A (en) | Automated malware monitoring and data extraction | |
US20210224281A1 (en) | Unique sql query transfer for anomaly detection | |
EP2634699B1 (en) | Application monitoring | |
CN115002186B (zh) | 网络信息采集方法、装置、电子设备及可读存储介质 | |
Bohm et al. | Aggregation of real-time system monitoring data for analyzing large-scale parallel and distributed computing environments | |
US20150370623A1 (en) | Monitoring apparatus, monitoring method, and recording medium | |
CN114070755A (zh) | 虚拟机网络流量确定方法、装置、电子设备和存储介质 | |
CN111278022A (zh) | 一种物联网WiFi模块性能测试方法及系统 | |
US11949547B2 (en) | Enhanced simple network management protocol (SNMP) connector | |
US11431739B1 (en) | Multi-stage network scanning | |
US9979613B2 (en) | Analyzing network traffic in a computer network | |
CN111368294B (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 |