1.Dubbo简介:
- Dubbo是一个分布式,高性能,透明化的RPC服务框架(RPC:远程过程调用协议)
- SOA:
-
英文名称(Service Oriented Architecture)
-
中文名称:面向服务架构
- 有一个专门提供服务单元.
- 其他所有单元都调用这个服务.
-
SOA 定位:
- 如何设计项目,让开发时更有效率
- SOA 是一种设计思想
-
之前的项目架构设计
- 在公司项目不允许所有项目都访问数据库.
- 开发时,数据库访问层代码可能出现冗余
下图为之前的项目架构设计
-
使用 SOA 架构
- 专门访问数据库 服务( 项目).
- 开发时可以实现,数据访问控制和代码复用.
下图为SOA架构
-
实现 SOA 架构时,常用服务.
- Dubbo 做为服务.
- WebService 做为服务.
- Dubbox 做为服务.
- 服务方就是 web 项目,调用 web 项目的控制器.
- 使用 HttpClient 可以调用其他项目的控制器.
-
- RPC:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
-
英文名称( Remote Procedure Call Protocol )
-
中文名称:远程过程调用协议
-
RPC 解析:客户端(A)通过互联网调用远程服务器,不知道远程服务器具体实现,只知道远程服务器提供了什么功能.
RPC调用服务
-
RPC 最大优点:
- 数据安全性.
-
2.Dubbo的作用:三大核心能力:
1. 面向接口的远程方法调用
2. 智能容错和负载均衡
3. 服务自动注册和发现
3.Dubbo架构图:
-
Provider:提供者,服务的发布方
-
Container:Dubbo容器,依赖于Spring容器
-
Consumer:消费者,调用服务方
-
Registry:注册中心,当Container(容器)启动时,将所有可以提供的服务列表上Registry中进行注册
4.1 作用:告诉Consumer提供了哪些服务,服务方在哪里
-
Monitor:监听器
-
深蓝色虚线:在启动时完成的功能
-
浅蓝色虚线与实线:在程序运行过程中执行的功能
-
虚线代表异步访问,实线代表同步访问
注意:图中可知只有服务调用时才是同步访问,同时也是最耗时的地方,必须是同步
-
所有的角色都可以在单独的服务器上,所以必须遵守特定的协议
4.Dubbo的运行原理:
英文单词:
start:开始 register:注册
subscribe:订阅 notify:告知
invoke:调用 count:统计
-
启动容器,相当于在启动Dubbo的Provider
-
启动后会去注册中心进行服务注册,注册所有可以提供的服务
-
在Consumer启动后会Registry获取获取服务列表和Provider的地址,进行订阅
-
当Provider有修改后,注册中心会把消息推送给Consumer
此处使用了观察者设计模式(又叫 发布/订阅模式)
-
Consumer根据获取到的Provider地址,真实调用Provider的功能
在Consumer方使用了代理设计模式,创建一个Provider方类的一个代理对象,通过代理对象获取Provider中的真实功能,作用是保护了Provider方的真实功能
-
Consumer和Provider 每隔一定的时间向Monitor发送统计信息,统计信息包含,访问系数,频率等
5.Dubbo支持的注册中心
-
Zookeeper(推荐)
-
优点:支持网络集群
-
缺点:稳定性受限于 Zookeeper
-
-
Redis
-
优点:性能高.
-
缺点:对服务器环境要求较高.
-
-
Multicast
-
优点:面中心化,不需要额外安装软件.
-
缺点:建议同机房(局域网)内使用
-
-
Simple
- 适用于测试环境.不支持集群
6.Zookeeper 简介
-
Zookeeper 分布式协调组件.
- 本质一个软件.辅助分布式的搭建和管理
-
Zookeeper 常用功能
-
发布订阅功能 .把 zookeeper 当作注册中心原因.
-
分布式/集群管理功能.
-
分布式锁
-
-
使用 java 语言编写的.