开发者社区 > 云原生 > 正文

serialization方式不能自定每个Service,可以每个protocol

我就问一下,不行就算了~(还有能加上jacksonserialization吗?

https://github.com/apache/incubator-dubbo/blob/6ce7b11f982c5f7beb2ac5897fb33d48da357ada/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/codec/ExchangeCodec.java#L211

protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request req) throws IOException {
    Serialization serialization = getSerialization(channel);

dubbo-2.6.3,channel.url对应的service和req里对应的service不是同一个,导致对每个Service配置不同的serialization结果还是同一个serialization方式(看channel拿到的是哪个),@Reference里面指定也不行。

Q1: dubbo-2.6.3

1、提供者和消费者不在同一个jvm里,或者强制指定scope="remote"

2、提供者里为2个service指定不同的serialization

3、消费者里断点到下面这个方法里: serialization = getSerialization(channel);

https://github.com/apache/incubator-dubbo/blob/6ce7b11f982c5f7beb2ac5897fb33d48da357ada/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/codec/ExchangeCodec.java#L211

4、测试Reference1,断点地方看下channel.url对应的service和req里对应的service是否是同一个

5、测试Reference2,断点地方看下channel.url对应的service和req里对应的service是否是同一个

reference1,reference2对应两个不同的service

想表达的就是上面的:channel.url对应的service和req里对应的service不是同一个

Q2: jackson serialization?

原提问者GitHub用户gMan1990

展开
收起
大圣东游 2023-05-11 20:22:20 147 0
1 条回答
写回答
取消 提交回答
  • q1: 我的理解,拿到的应该不是同一个service实例,在dubbo最新版本,比如2.6.5& 2.7.0+ 已经修复过一次。低版本拿到的是同一个实例,当时用@Reference注解内部使用了cache,导致拿到同一个实例。

    q2: jackson serialization? 这个问题是啥?

    dubbo 客户端请求会把具体序列化协议flag传给provider,如果遇到具体的问题,麻烦写个demo复现,我们看下。

    原回答者GitHub用户zonghaishang

    2023-05-12 12:09:33
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载