Apache Dubbo是一款高性能的Java RPC框架,能和
Spring
框架无缝集成。RPC全称为
remote procedure call
,即远程过程调用。RPC并不是一个具体的技术,而是指整个网络远程调用过程,严格来说一切远程过程调用手段都属于RPC范畴。
Dubbo和Spring Cloud在使用用途上类似,都是用于构建微服务架构的项目。这两个框架之间在架构上也有相同的点,都有一个服务注册和发现中心,用来管理微服务的注册与管理。Spring Cloud的服务注册和发现中心一般是使用Spring Cloud组件Eureka。而Dubbo框架的服务注册与发现则是使用的是Zookeeper。Dubbo的架构图如图所示:
![](https://img-blog.csdnimg.cn/9158d08d874540ac99d3a0c157262da9.png)
架构图中的节点解析:
- Provider:暴露服务的服务提供方;
-
Consumer : 调用远程服务的服务消费方 ;
-
Registry:服务注册与发现的注册中心 ;
-
Monitor : 统计服务的调用次数和调用时间的监控中心;
-
Container : 服务运行容器;
-
虚线都是异步访问,实线都是同步访问;
-
蓝色虚线:在启动时完成的功能;
-
红色虚线(实线)都是程序运行过程中执行的功能。
调用关系说明
:
0:
服务容器负责启动,加载,运行服务提供者。
1:
服务提供者在启动时,向注册中心注册自己提供的服务。
2:
服务消费者在启动时,向注册中心订阅自己所需的服务。
3:
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4:
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5:
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。