Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

motan-go 是否支持opentracing? #178

Open
Maary opened this issue Jun 20, 2019 · 5 comments
Open

motan-go 是否支持opentracing? #178

Maary opened this issue Jun 20, 2019 · 5 comments

Comments

@Maary
Copy link

Maary commented Jun 20, 2019

No description provided.

@Zha-Zha
Copy link
Contributor

Zha-Zha commented Jun 20, 2019

是支持的,这是当时的pull request,里面有使用示例:#55

@Maary
Copy link
Author

Maary commented Jun 21, 2019

我在demo中实现opentracing的时候,不同于grpc方式,可以通过context创建子span,在motan-go中,无法传递context到服务端,对整条链路的追踪,似乎只能在一端完成,有没有办法建立整条链路的追踪信息。

@rayzhang0603
Copy link
Contributor

motan使用反射机制执行server端的service,由于golang没有类似java的threadlocal的隐式传递机制,在server端的业务逻辑中无法直接获取到rpc的context。
后续我们考虑通过服务契约自动生成golang service时在方法参数中显示增加context来提供类似机制,不过需要等多语言服务描述功能完成后(https://github.com/weibreeze 目前还在开发调试阶段),才能进行。

也可以考虑在service方法签名中显示增加rpc的context,然后在实现provider接口扩展,在反射调用时增加context参数临时解决这个问题。默认server端的provider是DefaultProvider,扩展方式可以参考provider包下的其他provider扩展类。

@Maary
Copy link
Author

Maary commented Jun 21, 2019

谢谢你的建议? 我现在遇到了一个问题,在业务代码中部分server端是java实现,部分client端是golang实现,然后通过motan提供的rpc服务调用方式,进行通讯,现在考虑到的一个问题是通过provider扩展golnag这边的服务通讯方式,同样java端也需要实现这个扩展,因为对motan-go的源码和java(motan)的实现方式不是很了解,所以想咨询一下这种解决办法的可行性。表示再次感谢。

@rayzhang0603
Copy link
Contributor

java端可以直接在业务代码中通过RpcContext.getContext()获取请求上下文,所以不需要额外处理。

所以只需要在golang的业务端处理一下,能获取到请求相关信息就可以了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants