Closed linchuyao closed 5 years ago
provider 在启动注册服务的时候,会把序列信息存储在注册中心里面, 像下面的这样
provider://192.168.0.7:20880/cn.web1992.dubbo.demo.DemoService?methods=sayHello,demo&pid=971&serialization=hessian2
consumer 在启动的时候回去注册中心,获取到这些信息,并与 provider 建立 TCP 链接,后续再序列化传输的时候,会使用 provider 提供的 序列化配置进行序列化。
因此cosumer 使用的是 provider 的序列化配置(注意在获取注册中心的配置,建立TCP 链接的时候,还不需要使用序列化协议进行传输信息的)
provider使用kryo协议 当接口升级(入参对象添加字段) consumer 没有升级在调用时会报序列化错误这个除了改为hessian2还有别的解决方案吗
kryo 协议如果要兼容字段的新增,删除,需要使用 CompatibleFieldSerializer
,需要对kryo 的序列化进行控制,比较麻烦,而使用 hessian2 来的快些。看你自己的需求吧。
provider修改序列化为hessian2重新启动provider comsume不重启发现还是使用的kryo协议 重启后变为hessian2 这在生产上很难实行 除了重启comsume还有别的方案吗
provider修改序列化为hessian2重新启动provider comsume不重启发现还是使用的kryo协议 重启后变为hessian2 这在生产上很难实行 除了重启comsume还有别的方案吗
看起来没其他方案了,除非你的 consumer 也开始适应 kryo。 @web1992 解释的很全面
provider修改序列化协议重启消费端需要重启吗
dubbo 消费者serialization配置为hessian 生产者serialization配置为kryo 那么调用过程是怎么样的呢? 是消费者序列化用hessian 生产者反序列化用kryo 还是 生产和消费都用hessian 还是生产和消费都用kryo