目录
3 SOA 架构: Service-Oriented Architecture
4 RPC 远程过程调用 : Remote Procedure Call Protocol
3.2 RMI(Remote Method Invocation)协议
一、 概念
1 Dubbo 介绍
Dubbo
是阿里巴巴公司开源的一个高性能优秀的
服务
框架,使得应用可通过高性能的
RPC
实现服务的输出和输入功能,可以和
Spring
框架无缝集成。
Dubbo
框架,是基于容器
运行的
.
。容器是
Spring
。
官方网站
: http://dubbo.apache.org/
阿里巴巴已经将
dubbo
框架捐献给了
Apache
软件基金会
2 单体架构
单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸
缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难
3 SOA 架构: Service-Oriented Architecture
面向服务的架构(
SOA
)是一个组件模型,它将应用程序拆分成不同功能单元(称为服
务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,
它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中
的服务可以以一种统一和通用的方式进行交互。
4 RPC 远程过程调用 : Remote Procedure Call Protocol
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
RPC
协议假定某些传输协议的存在,如
TCP
或
UDP
,为通信程序之间
携带信息数据。在
OSI
网络通信模型中,
RPC
跨越了传输层和应用层。
RPC
使得开发包括
网络分布式多程序在内的应用程序更加容易。
二、 Dubbo 框架结构
1 Dubbo 角色介绍
1.1 registry
注册中心
.
是用于发布和订阅服务的一个平台
.
用于替代
SOA
结构体系框架中的
ESB
服
务总线的。
1.1.1
发布
开发服务端代码完毕后
,
将服务信息发布出去
.
实现一个服务的公开
.
1.1.2
订阅
客户端程序
,
从注册中心下载服务内容 这个过程是订阅
.订阅服务的时候
,
会将发布的服务所有信息
,
一次性下载到客户端
.
客户端也可以自定义
,
修改部分服务配置信息
.
如
:
超时的时长
,
调用的重试次数等
.
1.2 consumer
服务的消费者
,
就是服务的客户端
.
消费者必须使用
Dubbo
技术开发部分代码
.
基本上都是配置文件定义
.
1.3provider
服务的提供者
,
就是服务端
服务端必须使用
Dubbo
技术开发部分代码
.
以配置文件为主
.
1.4container容器.
Dubbo
技术的服务端
(Provider),
在启动执行的时候
,
必须依赖容器才能正常启动
.
默认依赖的就是
spring
容器
.
且
Dubbo
技术不能脱离
spring
框架
.
在
2.5.3
版本的
dubbo
中
,
默认依赖的是
spring2.5
版本技术
.
可以选用
spring4.5
以下版
本
.
在
2.5.7
版本的
dubbo
中
,
默认依赖的是
spring4.3.10
版本技术
.
可以选择任意的
spring
版本
.
1.5monitor
监控中心
.
是
Dubbo
提供的一个
jar
工程
.主要功能是监控服务端
(Provider)
和消费端
(Consumer)
的使用数据的
.
如
:
服务端是什么
,
有多少接口
,
多少方法
,
调用次数
,
压力信息等
.
客户端有多少
,
调用过哪些服务端
,
调用了多少次等
.
2 Dubbo 架构图的执行流程
2.1Dubbo 执行流程
0 start:
启动
Spring
容器时
,
自动启动
Dubbo
的
Provider
1 register: Dubbo
的
Provider
在启动后自动会去注册中心注册内容
.
注册的内容包括
:
1.1 Provider
的
IP
1.2 Provider
的端口
.
1.3 Provider
对外提供的接口列表
.
哪些方法
.
哪些接口类
1.4 Dubbo
的版本
.
1.5
访问
Provider
的协议
.
2 subscribe:
订阅
.
当
Consumer
启动时
,
自动去
Registry
获取到所已注册的服务的信息
.
3 notify:
通知
.
当
Provider
的信息发生变化时
,
自动由
Registry
向
Consumer
推送通知
.
4 invoke:
调用
. Consumer
调用
Provider
中方法
4.1
同步请求
.
消耗一定性能
.
但是必须是同步请求
,
因为需要接收调用方法后的结
果
.
5 count:
次数
.
每隔
2
分钟
,provoider
和
consumer
自动向
Monitor
发送访问次数
.Monitor进行统计
.
3 Dubbo 支持的协议
3.1 Dubbo 协议(官方推荐协议)
优点:
采用
NIO
复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率、性能较好(推荐使用)
缺点:
大文件上传时
,
可能出现问题
(
不使用
Dubbo
文件上传
)
3.2 RMI(Remote Method Invocation)协议
1)
优点
:
JDK
自带的能力。可与原生
RMI
互操作,基于
TCP
协议
2)
缺点
:
偶尔连接失败
.
3.3Hessian 协议
1)
优点
:
可与原生
Hessian
互操作,基于
HTTP
协议
2)
缺点
:
需
hessian.jar
支持,
http
短连接的开销大
4 Dubbo 支持的注册中心
4.1 Zookeeper(官方推荐)
1)
优点
:
支持分布式
.
很多周边产品
.
2)
缺点
:
受限于
Zookeeper
软件的稳定性
.Zookeeper
专门分布式辅助软件
,
稳定较优
4.2 Multicast
1)
优点
:
去中心化
,
不需要单独安装软件
.
2)
缺点
:
2.2.1 Provider
和
Consumer
和
Registry
不能跨机房
(
路由
)
4.3 Redis
1)
优点
:
支持集群
,
性能高
2)
缺点
:
要求服务器时间同步
.
否则可能出现集群失败问题
.
4.4 Simple
1)
优点
:
标准
RPC
服务
.
没有兼容问题
2)
缺点
:
不支持集群
.