CN117201372A - 一种分布式架构多节点消息跟踪系统和方法 - Google Patents

一种分布式架构多节点消息跟踪系统和方法 Download PDF

Info

Publication number
CN117201372A
CN117201372A CN202311062810.5A CN202311062810A CN117201372A CN 117201372 A CN117201372 A CN 117201372A CN 202311062810 A CN202311062810 A CN 202311062810A CN 117201372 A CN117201372 A CN 117201372A
Authority
CN
China
Prior art keywords
message
node
service
tracking
information
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.)
Pending
Application number
CN202311062810.5A
Other languages
English (en)
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.)
Shanghai Stock Exchange Technology Co ltd
Original Assignee
Shanghai Stock Exchange 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 Shanghai Stock Exchange Technology Co ltd filed Critical Shanghai Stock Exchange Technology Co ltd
Priority to CN202311062810.5A priority Critical patent/CN117201372A/zh
Publication of CN117201372A publication Critical patent/CN117201372A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及分布式架构领域,具体来说是一种主动降噪系统分布式架构多节点消息跟踪系统和方法。所述消息跟踪方法包括将唯一标注信息和业务消息一起发送,所述唯一标注信息需同时满足:能够唯一标识一条消息;能够记录消息当前的时间戳;能够记录消息所在的节点和服务;能够记录消息在一个节点或者服务的方向。本发明同现有技术相比,其优点在于:将消息追踪进程与主进程分离,形成旁路追踪系统,在不影响主系统的性能的前提下实现了主系统消息流向的透明化;不仅可以实现消息追踪,还能实现时延计算和展示;不仅记录到消息进入某个节点的时延,还记录到消息进入到各个服务的时延,有利于后期分析主系统的时延瓶颈,有针对性的对主系统做出优化。

Description

一种分布式架构多节点消息跟踪系统和方法
技术领域
本发明涉及分布式架构领域,具体来说是一种主动降噪系统分布式架构多节点消息跟踪系统和方法。
背景技术
分布式架构在交易系统中得到了大量的应用。在设计高可用的证券交易系统时,通常基于可靠组播的通信模式(消息中间件)在多服务之间进行通信,从而保证系统的高可用性,具体架构图如图1所示。其中每个圆点代表一个节点,节点之间通过消息中间件进行消息通信。分布式架构的节点中存在多种服务,如图2所示。由于分布式架构节点数量以及节点中服务个数众多,一条消息在架构中经过的节点和服务数量也十分复杂。因此,一旦存在不符合预期的消息传输,需要耗费大量的时间来查找定位问题。为了应对分布式架构带来的消息跟踪困难问题,以及方便排查各个服务的性能问题,分布式系统的消息跟踪应运而生。
分布式架构消息跟踪方法可以描绘分布式系统中的一次完整调用,从系统接收到输入,到数据处理结果的输出都完整体现在分布式消息跟踪之中。该消息跟踪链路可以描述消息经过的每个节点名称、服务名称、消息处理结果、处理时长等。使用此类消息跟踪方法,开发人员可以快速地进行问题定位和性能分析。
分布式消息跟踪方法主要分为黑盒跟踪和基于标注的跟踪方法。黑盒跟踪方法无法获取源代码,主要通过收集系统的RPC或者消息日志信息,然后使用统计推断的方式构建消息跟踪链路。黑盒消息跟踪方法的缺点是查询一次链路较长,准确性较差。基于标注的跟踪方法需要改造系统代码,在服务系统调用时标注链路信息,后续通过采集的方式集中存储链路日志,查询时将链路信息结构化并渲染。基于标注跟踪方法对被跟踪系统有一定的侵入性。
申请公告号为CN115129491A的中国发明专利公开了一种微服务请求消息跟踪方法、生成方法、装置、介质及设备。该发明是基于微服务的接收端与发送端,未对微服务内部关键逻辑调用进行消息跟踪,这导致了当出现消息故障时,只能定位到哪一个微服务,而不能更进一步的定位到具体的处理逻辑。
授权公告号为CN110191000B的中国发明专利公开了一种数据处理方法、消息追踪监控方法和分布式系统,该发明依赖ELK日志分析平台收集存储并分析日志,引入了复杂的ELK第三方应用,需要搭建日志收集服务,占用了机器资源;并且日志的收集占用了部分网卡资源网络带宽,可能对整个架构系统造成性能影响。
发明内容
本发明要解决的技术问题是克服现有技术的不足,提供一种不影响主系统性能的前提下实现消息追踪,实现主系统消息流向的透明化,实现时延计算和展示,实现了数据分析的多样化,让技术人员来分析程序是否成功调用各个服务,以及在每个服务/节点花费的时间的分布式架构多节点消息跟踪系统和方法。
为了实现上述目的,设计一种分布式架构多节点消息跟踪方法,所述消息跟踪方法包括将唯一标注信息和业务消息一起发送,所述唯一标注信息需同时满足:能够唯一标识一条消息;能够记录消息当前的时间戳;能够记录消息所在的节点和服务;能够记录消息在一个节点或者服务的方向。
本发明还具有如下优选的技术方案:
1.所述消息跟踪方法还包括跟踪信息的收集独立于被跟踪系统,和被跟踪系统的数据路径解耦。
2.所述消息跟踪方法还包括数据分析模块和跟踪数据标注模块解耦。
3.所述唯一标注信息包括:topic_id字段,能够唯一表示一类主题的消息,这个唯一性,由静态配置数据保证;node_name字段,表示节点名称,整个分布式架构由多个节点组成,通过该字段可以知道当前在哪个节点上;service_name字段,表示服务和服务之间的一次消息传递,标注消息传递信息在链路中的位置;message_dirc字段,表示消息的方向,是进入某个服务还是从某个服务流出;topic_sequence字段,主题序号,在一个主题内部,值从1开始,每接收到一条消息,都会单调递增加1,不同的主题内部,topic_sequence字段互不影响,通过topic_id字段和topic_sequence字段可以唯一表示一条消息;cluster_sequence字段,表示一条消息经过分布式事物处理服务定序后得唯一序号;time_stamp字段,表示该条标注信息产生的时间,获取的是本主机的时间。
还设计一种分布式架构多节点消息跟踪系统,包括消息跟踪信息采集开关,所述消息跟踪信息采集开关用于控制是否进行消息跟踪信息的采集;链路元消息模拟器,所述链路元消息模拟器独立于分布式架构运行,作为交易系统架构消息的来源方以及架构输出消息的接收方;链路消息标注器,通过分布式架构多节点消息跟踪方法构建唯一标注信息;标注消息收集器,将生产者生产的消息同步拷贝至共享内存,然后由另一个进程的消费者异步将内存消息写入到磁盘文件;标注文件解析器,标注消息收集器将每个服务的消息记录文件存在在各自的目录中,每份文件只是一段局部链路信息。
优选地,所述消息跟踪信息采集开关通过配置文件设置开关的开启状态,在分布式架构系统的初始中进行配置解析,获取到开关的状态,最终来确定是否进行消息跟踪信息采集。
优选地,所述链路元消息模拟器以静态配置文件的方式来设置消息发送的速率,发送的总条数以及发送通道主题的数量。
优选地,标注文件解析器以一个集群的所有服务的标签文件作为输入,根据MT算法输出经过所有服务的所有消息的时延以及消息追踪链路,并以主题号命名解析后的文件,所述MT算法的时间复杂度为O(sqt),其中s为打上标注消息服务的个数,q为一个主题发送的消息数量,t为主题的数量,通过上述算法过程,可以得出以主题为名称的文件,该文件包含了一个主题内所有消息的链路信息,包含经过的服务名称、所消耗的时间信息。
优选地,还包括标注消息查询器,所述标注消息查询器根据输入消息序号获取到该条消息在整个链路的所有信息;图表报告生成器,所述图表报告生成器将解析后的内容,经过数据处理算法处理后输出,数据处理算法如下:将标注消息采集器采集到的数据序列为S={s1,s2,...,si,...,sn},其中n表示采集到的消息总量,n的数量是有限的,si表示某个特定序号的第i个数据包的标注消息,则可以根据式(1)和式(2)构造改消息序列的时延分布图:
(1)
(2)
其中Fj(j=1,2,3...,m)表示某主题序号为j的总时延,fj(si)是序号为j的消息在服务i上的时延。当服务序号为1时,需要与一个常数t做计算,其中t是随着消息序号的增加而变化的,经过算法处理计算后,生成图表,展示单条消息链路的总时延,单条消息下的每个组件的时延、计算节点以及各个服务时延时延分布。
本发明同现有技术相比,其优点在于:
1.将消息追踪进程与主进程分离,形成旁路追踪系统,在不影响主系统的性能的前提下实现了主系统消息流向的透明化;
2.不仅可以实现消息追踪,还能实现时延计算和展示;
3.不仅记录到消息进入某个节点的时延,还记录到消息进入到各个服务的时延,有利于后期分析主系统的时延瓶颈,有针对性的对主系统做出优化;
4.对记录的标签信息进行多个方式的分析,给出了不同用户关注的数据,实现了数据分析的多样化。
附图说明
图1是现有技术分布式架构逻辑图;
图2是现有技术分布式架构节点依赖服务种类图;
图3是本发明的系统总体设计图;
图4是本发明的链路标注链图;
图5是本发明的标注消息收集器图;
图6是本发明的标注文件解析器图;
图7是本发明的链路时序图。
具体实施方式
下面结合附图对本发明作进一步说明,本发明的结构和原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明的分布式架构多节点消息跟踪方法,要遵循以下三个主要设计原则:
a.消息跟踪方法的唯一标注信息和业务消息一起发送,而不是发送单独的探测请求,也不会修改业务消息;
b.跟踪信息的收集独立于被跟踪系统,和被跟踪系统的数据路径解耦;
c.数据分析模块和跟踪数据标注模块解耦。
这三个原则确保消息跟踪系统的准确性与稳定性。另外,单独收集跟踪信息可以确保被跟踪系统请求失败的时候,信息依然可以稳定地收集并加以分析。
基于此,分布式架构多节点消息跟踪方法的总设计如图3所示:
1.消息跟踪信息采集开关
由于消息跟踪信息的采集对于分布式架构系统而言为侵入式,会对分布式架构系统的正常运行造成一定的性能损失(有一次内存拷贝的操作),所以需要一个开关能够控制是否进行消息跟踪信息的采集。消息跟踪信息采集涉及的组件众多,因此设计的开关必须要简单明了,方便使用。我们提供了一套开关系统,通过配置文件设置开关的开启状态,在分布式架构系统的初始中进行配置解析,获取到开关的状态,最终来确定是否进行消息跟踪信息采集。
2.链路元消息模拟器
分布式交易系统架构承担了交易系统的地基功能,所有交易系统运行在架构之上。架构本身不包含业务消息,所以本方案设计了一个独立的链路元消息模拟器(TraceMessageSimulator),TMS独立于分布式架构运行,自身的错误或者崩溃不会影响到交易系统架构的运行,可以看作是交易系统架构消息的来源方以及架构输出消息的接收方。它以静态配置文件的方式来设置消息发送的速率,发送的总条数以及发送通道主题的数量。
3.链路消息标注器
通过分布式架构多节点消息跟踪方法构建唯一标注信息。一条消息在一个集群中先经过消息中间件服务进行消息发送,再由消息中间件服务将收取到的消息转发给分布式事务处理服务进行消息定序、消息递交等处理,接着由分布式事务处理服务将消息传递给业务服务进行具体的业务处理。业务处理服务针对该条输入消息按需产生输出消息,再将输出消息传递交给分布式事务处理服务,分布式事务处理对消息进行同步处理后,最后将消息通过消息中间件发送。
分布式架构消息从输入到产生消息输出的整个流程如图4所示,整个消息链路复杂,要经过多个服务。为此,需要设计出一套标注的消息结构,必须要满足以下几点:
a.能够唯一标识一条消息;
b.能够记录消息当前的时间戳;
c.能够记录消息所在的节点和服务;
d.能够记录消息在一个节点或者服务的方向。
基于以上四点,本方案确定了链路消息标注器结构体TMM(TraceMessageMarker):
struct TraceMessageMarker{
uint16_t topic_id;
std::string node_name;
std::string service_name;
uint16_t message_dirc;
uint64_t topic_sequence;
uint64_t cluster_sequence;
uint64_t time_stamp;
}
各个字段所表示的含义如下表所示:
4.标注消息收集器
核心交易架构系统需要高吞吐和低时延,通过消息中间件进行网络通信。交易系统每秒的消息速率在几十万笔以上,分布在多个节点中。在这种规模下,一个低效的标注消息收集器方法可能会带来不可接受的开销。因此,我们需要一个高效的标注消息收集器来适应高吞吐低时延的基本要求,它对原系统造成的性能损失应该尽可能得小。
基于此,本方案提出的标注收集器如图5所示。本标注收集器存在以下两个优势:
一是无需占用网络带宽:核心交易架构系统通过网络组播进行节点之间的通信,消息收发并行度高,网络压力大。本方案舍弃了同步将标注消息上传到网络云的做法,采用了将标注消息写入共享内存,共享内存在初始时就设置为一个固定值,不会随着标注消息的增加而增加。因此,标注消息收集器对系统架构的性能影响只有一次内存拷贝,增加的时延在纳秒级,达到了最小的性能损失点。
二是异步写入文件:将每一条标注消息异步落入磁盘,不阻塞架构代码的执行。为此本提案设计了一套高效的日志系统,将生产者生产的消息同步拷贝至共享内存,然后由另一个进程的消费者异步将内存消息写入到磁盘文件。这样耗时的写磁盘的操作与交易系统架构做到了完全的隔离,不会对系统架构的运行造成任何的性能损失;
5.标注文件解析器
标注消息收集器将每个服务的消息记录文件存在在各自的目录中,每份文件只是一段局部链路信息。如果要想得到完整的链路信息,则需要对文件进一步的汇总处理。
标注文件解析器以一个集群的所有服务的标签文件作为输入,根据MT算法(Message Trace,消息追踪算法)输出经过所有服务的所有消息的时延以及消息追踪链路,并以主题号命名解析后的文件,如图6所示。其中,一份data文件包含了经过该节点的特定主题在各段服务的标注消息。
MT算法的如下所示:
Algorithm:消息追踪算法MT(Message Trace)
Input:TraceTopicList//追踪主题列表
MarkServiceList//服务列表
Output:TraceFilePathListMap//基于主题的所有标注消息文件列表字典
MT算法的时间复杂度为O(sqt),其中s为打上标注消息服务的个数,q为一个主题发送的消息数量,t为主题的数量。通过上述算法过程,可以得出以主题为名称的文件。该文件包含了一个主题内所有消息的链路信息,包含经过的服务名称、所消耗的时间等关键信息。由于标注文件解析器是在系统停止运行的时候运行,不会对交易系统架构产生性能影响,还可以利用节省主机资源。
6.标注消息查询器
由标注消息解析器生成的文件包含了一个节点内的所有消息标注记录,条数极多,不方便查阅。标注消息查询器根据输入消息序号可以获取到该条消息在整个链路的所有信息,实现了系统透明化。
7.图表报告生成器
本提案提供了图表报告生成生成器,将解析后的内容,经过数据处理算法(Message Tracking Processing Algorithm)处理后输出,算法如下所示:
Algorithm:数据处理算法MTP(Message Tracking Processing Algorithm)
将标注消息采集器采集到的数据序列为S={s1,s2,...,si,...,sn},其中n表示采集到的消息总量,n的数量是有限的,si表示某个特定序号的第i个数据包的标注消息,则可以根据式(1)和式(2)构造改消息序列的时延分布图:
(1)
(2)
其中Fj(j=1,2,3...,m)表示某主题序号为j的总时延,fj(si)是序号为j的消息在服务i上的时延。当服务序号为1时,需要与一个常数t做计算,其中t是随着消息序号的增加而变化的。
经过MTP算法处理计算后,生成图表,展示单条消息链路的总时延,单条消息下的每个组件的时延、计算节点以及各个服务时延时延分布。一共可生成树状链路图、链路顺序图、链路时序图以及链路详情图共四种图表,具体描述见下表:
如图7所示,再用图标生成工具生成链路时序图。
根据报告,可以对核心交易架构进行性能上的分析,定位出不符合预期的服务,然后再有针对性地进行分析排查,让整个交易系统的性能达到最优。
以上所述,仅为此发明的具体实施方式,但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案和新型的构思加于等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (9)

1.一种分布式架构多节点消息跟踪方法,其特征在于
所述消息跟踪方法包括将唯一标注信息和业务消息一起发送,所述唯一标注信息需同时满足:
能够唯一标识一条消息;
能够记录消息当前的时间戳;
能够记录消息所在的节点和服务;
能够记录消息在一个节点或者服务的方向。
2.如权利要求1所述一种分布式架构多节点消息跟踪方法,其特征在于所述消息跟踪方法还包括跟踪信息的收集独立于被跟踪系统,和被跟踪系统的数据路径解耦。
3.如权利要求1所述一种分布式架构多节点消息跟踪方法,其特征在于所述消息跟踪方法还包括数据分析模块和跟踪数据标注模块解耦。
4.如权利要求1所述一种分布式架构多节点消息跟踪方法,其特征在于所述唯一标注信息包括:
topic_id字段,能够唯一表示一类主题的消息,这个唯一性,由静态配置数据保证;
node_name字段,表示节点名称,整个分布式架构由多个节点组成,通过该字段可以知道当前在哪个节点上;
service_name字段,表示服务和服务之间的一次消息传递,标注消息传递信息在链路中的位置;
message_dirc字段,表示消息的方向,是进入某个服务还是从某个服务流出;
topic_sequence字段,主题序号,在一个主题内部,值从1开始,每接收到一条消息,都会单调递增加1,不同的主题内部,topic_sequence字段互不影响,通过topic_id字段和topic_sequence字段可以唯一表示一条消息;
cluster_sequence字段,表示一条消息经过分布式事物处理服务定序后得唯一序号;
time_stamp字段,表示该条标注信息产生的时间,获取的是本主机的时间。
5.一种采用如权利要求1所述消息跟踪方法的分布式架构多节点消息跟踪系统,其特征在于包括
消息跟踪信息采集开关,所述消息跟踪信息采集开关用于控制是否进行消息跟踪信息的采集;
链路元消息模拟器,所述链路元消息模拟器独立于分布式架构运行,作为交易系统架构消息的来源方以及架构输出消息的接收方;
链路消息标注器,通过如权利要求4所述方法构建唯一标注信息;标注消息收集器,将生产者生产的消息同步拷贝至共享内存,然后由另一个进程的消费者异步将内存消息写入到磁盘文件;
标注文件解析器,标注消息收集器将每个服务的消息记录文件存在在各自的目录中,每份文件只是一段局部链路信息。
6.如权利要求5所述的一种分布式架构多节点消息跟踪系统,其特征在于所述消息跟踪信息采集开关通过配置文件设置开关的开启状态,在分布式架构系统的初始中进行配置解析,获取到开关的状态,最终来确定是否进行消息跟踪信息采集。
7.如权利要求5所述的一种分布式架构多节点消息跟踪系统,其特征在于所述链路元消息模拟器以静态配置文件的方式来设置消息发送的速率,发送的总条数以及发送通道主题的数量。
8.如权利要求5所述的一种分布式架构多节点消息跟踪系统,其特征在于标注文件解析器以一个集群的所有服务的标签文件作为输入,根据MT算法输出经过所有服务的所有消息的时延以及消息追踪链路,并以主题号命名解析后的文件,所述MT算法的时间复杂度为O(sqt),其中s为打上标注消息服务的个数,q为一个主题发送的消息数量,t为主题的数量,通过上述算法过程,可以得出以主题为名称的文件,该文件包含了一个主题内所有消息的链路信息,包含经过的服务名称、所消耗的时间信息。
9.如权利要求5所述的一种分布式架构多节点消息跟踪系统,其特征在于还包括标注消息查询器,所述标注消息查询器根据输入消息序号获取到该条消息在整个链路的所有信息;
图表报告生成器,所述图表报告生成器将解析后的内容,经过数据处理算法处理后输出,数据处理算法如下:将标注消息采集器采集到的数据序列为S={s1,s2,...,si,...,sn},其中n表示采集到的消息总量,n的数量是有限的,si表示某个特定序号的第i个数据包的标注消息,则可以根据式(1)和式(2)构造改消息序列的时延分布图:
(1)
(2)
其中Fj(j=1,2,3...,m)表示某主题序号为j的总时延,fj(si)是序号为j的消息在服务i上的时延。当服务序号为1时,需要与一个常数t做计算,其中t是随着消息序号的增加而变化的,经过算法处理计算后,生成图表,展示单条消息链路的总时延,单条消息下的每个组件的时延、计算节点以及各个服务时延时延分布。
CN202311062810.5A 2023-08-22 2023-08-22 一种分布式架构多节点消息跟踪系统和方法 Pending CN117201372A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311062810.5A CN117201372A (zh) 2023-08-22 2023-08-22 一种分布式架构多节点消息跟踪系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311062810.5A CN117201372A (zh) 2023-08-22 2023-08-22 一种分布式架构多节点消息跟踪系统和方法

Publications (1)

Publication Number Publication Date
CN117201372A true CN117201372A (zh) 2023-12-08

Family

ID=89002625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311062810.5A Pending CN117201372A (zh) 2023-08-22 2023-08-22 一种分布式架构多节点消息跟踪系统和方法

Country Status (1)

Country Link
CN (1) CN117201372A (zh)

Similar Documents

Publication Publication Date Title
CN100461131C (zh) 软件跟踪能力管理方法和装置
Wells Performance analysis using CPN tools
CN113067883B (zh) 数据传输方法、装置、计算机设备及存储介质
CN106709069A (zh) 高可靠性的大数据日志采集与传输方法
US20100058118A1 (en) Storage medium recording information reacquisition procedure generation program and information reacquisition procedure generation apparatus
CN109600375A (zh) 消息跟踪方法、装置、电子设备及存储介质
CN111061696A (zh) 一种交易报文日志的解析方法及装置
US20060149771A1 (en) Information processing system and communication retry method
CN108804279A (zh) 修改日志打印等级的方法及应用设备
CN105160018A (zh) 一种复制/粘贴图片的方法、装置和系统
CN113608952B (zh) 一种基于日志构建支持环境的系统故障处理方法及系统
CN116881145B (zh) 基于流量回放的接口测试方法、装置、设备以及存储介质
Jin et al. FinExpert: Domain-specific test generation for FinTech systems
CN107797917A (zh) 性能测试脚本生成方法及装置
CN113360413A (zh) 一种代码测试方法及装置
CN117201372A (zh) 一种分布式架构多节点消息跟踪系统和方法
CN100433642C (zh) 一种故障定位和故障排除方法和系统
CN117278653A (zh) 面向分布式站点卫星的数据记录传输系统及方法
CN111817867A (zh) 分布式环境下进行多日志协同分析的方法及系统
CN115455059A (zh) 一种基于底层数据解析用户行为的方法、装置及相关介质
CN114116900A (zh) 一种基于mdd模型的高效交易系统及开发方法
CN102984680B (zh) 一种在电信运营系统的对外接口中实现号码跟踪的方法
CN112417015A (zh) 数据分发方法和装置、存储介质及电子装置
CN114500509B (zh) 财务凭证传输方法、装置、存储介质、发送端及接收端
CN114338797B (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