dubbo不同的通信协议对应不同的序列化协议,也就是说,序列化协议和通信协议是一一对应的
一、默认的Dubbo://
关键词:单一连接、长连接、NIO、Hessian序列化
适用场景:少量数据高频访问(远程方法调用)
分析:
单一连接:保证了服务端不会因为某一个单一的消费端产生大量请求而被压垮。因为一个消费端和服务端之间只有一个连接,而此连接会受到网络带宽的限制。(测试经验数据每条连接最多只能压满7MByte,如果一个数据包的大小为100K,单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 100KByte = 70左右。)所以即使消费端需要发送很多请求,但是由于单一连接网络的限制,并发量也不会出现爆发式的增长。
长连接:为了省去建立连接和销毁连接所产生的开销。
NIO:NIO的特点有:通道、缓冲区、选择器,选择器通过使用一个线程轮询多个通道来执行就绪状态的任务。也称为非阻塞的IO。使用NIO可以避免反复创建和销毁线程,防止了C10K问题。
少量数据:由于单一连接带宽限制,如果单个请求的数据包过大,那就会导致每秒发送的请求数上限变少,并发量也会随之减少,所以只有请求大小比较少的适合才可以支持高频访问服务端。
二、其他通信协议
1.rmi JDK序列化
2.Hessian Hessian序列化
3.Http JSON序列化
4.WebService SOAP文本序列化
以上四个通信协议都是多连接、短连接、同步传输,不同的地方在于序列化的方式不同。其中rmi和Hessian可以传输文件、Http提供给浏览器表单一类使用、WebService用于跨语言调用等等。
5.thrif
6.Redis
7.Memcached
更多具体可参考Dubbo官方文档。