Dubbo之SOA,RPC和Dubbo的理解
文章目录
1 SOA的理解
1.1 基本理解
SOA
英文名称(Service Oriented Ambiguity
),中文名称:面向服务架构
,有一个专门提供服务单元,其他所有单元都调用这个服务.SOA
定位:如何设计项目,让开发时更有效率.,SOA
是一种思想
1.2 没用SOA
之前项目架构设计:在公司项目不允许所有项目都访问数据库,开发时,数据库访问层代码可能出现冗余
1.3 使用SOA
使用SOA
架构:专门访问数据库服务(项目),开发时可以实现,数据访问控制和代码复用
实现SOA
架构时,常用服务:
-
Dubbo
做为服务. -
WebService
做为服务. -
Dubbox
做为服务. - 服务方就是
web
项目,调用web
项目的控制器,使用HttpClient
可以调用其他项目的控制器.
2 RPC
RPC
英文名称(Remote Procedure Call Protocol
),中文名称:远程过程调用协议RPC
解析:客户端(A
)通过互联网调用远程服务器,不知道远程服务器具体实现,只知道远程服务器提供了什么功能.RPC
最大优点:数据安全性.
3 Dubbo
3.1 dubbo的基本理解
Dubbo
:一个分布式、高性能、透明化的RPC
服务框架
作用:提供服务自动注册
、自动发现
等高效服务治理方案
3.2 Dubbo架构图
架构内角色说明:
-
Provider
:提供者,服务发布方. -
Consumer
:消费者, 调用服务方 -
Container
:Dubbo
容器.依赖于Spring
容器. -
Registry
: 注册中心.当Container
启动时把所有可以提供的服务列表上Registry
中进行注册,作用:告诉Consumer
提供了什么服务和服务方在哪里 -
Monitor
:监听器 - 虚线都是异步访问,实线都是同步访问
- 蓝色虚线:在启动时完成的功能
- 红色虚线(实线)都是程序运行过程中执行的功能
- 所有的角色都是可以在单独的服务器上,所以必须遵守特定的协议.
3.3 运行原理
- 启动容器,相当于在启动
Dubbo
的Provider
- 启动后会去注册中心进行注册,注册所有可以提供的服务列表
- 在
Consumer
启动后会去Registry
中获取服务列表和Provider
的地址,进行订阅. - 当
Provider
有修改后,注册中心会把消息推送给·Consummer· -
- 使用了观察者设计模式(又叫
发布/订阅
设计模式)
- 使用了观察者设计模式(又叫
- 根据获取到的
Provider
地址,真实调用Provider
中功能. -
- 在
Consumer
方使用了代理设计模式
,创建一个Provider
方类的一个代理对象,通过代理对象获取Provider
中真实功能,起到保护Provider
真实功能的作用.
- 在
-
Consumer
和Provider
每隔1分钟
向Monitor
发送统计信息,统计信息包含,访问次数,频率等.
3.4 Dubbo支持的注册中心
3.4.1 Zookeeper
优点:支持网络集群
缺点:稳定性受限于Zookeeper
3.4.2 Redis
优点:性能高.
缺点:对服务器环境要求较高.
3.4.3 Multicast
优点:面中心化,不需要额外安装软件.
缺点:建议同机房(局域网)内使用
3.4.4 Simple
适用于测试环境.不支持集群.