- 基于 HTTP/2 的 Triple 协议以及面向代理 API 的编程体验。
- 强大的流量治理能力,如地址发现、负载均衡、路由选址、动态配置等。
- 多语言 SDK 实现,涵盖 Java、Golang、Javascript 等,更多语言实现将会陆续发布。
- 灵活的适配与扩展能力,可轻松与微服务体系其他组件如 Tracing、Transaction 等适配。
- Dubbo Mesh 解决方案,同时支持 Sidecar、Proxyless 等灵活的 Mesh 部署方案。
需要注意的是,在 Dubbo 中,我们提到服务时,通常是指 RPC 粒度的、提供某个具体业务增删改功能的接口或方法,与一些微服务概念书籍中泛指的服务并不是一个概念。
发布:开发服务端代码完毕后, 将服务信息发布出去. 实现一个服务的公开。
订阅:客户端程序,从注册中心下载服务内容 这个过程是订阅.订阅服务的时候, 会将发布的服务所有信息,一次性下载到客户端.
客户端也可以自定义, 修改部分服务配置信息. 如: 超时的时长, 调用的重试次数等.
服务的提供者(provider):服务的客户端.消费者必须使用Dubbo技术开发部分代码. 基本上都是配置文件定义,服务提供者在启动时,向注册中心注册自己提供的服务。
服务的消费者(consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
容器(container):Dubbo技术的服务端(Provider), 在启动执行的时候, 必须依赖容器才能正常启动.默认依赖的就是spring容器. 且Dubbo技术不能脱离spring框架.
监控中心(monitor):是Dubbo提供的一个jar工程.主要功能是监控服务端(Provider)和消费端(Consumer)在内存中的累计使用数据的. 如: 服务端是什么,有多少接口,多少方法, 调用次数, 压力信息等. 客户端有多少, 调用过哪些服务端, 调用了多少次等.定时每分钟发送一次统计数据到监控中心
调用关系说明
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
优点:采用NIO复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)
缺点:大文件上传时,可能出现问题(不使用Dubbo文件上传)
优点:JDK自带的能力。可与原生RMI互操作,基于TCP协议
缺点:偶尔连接失败.
优点:可与原生Hessian互操作,基于HTTP协议
缺点:需hessian.jar支持,http短连接的开销大
优点:支持分布式.很多周边产品.
缺点:受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优
优点:去中心化,不需要单独安装软件.
缺点:Provider和Consumer和Registry不能跨机房(路由)
优点:支持集群,性能高
缺点:要求服务器时间同步.否则可能出现集群失败问题.
优点:标准RPC服务.没有兼容问题
缺点:不支持集群.