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.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心