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