apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.41k stars 3.96k forks source link

如何在requestMeta当中设置 traceId, parentSpanId, spanId? #2656

Open RagdollNoone opened 4 months ago

RagdollNoone commented 4 months ago

目前公司想用brpc, starlight做c++, java的通信, 需要接入第三方分布式链路追踪组件 目前选型是美团的cat 想请教下 starlight, brpc该如何优雅的设置这三个变量

ps: 求一个最新的群二维码 请教一些关于brpc starlight的问题

wwbmmm commented 4 months ago

这些变量应该是框架设置的,用户不需要设置。

RagdollNoone commented 4 months ago

不太理解你说的意思 traceid等应该由第三方链路追踪框架生成 但是brpc和java进行分布式调用 需要传递这些值 这样链路追踪中间件才能收集信息 并且展示正确

---- 回复的原邮件 ---- | 发件人 | Weibing @.> | | 发送日期 | 2024年06月03日 16:37 | | 收件人 | apache/brpc @.> | | 抄送人 | RagdollNoone @.>, Author @.> | | 主题 | Re: [apache/brpc] 如何在requestMeta当中设置 traceId, parentSpanId, spanId? (Issue #2656) |

这些变量应该是框架设置的,用户不需要设置。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

RagdollNoone commented 4 months ago

目前的话 starlight框架 我读了些源码后 有了一定的思路 就是通过spi机制 创建新的filter 在filter当中 修改request的attachmentkv这个map 填充第三方生成的traceid spanid parentspanid 但是brpc框架该怎么操作? cpp不太会… 然后还有一点比较难受得是 traceid等字段在元数据当中的定义成long类型的 但是一般第三方的id都是string 不知道有没有不改源码就能兼容的方式?

---- 回复的原邮件 ---- | 发件人 | Weibing @.> | | 发送日期 | 2024年06月03日 16:37 | | 收件人 | apache/brpc @.> | | 抄送人 | RagdollNoone @.>, Author @.> | | 主题 | Re: [apache/brpc] 如何在requestMeta当中设置 traceId, parentSpanId, spanId? (Issue #2656) |

这些变量应该是框架设置的,用户不需要设置。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

wwbmmm commented 3 months ago

brpc并没有暴露给用户修改RequestMeta中的traceid/spanid/parentspanid的方法,而且如你所说,brpc std协议中定义的这几个id都是long型,可能不能满足需求。 但也可以考虑通过其它字段来传递这几个id。比如std协议在这个PR https://github.com/apache/brpc/pull/2406 之后提供了自定义扩展字段,用户可以通过这种方式来传递这些id。或者使用其它协议比如http协议,用户可以通过请求的header来设置这些id。