千家信息网

zipkin的原理是什么

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"zipkin的原理是什么",在日常操作中,相信很多人在zipkin的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"zipkin的原理是什么"
千家信息网最后更新 2026年11月04日zipkin的原理是什么

这篇文章主要介绍"zipkin的原理是什么",在日常操作中,相信很多人在zipkin的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"zipkin的原理是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

通过zipkin的表结构,理解dapper;trace把多个span进行串接;
形成依赖链路。

结构

zipkin主要包括:collector、storage、search、webui;
zipkin collector会对一个到来的被trace的数据(span)进行验证、存储并设置索引。
其中storage包括:内存、mysql、es、cassandra。

数据结构

Annotation:用于定位一个request的开始和结束,cs/sr/ss/cr含有额外的信息,比如说时间点,当这个annotation被记录了,这个RPC也被认为完成了。

     cs:Client Start,表示客户端发起请求 ;一个span的开始;     cr:Client Received,表示客户端获取到服务端返回信息;一个span的结束     sr:Server Receive,表示服务端收到请求     ss:Server Send,表示服务端完成处理,并将结果发送给客户端    sr-cs:网络延迟    ss-sr:逻辑处理时间    cr-cs:整个流程时间

Span:一个请求(包含一组Annotation和BinaryAnnotation);它是基本工作单元,一次链路调用(可以是RPC,DB等没有特定的限制)创建一个span,通过一个64位ID标识它。span通过还有其他的数据,例如描述信息,时间戳,key-value对的(Annotation)tag信息,parent-id等,其中parent-id 可以表示span调用链路来源,通俗的理解span就是一次请求信息。

Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
Traces are built by collecting all Spans that share a traceId。通过traceId、spanId和parentId,被收集到的span会汇聚成一个tree,从而提供出一个request的整体流程。

流程图

image.png

表设计

1.span表

CREATE TABLE IF NOT EXISTS zipkin_spans (  `trace_id` BIGINT NOT NULL,  `id` BIGINT NOT NULL,  `name` VARCHAR(255) NOT NULL,  `parent_id` BIGINT,  `debug` BIT(1),  `start_ts` BIGINT    COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement    TTL',  `duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration and maxDuration query') ENGINE=InnoDB ROW_FORMAT=COMPRESSED;

一些约束

ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id`, `id`) COMMENT 'ignore insert on duplicate';ALTER TABLE zipkin_spans ADD INDEX(`trace_id`, `id`) COMMENT 'for joining with zipkin_annotations';ALTER TABLE zipkin_spans ADD INDEX(`trace_id`) COMMENT 'for getTracesByIds';ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT 'for getTraces and getSpanNames';ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT 'for getTraces ordering and range';
CREATE TABLE IF NOT EXISTS zipkin_annotations (  `trace_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',  `span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',  `a_key` VARCHAR(255) NOT NULL             COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',  `a_value` BLOB             COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',  `a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',  `a_timestamp` BIGINT           COMMENT 'Used to implement TTL; Annotation.timestamp or                   zipkin_spans.timestamp',  `endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is null',  `endpoint_ipv6` BINARY(16)         COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',  `endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint is null',  `endpoint_service_name` VARCHAR(255) COMMENT 'Null when           Binary/Annotation.endpoint is null') ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT 'Ignore insert on duplicate';ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`) COMMENT 'for joining with zipkin_spans';ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`) COMMENT 'for getTraces/ByIds';ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames';ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces';ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces';

3.依赖关系

CREATE TABLE IF NOT EXISTS zipkin_dependencies (  `day` DATE NOT NULL,  `parent` VARCHAR(255) NOT NULL,  `child` VARCHAR(255) NOT NULL,  `call_count` BIGINT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;ALTER TABLE zipkin_dependencies ADD UNIQUE KEY(`day`, `parent`, `child`);

到此,关于"zipkin的原理是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

信息 原理 时间 结构 链路 学习 客户 客户端 数据 流程 服务 更多 标识 处理 帮助 实用 通俗 接下来 内存 单元 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司的优势 西安互联网科技 云电互联网科技 苏州大垚互联网科技 青海省互联网新科技 银川新华互联网科技学校地址 哈尔滨新华互联网科技学院 北京大学互联网科技怎么样 来此购互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 互联网保险科技创业 互联网科技人工智能实验室 科技类公司包括互联网吗 互联网科技创新的路径 互联网科技融合创新 工业互联网科技创业 珠海东科互联网科技有限公司 互联网科技企业商标注意事项 科技和互联网行业的特点 互联网科技企业文化 耶加雪菲 科技服务与互联网 阿里巴巴算科技企业还是互联网 常德市电业局互联网科技部 乌苏新华互联网科技做什么的 中国互联网公司排名锤子科技 深圳无忧互联网科技 江苏互联网智能科技软件 上海创道互联网络科技有限公司 互联网领先科技成果宣传视频
0