Dubbo:一个分布式、高性能、透明化的RPC服务框架。
作用:提供服务自动注册、自动发现等高效服务治理方案。
Dubbo架构图
- 虚线都是异步访问,实线都是同步访问
- 蓝色虚线:在启动时完成的功能
- 红色虚线(实线)都是程序运行过程中执行的功能
- 所有的角色都是可以单独的放在一个服务器上。所以必须遵守特定的协议。
- Provider :暴露服务方称之为“服务提供者”。服务发布方。(Provider是进行数据访问的)
- Consumer:调用远程服务方称之为“服务消费者”。(调用Provider的称为Consumer)
- Container:Dubbo容器。依赖于Spring容器。(在Spring容器启动的时候,就把Dubbo容器启开了,没有Spring Dubbo就没法用,所用Dubbo和Spring是一种强耦合的关系)
- Registry: 服务注册与发现的中心目录服务称之为“服务注册中心”。当Container启动时把所有可以提供的服务列表去Registry中进行注册。作用:告诉Consumer提供了什么服务和服务方在哪里。
- Monitor:监听器,统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。
运行原理
- 启动容器,相当于在启动Dubbo的Provider
- 启动后会去注册中心进行注册。注册所有可以提供的服务列表
- 在Consumer启动后会去Registry中获取服务列表和Provider的地址。进行订阅。
- 当Provider有修改后,注册中心会把消息推送给Consummer(使用了观察者设计模式)
- 根据获取到的Provider地址,真实调用Provider中功能。(在Consumer方使用了代理设计模式.创建一个Provider方类的一个代理对象。通过代理对象获取Provider中真实功能,起到保护Provider真实功能的作用)
- Consumer和Provider每隔1分钟向Monitor发送统计信息,统计信息包含,访问次数,频率等。(这个主要是给统计人员或者是维护人员用的)