jaeger client PHP Java C++ example

原文参见: https://github.com/11061055/jaeger_client_example

 

0. 全链路 Trace. 
1. 用 UDP 发包, 不用等 ACK, 网络层面不影响业务性能.
2. 数据包需要小于 MTU 避免分包, 一般不会超过, 可以 tcpdump 查看每个包大小.
3. 代码侵入性很小. 在使用的地方嵌入两行代码, 就能 开始\结束 一个 Span.
4. 自动获取分析函数调用栈, 将函数调用关系组织成树状 DAG 图, 树中的 "兄弟\父子" 关系就与 Jager 中的 "Child\Follow" 关系 对应, 简化模型.
5. 为了提升读写效率, 还将树状 DAG 图中的每个节点加入一个 KV Map 中, 实现 O(1) 查询和加入一个 DAG 图节点.
6. PHP 中可使用 debug_backtrace() 获取函数栈, Java 中可以使用 Thread.currentThread().getStackTrace().
7. 我在 PHP 项目中 运行 debug_backtrace() 一千万次, 耗时 2 秒, 每个操作0.2微秒, 所以代码运行层面也不影响业务性能.
8. 代码量非常少, PHP 的代码总计不到 200 行.
9. PHP 执行环境是单线程, 所以不用考虑并发问题, Java 和 C++ 就需要考虑了.
9. PHP 调用栈一般很浅, Java 由于工具封装较好, 所以调用栈可能很长, 不过只会将调用了 trigger() 和 close() 的函数加入 DAG 图, DAG 大小也是业务可控的.
9. DAG 图节点的多少, 是和我们有多少个函数调用 trigger() 一致的(不是调用次数, 相同层次函数虽然可以被调用多次, 或者一个函数中存在多个 trigger, 但是只对应一个 DAG 图节点). 简单点说 就是代码中有多少个函数写了 trigger(), DAG 图中就会有多少个节点, 即所需额外内存大小也是业务可控的.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值