dubbo---框架和支持的协议以及支持的注册中心
一. Dubbo框架
架构说明
1.虚线
虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结
果才能继续执行,相对性能低。
2.Provider
暴露服务的服务提供方。
3.Container
服务运行容器。Dubbo 完全基于 Spring 实现的。
4.Registry
服务注册与发现的注册中心。注册中心,放置所有 Provider 对外提供的信息。包含
Provider 的 IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信
息。
5.Consumer
调用远程服务的服务消费方。
6.Monitor
统计服务的调用次调和调用时间的监控中心。监控中心,监控 Provider 的压力情况等。
每隔 2 分钟 Consumer 和 Provider 会把调用次数发送给 Monitor,由 Monitor 进行统计。
执行流程
- start:启动 Spring 容器时会把 Provider 启动。
- register:把 Provider 相关信息注册到 Registry 里
- subscribe:Consumer 从 Registry 中订阅 Provider 的信息
- notify:通知给 Consumer
- invoke:Consumer 根据 Registry 通知的信息进行调用 Provider 中方法。
- count:Consumer 和 Provider 把调用次数信息异步发送给 Monitor 进行统计。
二.支持的协议
1 Dubbo 协议(官方推荐协议)
优点:
采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,
性能较好(推荐使用)
缺点:
大文件上传时,可能出现问题(不使用 Dubbo 文件上传)
2 RMI(Remote Method Invocation)协议
优点:
JDK 自带的能力。
缺点:
偶尔连接失败.
3 Hessian 协议
优点:
可与原生 Hessian 互操作,基于 HTTP 协议
缺点:
需 hessian.jar 支持,http 短连接的开销大
三.Dubbo 支持的注册中心
1 Zookeeper(官方推荐)
- 优点:
支持分布式.很多周边产品. 2) 缺点:
受限于 Zookeeper 软件的稳定性。Zookeeper 是一款专门为分布式架构提供辅助型处
理的软件,稳定较优。
2 Multicast
- 优点:
去中心化,不需要单独安装软件. 2) 缺点:
2.2.1 Provider 和 Consumer 和 Registry
3 Redis
- 优点:
支持集群,性能高 - 缺点:
要求服务器时间同步.否则可能出现集群失败问题.
4 Simple
- 优点:
标准 RPC服务.没有兼容问题 - 缺点:
不支持集群.