CN113098942A - 一种分布式系统的数据处理方法及装置 - Google Patents
一种分布式系统的数据处理方法及装置 Download PDFInfo
- Publication number
- CN113098942A CN113098942A CN202110321645.5A CN202110321645A CN113098942A CN 113098942 A CN113098942 A CN 113098942A CN 202110321645 A CN202110321645 A CN 202110321645A CN 113098942 A CN113098942 A CN 113098942A
- Authority
- CN
- China
- Prior art keywords
- tracing
- container
- data
- dynamic library
- format
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0631—Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种分布式系统的数据处理方法和装置,其中,所述的方法包括:获取用于将Tracing数据的格式调整为预设格式的动态库;将所述动态库注入到服务网格Sidecar容器的镜像中;在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。通过引入动态库,使得服务网格和预置的Tracing体系中的Tracing数据可以相互兼容。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种分布式系统的数据处理方法和一种分布式系统的数据处理装置。
背景技术
随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。分布式链路追踪技术是分布式系统或者微服务架构中进行服务监控、性能优化的有效手段,通过分布式调用链,将一次分布式请求还原成调用链路,从而在后端可以查看一次分布式请求的调用情况,比如各个节点上的耗时、请求具体打到了哪台机器上、每个服务节点的请求状态等等。
在现有技术中,分布式链路追踪体系主要有,Tracing体系和服务网格Istio体系,其中,Tracing体系是采用Jaeger的格式收集Tracing数据,Tracing数据需要经过Envoy(服务网格Istio使用的数据面转发组件)转发,但是Envoy采用的是Zipkin的格式,两者不能兼容,导致一次完成的业务调用产生两条调用链。Istio体系中采用的Jaeger收集器可以兼容Zipkin日志格式,但是只能收集Istio集群内的Tracing数据,而不支持收集集群外的组件的Tracing数据,也不支持收集集群内业务容器自身的Tracing数据,导致Istio体系内的Tracing数据成为一个孤岛。
因此,迫切需要提供一种能够兼容多种格式的Tracing数据的数据处理的分布式链路追踪方案。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种分布式系统的数据处理方法和相应的一种分布式系统的数据处理装置。
本发明实施例公开了一种分布式系统的数据处理方法,包括:
获取用于将Tracing数据的格式调整为预设格式的动态库;
将所述动态库注入到服务网格Sidecar容器的镜像中;
在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
可选地,所述将所述动态库注入到服务网格Sidecar容器的镜像中,包括:
在服务网格的Pod中注入Init容器;
通过所述Init容器将所述动态库注入所述服务网格Sidecar容器的镜像中。
可选地,所述将所述动态库注入到服务网格Sidecar容器的镜像中,还包括:
在所述Init容器中添加第三方插件,并针对所述Init容器注入环境参数,其中,所述第三方插件用于根据注入所述Init容器的环境变量生成配置文件。
可选地,还包括:
获取所述配置文件的路径参数;
将所述配置文件的路径参数通过环境变量注入服务网格的Sidecar容器中。
可选地,还包括:
根据添加所述第三方插件后的Init容器和所述动态库生成目标镜像;
设置服务网格中的所述Init容器和Sidecar容器所使用的镜像指向所述目标镜像。
可选地,在所述获取用于将数据的格式调整为预设格式的动态库的步骤之后,还包括:
在所述动态库中增加用于支持输出项目字段的逻辑程序;
其中,所述项目字段用于在检索Tracing数据时进行权限分级。
可选地,还包括:
在检索所述Tracing数据时,根据所述项目字段确定目标Tracing数据,以保证所述Tracing数据的安全性。
本发明实施例还公开了一种分布式系统的数据处理装置,包括:
动态库获取模块,用于获取用于将Tracing数据的格式调整为预设格式的动态库;
动态库注入模块,用于将所述动态库注入到服务网格Sidecar容器的镜像中;
服务网格接入模块,用于在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
本发明实施例还公开了一种电子设备,包括:
处理器和存储介质,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器执行所述机器可读指令,以执行如本发明实施例任一项所述的方法。
本发明实施例还公开了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如本发明实施例任一项所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,通过引入一个动态库,将动态库注入到服务网格Sidecar容器的镜像中,在预置的Tracing体系中接入服务网格,使得预置的Tracing体系在运行时,通过动态库将收集到的Tracing数据的格式调整为预设格式,并将预设格式的Tracing数据上传到日志收集器。从而,服务网格和预置的Tracing体系中的Tracing数据可以相互兼容,实现了服务网格外部组件、服务网格边缘网关IngressGateway、服务网格边车容器Sidecar和服务网格业务容器的Tracing数据的统一收集、存储、检索和展示。
而且,通过整合服务网格到预置的Tracing体系中,使得服务网格可以为预置的Tracing体系提供完整调用链闭环输出,无论是业务从服务网格外的组件访问服务网格内部的服务,或者从服务网格内的服务访问服务网格外部的组件,都可以通过统一的TraceID,在分布式追踪系统的前端中查询到完整的调用链,并通过调用链输出的数据对问题进行诊断。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术的一种Tracing体系的整体架构图;
图2是现有技术的一种Istio体系的整体架构图;
图3是现有技术的一种分布式追踪系统的结构框图;
图4是本发明实施例提供的一种分布式系统的数据处理方法的步骤流程图;
图5是本发明实施例提供的一种输出项目字段的示意图;
图6是本发明实施例提供的一种接入服务网格后预置的Tracing体系整体架构图;
图7是本发明实施例提供的一种检索到的Tracing数据的示意图;
图8是本发明实施例提供的一种分布式系统的数据处理装置的结构框图;
图9是本发明实施例提供的一种电子设备的结构框图;
图10是本发明实施例提供的一种计算机可读存储介质的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明其中一种实施例中的游戏中的布局辅助方法可以运行于终端设备或者是服务器。其中,终端设备可以为本地终端设备。当游戏中的布局辅助方法运行于服务器时,该游戏中的布局辅助方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
分布式链路追踪技术:在微服务的演进过程中,从应用架构来看,传统的单体应用被拆分成多个微服务,业务逻辑演化成微服务之前的调用和请求,而从资源角度来看,传统的服务器的概念也逐渐淡化,变成了抽象出来的虚拟资源。另外微服务实体运行的环境也是高度分布式和弹性化的,编排系统会调度微服务实体到不同的虚拟资源上,且可以根据需要,自动水平扩缩容。为了应对这种弹性的架构,减少运维和诊断的复杂度,分布式链路追踪技术应运而生。分布式链路追踪技术可以监控多个微服务之间的调用关系和状态,通过调用链可以得到一个完整的业务流程中,各个服务实体的状态、服务处理请求的时间和服务所在的虚拟资源属性等重要诊断信息,从而加快诊断效率。
OpenTracing:OpenTracing是CNCF为了解决不同的分布式链路追踪系统中API不兼容的问题,提出的一种与平台无关的分布式追踪的标准OpenTracing,以提供统一的概念、模型和数据的标准。
Zipkin:Zipkin是Twitter公司开源的分布式链路追踪系统,符合OpenTracing协议的标准。其中,Zipkin格式是采用5个B3 HTTP头部传递Trace上下文,与Jaeger格式对比Zipkin格式的优势是可观察性会好一点,因为每个B3的头部都是独立的,可以直接根据每个头部就获得相关的信息,而Jaeger格式还需要从一个HTTP头部中解析每个字段的含义。5个B3HTTP头部及其含义分别是:
·X-B3-TraceId:传递整个Trace的Trace ID;
·X-B3-SpanId:当前的Span的ID;
·X-B3-ParentSpanId:当前Span的父Span的ID;
·X-B3-Sampled:表示当前的Trace是否需要被采样;
·X-B3-Flags:1代表开启Debug模式。
Jaeger:Jaeger是Uber公司开源的分布式链路追踪系统,符合OpenTracing协议的标准,其中,Jaeger格式是采用一个HTTP头部uber-trace-id传递Trace上下文,与Zipkin格式对比,Jaeger格式减少了HTTP头部的数据传输量,网络传输效率上理论会更高。uber-trace-id的格式为:{trace-id}:{span-id}:{parent-span-id}:{flags},每个字段的含义分别是:
·trace-id:传递整个Trace的Trace ID;
·span-id:当前的Span的ID;
·parent-span-id:当前Span的父Span的ID;
·flags:包括当前的Trace是否需要被采样和是否开启Debug模式的标志。
Tracing体系:Tracing体系是基于Jaeger的技术栈开发的,兼容Jaeger的传递Trace上下文的方式,与Jaeger区别在于Tracing体系中HTTP的头部从uber-trace-id改为了ntes-trace-id。但是,Tracing体系中Tracing数据的收集存在局限性,方式较为单一,其Tracing数据是通过日志收集器收集到Kafka集群,经过Flink组件进行数据清洗后,才存储到数据库。
Istio体系:Istio是采用的是Zipkin格式传递Trace上下文,但是日志的收集和展示却是使用Jaeger中的组件。因为Jaeger提供了一个与Zipkin格式兼容的日志收集接口,Istio的数据面转发组件Envoy把Tracing数据上传到日志收集接口后,再由Jaeger原生技术栈中的前端和日志检索组件展示Tracing数据。
目前实现分布式链路追踪技术的方案主要有以下几种:
方案一:Tracing体系,是一种基于Jaeger自主研发的分布式追踪系统,采用了定制的HTTP(Hyper Text Transfer Protocol,超文本传输协议)头部ntes-trace-id传递Trace(一个请求的完整调用链)的上下文。相关的Tracing数据通过接入定制的SDK(Software Development Kit,软件开发工具包)后输出到日志文件中,日志文件再经由日志收集系统上传到Kafka的集群中。分布式链路追踪系统的Flink组件再对Kafka中的日志进行清洗,以转换成合规的Tracing数据后再写入分布式链路追踪系统的数据库中。再交由分布式链路追踪系统的检索和前端展示模块提供给用户进行搜索、查看Tracing数据的功能。整体架构如图1所示,原生的日志或者经由SDK转后的日志,直接输出到日志文件上,由Loghub Agent(日志收集器)上传日志到Kafka,再被Flink进行清洗后存储到数据库中。但是,这种Tracing体系是采用转换日志的方式收集Tracing的数据,Envoy(服务网格Istio使用的数据面转发组件)原生输出的日志数据的信息并不能组合成一个Span(Span是组成调用链的最小单元),比如缺少进程的PID、每个Span的运行时间Duration等信息,导致Envoy的日志不能直接经过转换就可以变为Tracing的数据。另外Envoy采用的是Zipkin的格式,而Tracing体系是采用Jaeger的格式,两者不能兼容,导致一次完成的业务调用产生两条调用链,一条在Istio的内部,另外一条在Istio的外部。
方案二:Istio(一种服务网格工具集)体系自带的Tracing数据收集方式,Istio内的所有Sidecar的数据都上传到Istio自带的Jaeger Collector(分布式链路追踪数据收装)中,检索Tracing数据也是从Istio自带的Jaeger UI中进行。值得注意的是,在Istio中的数据转发面组件Envoy之前,Trace上下文的传递是采用Zipkin格式的,但是日志收集和展示采用的是Jaeger的相关组件。整体架构如图2所示,因为Jaeger提供了一个兼容Zipkin日志格式的收集器,收集数据转发面可以采用Zipkin的格式,存储和展示的环节可以采用Jaeger的组件,从而整合了两种不同的Tracing体系。但是,继续使用Istio集成的Jaeger组件收集Trace的数据,只能收集Istio集群内的Sidecar和Istio中的IngressGateway边缘网关的Tracing数据,而不支持收集集群外的组件的Tracing数据,也不支持收集集群内业务容器自身的Tracing数据。导致Istio体系内的Tracing数据成为一个孤岛,不能整合到方案一的Tracing体系中去。
方案三:通过修改数据面转发组件(比如Envoy)输出的日志格式,增加一些能够用于组成一个Span的字段输出,适配方案一的Tracing体系。保证一个Span所需要进程PID、服务器的Hostname主机名、Span的Start Time开始时间和Duration持续时间等重要信息可以通过日志获取到。由日志收集系统把容器的数据上传到Kafka集群,再由Flink进行清洗后存储到分布式链路追踪系统的数据库中。整体架构如图3所示,修改了数据转发面IngressGateway和Sidecar的日志输出格式,增加若干字段使得满足Tracing数据的需求,然后经由Loghub Agent把日志上传到Kafka集群中,再被Flink进行数据清洗后将数据存储到数据库中。但是,如果要保证Istio的数据转发面Envoy输出的日志包含一个Span最少的信息,需要对现有的日志输出模块进行修改,增加相关字段的数据,此方案需要对Envoy的代码进行比较大的改动,影响范围比较大,不利于后续Envoy或Istio版本的升级。并且,由于Envoy默认是采用Zipkin格式传递Trace上下文,而方案一的Tracing体系使用的是兼容Jaeger的定制的HTTP头部ntes-trace-id格式传递Trace上下文,两者不能兼容。
上述分布式链路追踪技术存在以下个问题需要解决,包括:Tracing数据格式的兼容问题,接入Tracing体系的用户体验问题,以及Tracing查看权限问题。其中:
Tracing数据格式兼容问题:Tracing体系是采用与兼容Jaeger格式实现的,使用定制的HTTP头部ntes-trace-id传递Trace上下文。但Istio原生的Tracing数据采集是采用Zipkin格式的,因此两者天然在格式上就存在不兼容的问题。为了整合Istio到现有的Tracing体系中,格式兼容是一定要解决的问题。
接入Tracing体系的用户体验问题:当Istio为业务提供分布式追踪功能的价值时,同时应尽量减少用户的感知,减少用户心理负担,尽可能保持与原来的部署方式一致。但是为了使Envoy兼容Jaeger格式,需要引入一个动态库,并且每个容器的与Tracing相关配置文件是不一样的。因此,需要引入一种动态生成与Tracing配置相关的机制,保证Tracing的配置都是动态生成的,业务采取原来的部署方式就可以对接到Tracing体系中。
Tracing查看权限问题:Istio是多用户使用的模式,意味着一个服务网格集群中会存在多个项目共存的情况,而且每一个集群的Tracing数据都上传到是同一个Collector(Tracing数据的收集器)中,因此,每个项目的Tracing数据需要能够进行隔离,保证一个项目的敏感信息不被其他项目获取到。
在本发明实施例中,通过引入一个C++动态库使得Envoy兼容Jaeger格式传递现有的Tracing系统中上下文传输的HTTP头部的ntes-trace-id。由于使用动态库的形式,不需要修改Envoy的代码,因此动态库可以对代码独立进行维护和演进,使得后续Envoy或者Istio版本升级不需进行代码合并,减少了维护和升级的成为。
另外,本发明实施例还可以利用Istio自身注入Sidecar Container配置文件的机制,动态注入与Tracing配置相关的配置文件到容器中,使得业务无感知接入到了现有的Tracing体系中,业务可以保持原有的部署方式,无缝接入到整个Tracing体系中,拥有了检索完整的调用链的能力。
通过一个C++动态库和自动注入Tracing配置文件的机制,Istio为业务交付了更多的非业务本身的能力,提供了更为丰富的故障排查工具和机制的同时,没有引入任何部署上的额外负担,提升了用户的体验。
参照图4,示出了本发明实施例提供的一种分布式系统的数据处理方法的步骤流程图,所述的方法具体可以包括如下步骤:
步骤401,获取用于将数据的格式调整为预设格式的动态库;
其中,预设格式是预先设定的数据格式,如,预设格式为Zipkin格式。动态库是预先写好的目标文件的包,是可执行文件,可以直接被操作系统载入内存执行。为了解决Tracing数据不兼容的问题,预先按照需要的数据格式,制作能够将数据的格式调整为预设格式的动态库,通过获取用于将数据的格式调整为预设格式的动态库,后续可以将该动态库接入需要的系统中进行使用。
步骤402,将所述动态库注入到服务网格Sidecar容器的镜像中;
具体的,在服务网格Istio中提供了注入Sidecar Container边车容器的机制,可以利用服务网格Istio的Sidecar Container机制,将注入动态库到服务网格Sidecar容器的镜像中。
步骤403,在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
其中,预置的Tracing体系可以是预先设置的Tracing体系,是分布式链路追踪系统中用于收集Tracing数据的体系。该预置的Tracing体系是基于Jaeger的技术栈开发的,兼容Jaeger的传递Trace上下文的方式。
通过整合服务网格到预置的Tracing体系中,从而服务网格可以为预置的Tracing体系提供完整调用链闭环输出。无论是业务从服务网格外的组件访问服务网格内部的服务,或者从服务网格内的服务访问服务网格外部的组件,都可以通过统一的Trace ID,在分布式追踪系统的前端中查询到完整的调用链,并通过调用链输出的数据对问题进行诊断。
由于在服务网格中注入了动态库,使得预置的Tracing体系在运行时,通过服务网格中的动态库将收集到的Tracing数据的格式调整为预设格式,并将预设格式的Tracing数据上传到日志收集器,从而,服务网格和预置的Tracing体系中的Tracing数据可以相互兼容,实现了服务网格外部组件、服务网格边缘网关IngressGateway、服务网格边车容器Sidecar和服务网格业务容器的Tracing数据的统一收集、存储、检索和展示。
在本发明的一种优选实施例中,所述步骤402,具体可以包括如下子步骤:
在服务网格的Pod中注入Init容器;通过所述Init容器将所述动态库注入所述服务网格。
Init容器可以是服务网格Istio中用于进行初始化操作的Init Container。
具体的,可以利用服务网格Istio的Sidecar Container机制,在注入Sidecar的同时,往Pod中注入一个Init Container,在注入Init Container之后,可以通过注入InitContainer的环境变量的方式,将动态库的路径参数注入在Init Container的环境变量中。需要说明的是,Pod是Kubernetes内的一种资源,在一个服务网格中,会存在很多个Pod。在每个Pod中,都会存在一个Sidecar容器、一个Init容器和至少一个业务容器。其中,Init容器在执行成功后会退出,并结束其生命周期。
在具体实现中,可以制作一包含动态库的路径参数的Tracing配置的模板,并将Tracing配置的模板通过环境变量注入Init Container,注入Tracing配置的模板的环境变量可以为:ISTIO_META_BOOSTRAP_TEMPLATE。
作为一种示例,在服务网格的Pod中注入的Init Container可以包含以下相关字段:
name:表示Init Container的名字。
command:表示容器启动时执行的命令。
image:表示容器的镜像版本。包含动态生成配置文件的定制镜像。
env:表示容器的环境变量,包括Tracing配置的模板ISTIO_META_BOOSTRAP_TEMPLATE、Tracing数据上传的地址ISTIO_META_JAEGER_AGENT、当前容器所在命名空间ISTIO_META_CONFIG_NAMESPACE和Deployment的名字ISTIO_META_WORKLOAD_NAME。
volumeMounts:表示挂在卷到容器内的配置,主要是Tracing配置文件需要写入到路径/etc/istio/proxy下。
volumes:Pod的卷配置。
resources:容器使用的CPU和内存资源限制。
在本发明实施例中,通过在注入Sidecar容器同时,再往Pod(Kubernetes内的一种资源,一个或多个容器组成一个Pod)中注入一个Init Container的方式,把Tracing配置的模板通过环境变量注入到容器内,同时也把JaegerAgent的地址、命名空间和Deployment的名字一起注入到环境变量中。其中,在Init Container中Command参数指定的第三方插件就会根据输入到容器的环境变量动态生成一份Tracing的配置文件,最终会把Tracing配置文件保存到指定的路径中,例如,保存/etc/istio/proxy/cld_bootstrap.json中。配置文件的保存路径是通过卷挂进容器的,因此同一个Pod的Sidecar容器也同时挂在卷istio-envoy,通过卷挂在的形式,Init Container容器写入的Tracing配置文件,后续Sidecar容器读取到卷中的同一份配置文件,从而实现了Tracing配置文件的动态生成与加载。
需要说明的是,在服务网格运行时,Init Container会先于Sidecar容器启动,并且Init Container在执行结束后会退出并结束其生命周期,只有在Init Container退出后,Sidecar容器才会启动,Sidecar容器在启动之后可以获取到Init Container执行后生成的配置文件,并依据该配置文件调整Tracing数据的格式。
在本发明的一种优选实施例中,所述的方法还包括:
在所述Init容器中添加第三方插件,并针对所述Init容器注入环境参数,其中,所述第三方插件用于根据所述Init容器的环境变量生成配置文件。
在本发明实施例中,可以在Init Container中添加第三方插件,并针对InitContainer注入需要的环境参数。其中,第三方插件是一个启动脚本,用于根据InitContainer的环境变量生成配置文件,例如,添加的第三方插件可以为pre_envoy.sh。
具体的,第三方插件可以依赖Init Container中注入的环境变量生成一份Tracing配置文件,并将Tracing配置文件保存到一个指定的路径下。在具体实现中,使用到的环境变量有ISTIO_META_WORKLOAD_NAME、ISTIO_META_CONFIG_NAMESPACE、ISTIO_META_BOOTSTRAP、ISTIO_META_TRACING_SERVICE_NAME、ISTIO_META_BOOSTRAP_TEMPLATE和ISTIO_META_JAEGER_AGENT。相关环境变量的作用如下:
ISTIO_META_BOOTSTRAP_PATH:用于指定配置文件的生成路径,如果没有此环境变量,则将配置文件保存在默认的路径中,例如,默认的路径可以是/etc/istio/proxy/cld_bootstrap.json。
ISTIO_META_BOOSTRAP_TEMPLATE:用于指定配置文件的模板。
ISTIO_META_TRACING_SERVICE_NAME:用于指定配置文件的service_name字段,如果没有此环境变量,service_name是由环境变量ISTIO_META_CONFIG_NAMESPACE和ISTIO_META_WORKLOAD_NAME组合而成。
ISTIO_META_WORKLOAD_NAME和ISTIO_META_CONFIG_NAMESPACE:用于在没有环境变量ISTIO_META_TRACING_SERVICE_NAME的情况下,共同组合成配置文件的service_name字段,格式如下${ISTIO_META_WORKLOAD_NAME}.${ISTIO_META_CONFIG_NAMESPACE}。
ISTIO_META_JAEGER_AGENT:用于指定Tracing数据上传的JaegerAgent地址。
作为一种示例,采用第三方插件生成的动态生成的配置文件可以包含以下参数:
tracing:表示此配置的关于tracing的。
tracing.http:HTTP请求才生成Tracing数据。
tracing.http.name:指定加载的模块为envoy.dynamic.ot。
tracing.http.typed_config:envoy.dynamic.ot模块的详细配置。
tracing.http.config:tracing配置文件的核心部分。
tracing.http.config.service_name:Tracing数据每个Span中输出的service_name字段的值。
tracing.http.config.sampler:Tracing数据的采样率配置。
tracing.http.config.reporter:Tracing数据上传的地址配置。
tracing.http.config.headers:Tracing数据上下文传递的HTTP头部设置为ntes-trace-id。
在本发明的一种优选实施例中,在Init Container中添加第三方插件之后,所述的方法还可以包括如下步骤:
获取所述配置文件的路径参数;将所述配置文件的路径参数通过环境变量注入服务网格的Sidecar容器中。
具体的,可以通过ISTIO_BOOTSTRAP_OVERRIDE环境变量将配置文件的路径参数服务网格的Sidecar容器中。
作为一种示例,假设路径参数为/etc/istio/proxy/cld_bootstrap.json,则可以设置Sidecar容器对应的环境变量ISTIO_BOOTSTRAP_OVERRIDE的值为/etc/istio/proxy/cld_bootstrap.json,其中,ISTIO_BOOTSTRAP_OVERRIDE用于指定Envoy启动时所加载的配置文件的路径。在设置ISTIO_BOOTSTRAP_OVERRIDE的值之后,Envoy就会加载动态生成的Tracing配置文件。通过将动态生成的配置文件配置于Sidecar容器中,实现了Tracing配置文件的动态生成和加载,达到用户无感知配置接入预置的Tracing体系的目的。
在本发明的一种优选实施例中,还包括:
根据添加所述第三方插件后的Init容器和所述动态库生成目标镜像;设置服务网格中的所述Init容器和Sidecar容器所使用的镜像指向所述目标镜像。
在本发明实施例中,可以在动态库和Init Container添加了第三方插件的基础上,重新打包出来一个自定义的Sidecar容器的镜像。打包后得到的目标镜像中,既保留了服务网格中原有Envoy镜像的功能,也添加了动态库libjaegertracing_plugin.so和用于动态生成Tracing配置文件的第三方插件pre_envoy.sh,后续的Sidecar容器和InitContainer容器都统一使用该定制的镜像。例如,目标镜像为:dockerhub.nie.netease.com/venice/proxyv2:20200818-rc1。
在打包得到目标镜像之后,可以指定Sidecar容器和Init Container容器的镜像为目标镜像。
具体的,Sidecar-Injector是Istio实现注入Sidecar配置的一个服务,K8S集群在生成Pod的时候会根据相关的配置去访问Sidecar-Injector服务,请求为指定的Pod注入一个Sidecar的配置,其中,Sidecar-Injector的配置文件是在命名空间Istio-System下的一个名为istio-sidecar-injector的configmap的内容。因此,可以通过设置configmap:istio-sidecar-injector内容中全局变量values的内容实现将Init容器和Sidecar容器所使用的镜像指向目标镜像。具体是:将values中的global.proxy.image指定自定义的Sidecar容器和Init Container容器使用的镜像,设置目标镜像对应的路径,例如,设置为dockerhub.nie.netease.com/venice/proxyv2:20200818-rc1。
在本发明的一种优选实施例中,在所述步骤401之后,还包括:
在所述动态库中增加用于支持输出项目字段的逻辑程序;其中,所述项目字段用于在检索Tracing数据时进行权限分级。
由于Istio是多用户使用的模式,意味着一个服务网格集群中会存在多个项目共存的情况,而且每一个集群的Tracing数据都上传到是同一个Collector中,因此,每个项目的Tracing数据需要能够进行隔离,保证一个项目的敏感信息不被其他项目获取到。
在本发明实施例中,可以通过在动态库中增加用于支持输出项目字段的逻辑程序,以收集Tracing数据时,同时输入其对应的项目字段,保证Tracing数据的安全性。其中,所述项目字段用于在检索Tracing数据时进行权限分级。
在具体实现中,由于项目具体的字段是process下面的cld.tenant,因此,可以在Tracer的构造函数中新增输出项目字段的逻辑程序。
作为一种示例,可以通过调用platform::tenantname()函数,获取到当前Sidecar所属的项目名字,然后输出到每个Span的process下的cld.tenant字段。其中,函数platform::tenantname()中包含CLD_TENANT参数,用于环境变量的获取,该CLD_TENANT环境变量可以指定输出的项目字段的值。如果没有注入环境变量CLD_TENANT,就从POD_NAMESPACE即命名空间中获取到项目的名字,每个项目的命名空间名字格式有固定格式,格式为project-something,其中,project表示项目的名字,something表示任意字符。因此,可以就按照此格式获取到项目的字段并输出。如果没有环境变量POD_NAMESPACE或者POD_NAMESPACE的值不符合格式project-something的要求,则默认填充的项目为cld。cld是服务网格的项目字段,设置默认的项目的cld,保证了所有Tracing数据都会按照项目分发。另外,通过从环境变量获取的方式,减少了用户配置,因为POD_NAMESPACE是服务网格集群在调度POD的时候就会自动注入了。如图5,是增加项目字段输出后,一个Span的最终的效意图。
在本发明的一种优选实施例中,还包括:
在检索所述Tracing数据时,根据所述项目字段确定目标Tracing数据,以保证所述Tracing数据的安全性。
在本发明实施例中,在增加项目字段输出字段,在检索Tracing数据时,可以根据项目字段确定目标Tracing数据,以保证Tracing数据的安全性。因为,默认的Tracing数据输出中,并没有包含所属项目的信息,通过调整动态库jaeger-client-cpp的处理逻辑,实现了项目字段(cld.tenant)的输出。为Tracing数据的检索模块提供了必要的项目信息用于权限分级,从而,可以按照项目分发Tracing数据,保证了项目间的Tracing数据隔离,保证了项目的敏感信息不被泄漏。
为了能够更好地理解本发明实施例,如图6示出了本方案中整合了Tracing体系和Istio体系之后的整体架构图,其中,动态库部署在Istio的Sidecar容器内。请求的调用链调用步骤如下:
a)客户端Actor为外部的客户端发起访问,经过外部组件LBC(Load BalanceCluster,负载均衡集群)进入到服务网格的内部。
b)服务网格的边缘网关是IngressGateway,请求到了边缘网关后,根据路由到了服务A中,服务A中再调用服务B。
服务网格内相关组件、外部组件和负载均衡器组件的Tracing数据统一收集方式如下:
a)负载均衡器LBC的Tracing数据通过日志输出,由日志收集系统上传到Kafka集群中,最终被Flink组件进行数据清洗转换后,存储到Tracing体系的数据库中。
b)服务网格内部边缘网关IngressGateway和Sidecar容器的Tracing数据通过UDP端口传输到部署在服务网格内部的Jaeger Agent组件中,再由Jaeger Agent组件经过缓存、压缩后再上传到Tracing体系的Collector日志收集器中,最终写到数据库。
c)服务网格内部服务自身也可以输出Tracing的数据,服务A或服务B本身的Tracing数据通过容器日志输出,由日志收集系统上传到Kafka集群中,最终被Flink组件进行数据清洗转换后,存储到Tracing体系的数据库中。作为一种示例,最终由Tracing体系前端检索到的一个Trace的展示效果如图7所示。
在本发明实施例中,具有如下优点:
第一方面,通过引入一个C++动态库jaeger-client-cpp,用于兼容Jaeger格式。虽然Jaeger和Zipkin都是遵循OpenTracing的协议,但是传递Trace上下文的格式是不同的。Jaeger是使用一个HTTP Header传递Trace上下文,Zipkin是使用多个HTTP Header传输Trace上下文,Envoy默认是使用Zipkin格式的,但是Tracing体系是使用Jaeger格式的。jaeger-client-cpp的引入,解决了Envoy采用Jaeger格式的问题,也不需要修改Envoy的源码。
第二方面,利用服务网格Istio的sidecar-injector的机制注入Tracing配置的模板,通过引入一个Tracing的配置模板,使得所有的Sidecar都使用同一份配置模板,其中,该模板定义了参数包括:上传到的Agent的地址、动态库的路径等。
第三方面,通过增加一个Pod的Init Container,动态生成Tracing配置的模板。Init Container中的第三方插件会根据sidecar-injector注入的Tracing配置的模板和Init Container的环境变量生成一份Tracing的配置文件,Envoy启动时,就可以根据配置文件生成和传输Tracing的数据。
第四方面,Tracing数据输出增加项目字段,用于检索Tracing数据时候权限分级。由于默认的Tracing数据输出中,并没有包含所属项目的信息。通过定制动态库jaeger-client-cpp的处理逻辑,实现了项目字段(cld.tenant)的输出,为Tracing数据的检索模块提供了必要的项目信息用于权限分级,保证了项目的敏感信息不被泄漏。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图8,示出了本发明实施例提供的一种分布式系统的数据处理装置的结构框图,所述的装置具体可以包括如下模块:
动态库获取模块801,用于获取用于将Tracing数据的格式调整为预设格式的动态库;
动态库注入模块802,用于将所述动态库注入到服务网格Sidecar容器的镜像中;
服务网格接入模块803,用于在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
在本发明的一种优选实施例中,所述动态库注入模块802,包括:
Init容器注入子模块,用于在服务网格的Pod中注入Init容器;
动态库注入子模块,用于通过所述Init容器将所述动态库注入所述服务网格Sidecar容器的镜像中。
在本发明的一种优选实施例中,所述动态库注入模块802,还包括:
第三方插件添加子模块,用于在所述Init容器中添加第三方插件,并针对所述Init容器注入环境参数,其中,所述第三方插件用于根据注入所述Init容器的环境变量生成配置文件。
在本发明的一种优选实施例中,还包括:
路径参数获取子模块,用于获取所述配置文件的路径参数;
配置文件注入模块,用于将所述配置文件的路径参数通过环境变量注入服务网格的Sidecar容器中。
在本发明的一种优选实施例中,还包括:
目标镜像生成模块,用于根据添加所述第三方插件后的Init容器和所述动态库生成目标镜像;
镜像设置模块,用于设置服务网格中的所述Init容器和Sidecar容器所使用的镜像指向所述目标镜像。
在本发明的一种优选实施例中,还包括:
项目字段输出模块,用于在所述动态库中增加用于支持输出项目字段的逻辑程序;
其中,所述项目字段用于在检索Tracing数据时进行权限分级。
在本发明的一种优选实施例中,还包括:
检索模块,用于在检索所述Tracing数据时,根据所述项目字段确定目标Tracing数据,以保证所述Tracing数据的安全性。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,如图9所示,包括:
处理器901和存储介质902,所述存储介质902存储有所述处理器901可执行的机器可读指令,当电子设备运行时,所述处理器901执行所述机器可读指令,以执行如本发明实施例任一项所述的方法。具体实现方式和技术效果与方法实施例部分类似,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,如图10所示,所述存储介质上存储有计算机程序1001,所述计算机程序1001被处理器运行时执行如本发明实施例任一项所述的方法。具体实现方式和技术效果与方法实施例部分类似,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种分布式追踪系统的数据处理方法和一种分布式追踪系统的数据处理装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种分布式系统的数据处理方法,其特征在于,包括:
获取用于将Tracing数据的格式调整为预设格式的动态库;
将所述动态库注入到服务网格Sidecar容器的镜像中;
在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
2.根据权利要求1所述的方法,其特征在于,所述将所述动态库注入到服务网格Sidecar容器的镜像中,包括:
在服务网格的Pod中注入Init容器;
通过所述Init容器将所述动态库注入所述服务网格Sidecar容器的镜像中。
3.根据权利要求2所述的方法,其特征在于,所述将所述动态库注入到服务网格Sidecar容器的镜像中,还包括:
在所述Init容器中添加第三方插件,并针对所述Init容器注入环境参数,其中,所述第三方插件用于根据注入所述Init容器的环境变量生成配置文件。
4.根据权利要求3所述的方法,其特征在于,还包括:
获取所述配置文件的路径参数;
将所述配置文件的路径参数通过环境变量注入服务网格的Sidecar容器中。
5.根据权利要求3所述的方法,其特征在于,还包括:
根据添加所述第三方插件后的Init容器和所述动态库生成目标镜像;
设置服务网格中的所述Init容器和Sidecar容器所使用的镜像指向所述目标镜像。
6.根据权利要求1所述的方法,其特征在于,在所述获取用于将数据的格式调整为预设格式的动态库的步骤之后,还包括:
在所述动态库中增加用于支持输出项目字段的逻辑程序;
其中,所述项目字段用于在检索Tracing数据时进行权限分级。
7.根据权利要求6所述的方法,其特征在于,还包括:
在检索所述Tracing数据时,根据所述项目字段确定目标Tracing数据,以保证所述Tracing数据的安全性。
8.一种分布式系统的数据处理装置,其特征在于,包括:
动态库获取模块,用于获取用于将Tracing数据的格式调整为预设格式的动态库;
动态库注入模块,用于将所述动态库注入到服务网格Sidecar容器的镜像中;
服务网格接入模块,用于在预置的Tracing体系中接入所述服务网格,使得所述预置的Tracing体系在运行时,通过所述动态库将收集到的Tracing数据的格式调整为预设格式,并将所述预设格式的Tracing数据上传到日志收集器。
9.一种电子设备,其特征在于,包括:
处理器和存储介质,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器执行所述机器可读指令,以执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110321645.5A CN113098942B (zh) | 2021-03-25 | 2021-03-25 | 一种分布式系统的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110321645.5A CN113098942B (zh) | 2021-03-25 | 2021-03-25 | 一种分布式系统的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113098942A true CN113098942A (zh) | 2021-07-09 |
CN113098942B CN113098942B (zh) | 2022-07-12 |
Family
ID=76669651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110321645.5A Active CN113098942B (zh) | 2021-03-25 | 2021-03-25 | 一种分布式系统的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113098942B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140355581A1 (en) * | 2013-06-03 | 2014-12-04 | Honeywell International Inc. | Apparatus and method for providing a common interface for multiple wireless communication protocols |
CN105574205A (zh) * | 2016-01-18 | 2016-05-11 | 国家电网公司 | 分布式计算环境的日志动态分析系统 |
CN108462750A (zh) * | 2018-03-22 | 2018-08-28 | 平安好房(上海)电子商务有限公司 | 分布式调用追踪方法、业务系统、监控系统及存储介质 |
CN111209127A (zh) * | 2020-01-13 | 2020-05-29 | 山东汇贸电子口岸有限公司 | 一种Dubbo框架集成Istio服务网格的方法 |
CN111817867A (zh) * | 2019-04-11 | 2020-10-23 | 普天信息技术有限公司 | 分布式环境下进行多日志协同分析的方法及系统 |
CN111858248A (zh) * | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 应用监控方法、装置、设备以及存储介质 |
CN112019444A (zh) * | 2020-09-02 | 2020-12-01 | 广东省新一代通信与网络创新研究院 | 一种基于Istio技术的5G核心网系统 |
CN112256530A (zh) * | 2020-10-27 | 2021-01-22 | 广州助蜂网络科技有限公司 | 一种可链路追踪的日志服务方法及其系统 |
CN112506894A (zh) * | 2020-12-02 | 2021-03-16 | 平安医疗健康管理股份有限公司 | 基于链路追踪的服务链日志处理方法、装置和计算机设备 |
-
2021
- 2021-03-25 CN CN202110321645.5A patent/CN113098942B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140355581A1 (en) * | 2013-06-03 | 2014-12-04 | Honeywell International Inc. | Apparatus and method for providing a common interface for multiple wireless communication protocols |
CN105574205A (zh) * | 2016-01-18 | 2016-05-11 | 国家电网公司 | 分布式计算环境的日志动态分析系统 |
CN108462750A (zh) * | 2018-03-22 | 2018-08-28 | 平安好房(上海)电子商务有限公司 | 分布式调用追踪方法、业务系统、监控系统及存储介质 |
CN111817867A (zh) * | 2019-04-11 | 2020-10-23 | 普天信息技术有限公司 | 分布式环境下进行多日志协同分析的方法及系统 |
CN111209127A (zh) * | 2020-01-13 | 2020-05-29 | 山东汇贸电子口岸有限公司 | 一种Dubbo框架集成Istio服务网格的方法 |
CN111858248A (zh) * | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 应用监控方法、装置、设备以及存储介质 |
CN112019444A (zh) * | 2020-09-02 | 2020-12-01 | 广东省新一代通信与网络创新研究院 | 一种基于Istio技术的5G核心网系统 |
CN112256530A (zh) * | 2020-10-27 | 2021-01-22 | 广州助蜂网络科技有限公司 | 一种可链路追踪的日志服务方法及其系统 |
CN112506894A (zh) * | 2020-12-02 | 2021-03-16 | 平安医疗健康管理股份有限公司 | 基于链路追踪的服务链日志处理方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113098942B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108037961B (zh) | 一种应用程序配置方法、装置、服务器和存储介质 | |
CN109885311B (zh) | 一种应用程序的生成方法及设备 | |
CN108964968B (zh) | 一种容器云环境下的服务接入管理方法和系统 | |
US9652364B1 (en) | Cloud service for mobile testing and debugging | |
US9158510B2 (en) | System and computer program product for creating a telecommunications application | |
US8478800B1 (en) | Log streaming facilities for computing applications | |
US20090132220A1 (en) | Method For Creating A Telecommunications Application | |
US20230036980A1 (en) | Micro-frontend system, sub-application loading method, electronic device, computer program product, and computer-readable storage medium | |
US8806475B2 (en) | Techniques for conditional deployment of application artifacts | |
WO2018036342A1 (zh) | 基于csar的模型文件的可视化设计方法及装置 | |
CN111444111A (zh) | 基于python的性能测试方法、装置、计算机设备及存储介质 | |
CN113722020B (zh) | 接口调用方法、装置和计算机可读存储介质 | |
CN110507986B (zh) | 动画信息的处理方法和装置 | |
CN110502212A (zh) | 一种面向多语言的高并发在线开发支撑方法 | |
CN110347954B (zh) | 面向复杂Web应用的服务化方法 | |
CN114830080B (zh) | 数据分发流程配置方法及装置、电子设备、存储介质 | |
CN114706579A (zh) | 页面开发方法、装置、服务器及存储介质 | |
CN114265680A (zh) | 一种海量数据处理方法、装置、电子设备及存储介质 | |
CN111290951A (zh) | 测试方法、终端、服务器、系统及存储介质 | |
CN115480753A (zh) | 应用集成系统及相应计算机设备和存储介质 | |
CN111782184A (zh) | 执行定制化人工智能生产线的装置和方法、设备和介质 | |
CN115454629A (zh) | 基于云原生技术的ai算法与微服务调度方法及其装置 | |
CN114830615B (zh) | 数据分发系统及数据分发方法 | |
Wettinger et al. | Any2API-Automated APIfication | |
CN111679828B (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 |