Dubbo入门(一)
Dubbo:实现了分布式系统中的互相调用。
Zookeeper:统一管理的调度中心。
1 为什么说Dubbo性能高
远程调用最关键、最耗时的两点:序列化和网络通信。
序列化:本地对象要在网络上传输,必须要实现Serializable接口,也就是必须序列化。
序列化方式,如xml、json、二进制流等,Dubbo采用二进制流效率最高,因为计算机就是二进制的。
(PS:基本数据类型、String都已经实现了序列化)
网络通信:不同于HTTP需要7步走(三次握手、四次挥手)。
Dubbo采用Socket通信机制,一步到位,提升了通信效率,并且可以建立长连接,不用反复连接,直接传输数据。
其他RPC框架:gRPC、Thrift、HSF等。
2 六大核心能力
Dubbo是一款高性能、轻量级的开源RPC框架,提供了六大核心能力:
- 面向接口代理的高性能RPC调用
- 智能容错和负载均衡
- 服务自动注册和发现
- 高度可扩展能力
- 运行期流量调度
- 可视化的服务治理与运维
官网:https://dubbo.apache.org/zh/
3 Dubbo架构
节点 | 角色说明 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器(指的就是Spring容器, Dubbo与Spring是无缝对接的) |
调用关系说明
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。