dubbo协议约束

Posted HelloWorld搬运工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo协议约束相关的知识,希望对你有一定的参考价值。

        阿里重启Dubbo维护已经半年多了,今天我们来聊聊Dubbo支持的协议,以及协议有哪些限制。内容摘自Dubbo开源官方文档。

dubbo:

Ø  参数及返回值需实现Serializable接口

Ø  参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。

  Hessian序列化,只传成员属性值和值的类型,不传方法或静态变量,兼容情况:(由吴亚军提供)

接口增加方法,对客户端无影响,如果该方法不是客户端需要的,客户端不需要重新部署;

输入参数和结果集中增加属性,对客户端无影响,如果客户端并不需要新属性,不用重新部署;

输入参数和结果集属性名变化,对客户端序列化无影响,但是如果客户端不重新部署,不管输入还是输出,属性名变化的属性值是获取不到的。

总结:服务器端和客户端对领域对象并不需要完全一致,而是按照最大匹配原则。

rmi:

Ø  参数及返回值需实现Serializable接口

Ø  dubbo配置中的超时时间对rmi无效,需使用java启动参数设置:-Dsun.rmi.transport.tcp.responseTimeout=3000,参见下面的RMI配置。

hessian:

Ø  参数及返回值需实现Serializable接口

Ø  参数及返回值不能自定义实现List, Map, Number, Date, Calendar等接口,只能用JDK自带的实现,因为hessian会做特殊处理,自定义实现类中的属性值都会丢失。

http:

Ø  参数及返回值需符合Bean规范

webservice:

Ø  参数及返回值需实现Serializable接口

Ø  参数尽量使用基本类型和POJO。

thrift:

Ø  null值 (不能在协议中传递null值)

memcached:

redis:


以上是关于dubbo协议约束的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo协议

dubbo协议

Dubbo 协议

Dubbo -- 多协议支持

dubbo内部通信用的啥协议

dubbo协议端口