Dubbo(一)

一.架构图

Dubbo(一)

二.架构说明

2.1

虚线表示异步,实线表示同步。异步不阻塞线程性能高,同步阻塞线程必须等待响应结果才能继续执行,相对性能低。

2.2 Provider

提供者。编写持久层、业务层和事务代码。

2.3 Container

容器(Spring容器),Dubbo完全基于Spring实现的。

2.4 Registry

注册中心。放置所有Provider对外提供的信息。包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息。

2.5 Consumer

消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以包括页面等)。调用远程服务实现(XXXXServiceImpl)中的方法。

2.6 Monitor

监控中心。监控Provider的压力情况等。每隔2分钟Consumer和Provider会把调用次数发送给Monitor,由Monitor进行统计。

三.执行流程

0
start:启动Spring容器时会把Provider启动
1.
register:把Provider相关信息注册到Resinstry里
2.
subsctibe: Consumer从Registry中订阅Provider的信息
3.
notify:注册中心通知给Consumer
4.
invoke:Consumer根据Registry通知的信息进行调用Provider中方法。
5.
count:Consumer和Provider把调用次数信息异步发送给Monitor进行统计。

四.更加详细的执行流程(调用关系说明)

1.服务容器负责启动,加载,运行服务提供者.

2.服务提供者在启动时,向注册中心注册自己提供的服务

3.服务消费者在启动时,向注册中心订阅自己所需的服务

4.注册中心返回服务提供者的地址列表给消费者,如果有变更,注册中心将基于长连接推送变更的数据给消费者

5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用

6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心