了解Dubbo基本概念
看一下云原生基金会对他的描述: https://landscape.cncf.io/?selected=dubbo
Apache Dubbo is a high-performance, java based, open source RPC framework.
Dubbo 是一款基于Java的高性能 RPC 框架。
那么什么是RPC呢?
来自Wiki:https://en.wikipedia.org/wiki/RPC
分布式计算中,远程过程调用(英语:Remote Procedure Call,RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
当我们在讨论Dubbo的时候,一定是迈入了分布式的大门。当各个系统分开后,通信方式成为了一个很重要的话题。首先,他有一定的通信协议和格式,比如TCP
、HTTP
、Socket
等作为协议,JSON
、XML
、Protocol Buffers
确定消息结构。其次,序列化和反序列化,然后还有通信安全,容错,负载均衡等问题。
这样一套需求下来,如果只是发送Http请求,显得有点捉襟见肘。
发展历程
2011年,Dubbo开源,由阿里巴巴的 B2B 团队主力,它的一出现填补了国产PRC的空白,一发布就被广泛采用。
但好景不长,2013年,B2B退市,团队被合并,Dubbo几乎不再维护。但由于占有了很大的使用率,一直很火热。一直到2017年8月,维护重启。并在2018年2月加入Apache 孵化器,一年的时间成为顶级项目。
主要功能
- 微服务开发:支持多语言、多环境部署、多种治理能力
- 服务发现:依赖第三方Nacos、Consul、Zookeeper等实现
- 负载均衡:内置多种均衡策略,缺省为
weighted random
基于权重的随机负载均衡策略。 - 流量管控:各种路由规则:条件路由、标签路由、脚本路由、动态配置
- 通信协议:除了常规的Triple,Dubbo2,还支持第三方,像gRPC、Thrift、REST、JsonRPC、Hessian2
- 扩展适配:
- 观察服务:例如Admin控制台
Dubbo 3.0 与 云原生
在经历了辉煌,衰败,到重生之后,Dubbo在云原生时代下继续延续光芒。
最大的变革除了RPC的多协议支持,就是应用粒度的服务发现机制,这使得它一些云原生场景也更好适配,一下与主流的Spring Cloud对齐。性能和可伸缩性得到了提升。
我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表