《Apache Dubbo微服务开发从入门到精通》——通信协议—— 一、 Dubbo通信协议设计概述(上) https://developer.aliyun.com/article/1224959
2. Dubbo2
Dubbo2协议是基于TCP传输层协议之上构建的一套RPC通信协议,由于其紧凑、灵活、高性能的特点,在Dubbo2时代取得了非常广泛的应用,是企业构建高性能、大规模微服务集群的关键通信方案。在云原生时代,我们更推荐使用通用性、穿透性更好的Triple协议。
• Dubbo2协议规范请参考Dubbo官网文档技术方案博客
3. gRPC
你可以用Dubbo开发和治理微服务,然后设置使用gRPC协议进行底层通信。但为什么要这么做那,与直接使用gRPC框架对比有什么优势?简单的答案是,这是使用gRPC进行微服务开发的常用模式,具体请往下看。
gRPC是谷歌开源的基于HTTP/2的通信协议,如同我们在产品对比文档中提到的,gRPC的定位是通信协议与实现,是一款纯粹的RPC框架,而Dubbo定位是一款微服务框架,为微服务实践提供解决方案。因此,相比于Dubbo,gRPC相对欠缺了微服务编程模型、服务治理等能力的抽象。
在Dubbo体系下使用gRPC协议(gRPC over Dubbo Framework)是一个非常高效和轻量的选择,它让你既能使用原生的gRPC协议通信,又避免了基于gRPC进行二次定制与开发的复杂度(二次开发与定制gRPC,是很多企业规模化实践后证实不可避免的环节,Dubbo框架替开发者完成了这一步,让开发者可以直接以最简单的方式使用gRPC)。
• gRPC over Dubbo示例请参考官网文档中的任务模块
4. REST
微服务领域常用的一种通信模式是HTTP+JSON,包括Spring Cloud、Microprofile等一些主流的微服务框架都默认使用的这种通信模式,Dubbo同样提供了对基于HTTP的编程、通信模式的支持。
• HTTP over Dubbo示例请参考官网文档中的任务模块
• Dubbo与Spring Cloud体系互通示例请参考官网文档中的任务模块
5. 其他通信协议
除了以上介绍的几种协议之外,你还可以将以下协议运行在Dubbo之上。对Dubbo而言,只需要修改一行简单的配置,就可以切换底层服务的通信协议,其他外围API和治理能力不受影响。
• Hessian2
• Thrift
• JsonRPC
6. 异构微服务体系互通
关于协议迁移、多协议技术栈共存的实践方案,请参考本篇官网博客文章《使用Dubbo实现异构体系互通》。
7. 配置方式
以上协议的配置和使用方式,包括如何配置单端口多协议支持等,请参照官网sdk示例文档。
8. 自定义扩展
除了以上官方版本支持的通信协议,Dubbo支持扩展新协议支持,具体请参见Dubbo官网可扩展性说明。