一、认识Dubbo
1、SOA
1.1中英文:service oriented Ambiguity 面向服务架构
1.1.1 有提供服务的单元
1.1.2 其他单位调用这个服务
1.2定位:如何设计项目,让开发更有效率,SOA是一种思想
1.3老架构问题:
1.3.1公司项目不允许所有项目都访问数据库
1.3.2开发时数据访问层有冗余问题
2、使用SOA架构
2.1专门访问数据库服务(项目)
2.2 开发时可以实现数据库访问控制和代码复用
3、实现SOA架构,常用服务
3.1 Dubbo做为服务
3.2 WebService 做为服务
3.3 DubboX 做为服务
3.4 服务方就是Web项目,调用Web项目的控制器
3.4.1 使用HTTPClient可以调用其他项目的控制器
二、RPC
1. 中英文 Remote Procedure Call Protocal 远程过程调用协议
2. RPC解析:客户端通过互联网调用远程服务器,不知道远程服务器具体实现,只知道远程服务器提供了什么功能
3. RPC最大优点:保证被访问的数据安全性
三、Dubbo简介
1. Dubbo是一个分布式、高性能、透明化的RPC服务框架
2. 作用:提供服务自动注册、自动发现等高效服务治理方案
3、Dubbo架构图
3.1 Provider: 提供者,服务发布方,提供数据访问
3.2 Consumer: 消费者,调用服务方
3.3 Container: Dubbo容器,依赖于Spring容器
3.4 Registry: 注册中心,当Container启动时把所有可以提供的服务列表在Registry中进行注册
3.5 Moniter: 监听器
3.4.1 作用:告诉Consumer提供了什么服务和服务方在哪里
3.6 虚线都是异步访问,实线都是同步访问
3.7 蓝色虚线:在启动时完成的功能
3.8红色虚线(实线)都是程序运行过程中执行的功能
3.9 所有的角色都可以在单独的服务器上运行,所以必须遵守相应的协议
4、运行原理:
4.0.start 启动容器,相当于在启动Dubbo的Provider
4.1.Register 启动后会去注册中心进行注册,注册所有可以提供的服务列表
4.2.Subscribe 在Consumer启动后,会去Registry获取(订阅)服务列表和Provider地址
4.3.当Provider有修改后,注册中心会把消息推送给Consumer
4.3.1.使用了观察者设计模式(又叫发布/订阅设计模式):当Provider发生改变时,注册中心会通知Consumer修改
4.4.根据获取到的Provider地址,真实调用Provider中功能
4.4.1.在Consumer方使用了代理设计模式,创建一个provider方类的一个代理对象。通过代理对象获取Provider中真实功能,起到保护Provider真实功能的作用
4.5.Consumer和Provider每隔1分钟向Monitor发送统计信息,统计信息包含:访问次数、频率等