Dubbo技术

简介: Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo 框架,是基于容器运行的.。容器是 Spring。

@TOC

一、概念

Dubbo介绍(作用/是什么?)

Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo 框架,是基于容器运行的.。容器是 Spring。
官方网站 : http://dubbo.apache.org/
阿里巴巴已经将 dubbo 框架捐献给了 Apache 软件基金会
RPC(Remote Procedure Call Protocol)——远程过程调用协议

二、Dubbo框架结构(有什么)

常见架构模式

单体架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合 , 在一个应用中的架构方式。
特点 : 打包成一个独立的单元 jar包或者 war包 ;会以进程的方式运行
优点:项目易于管理、部署简单。
缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难

SOA架构

Service-Oriented Architecture :面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的, 它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中 的服务可以以一种统一和通用的方式进行交互。

补充:RPC( 远程过程调用 )

Remote Procedure Call Protocol :远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间 携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。

Dubbo架构

角色介绍

在这里插入图片描述

registry

注册中心. 是用于发布和订阅服务的一个平台.用于替代SOA结构体系框架中的ESB服务总线的。

发布

开发服务端代码完毕后, 将服务信息发布出去. 实现一个服务的公开.

订阅

客户端程序,从注册中心下载服务内容,这个过程是订阅. 订阅服务的时候, 会将发布的服务所有信息,一次性下载到客户端. 客户端也可以自定义, 修改部分服务配置信息. 如: 超时的时长, 调用的重试次数等.

consumer

服务的消费者, 就是服务的客户端.
消费者必须使用 Dubbo 技术开发部分代码. 基本上都是配置文件定义.

provider

服务的提供者, 就是服务端.
服务端必须使用 Dubbo 技术开发部分代码. 以配置文件为主.

container

容器. Dubbo 技术的服务端(Provider), 在启动执行的时候, 必须依赖容器才能正常启动. 默认依赖的就是 spring 容器. 且 Dubbo 技术不能脱离 spring 框架.

在 2.5.3 版本的 dubbo 中, 默认依赖的是 spring2.5 版本技术. 可以选用 spring4.5 以下版本.
在 2.5.7 版本的 dubbo 中, 默认依赖的是 spring4.3.10 版本技术. 可以选择任意的 spring 版本.

monitor

监控中心. 是 Dubbo 提供的一个 jar 工程.
主要功能是监控服务端(Provider)和消费端(Consumer)的使用数据的. 如: 服务端是什么, 有多少接口,多少方法, 调用次数, 压力信息等. 客户端有多少, 调用过哪些服务端, 调用了多少次等.

Dobbo架构图的执行流程

在这里插入图片描述

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 进行统计.

三、Dubbo支持的协议

Dubbo协议(官方推荐协议)

优点: 采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率, 性能较好(推荐使用)
缺点: 大文件上传时,可能出现问题(不使用 Dubbo 文件上传)

RMI协议

优点: JDK 自带的能力。可与原生 RMI 互操作,基于 TCP 协议
缺点: 偶尔连接失败.

Hessian协议

优点: 可与原生 Hessian 互操作,基于 HTTP 协议
缺点: 需 hessian.jar 支持,http 短连接的开销大

四、Dubbo支持的注册中心

Zookeeper(官方推荐)

优点: 支持分布式.很多周边产品.
缺点: 受限于 Zookeeper 软件的稳定性.Zookeeper 专门分布式辅助软件,稳定较优

Multcast

优点: 去中心化,不需要单独安装软件.
缺点: Provider 和 Consumer 和 Registry 不能跨机房(路由)

Redis

优点: 支持集群,性能高
缺点: 要求服务器时间同步.否则可能出现集群失败问题.

Simple

优点: 标准 RPC 服务.没有兼容问题
缺点: 不支持集群.

五、基于dubbo的相关案例

服务相关概念

在这里插入图片描述

详细代码

见另一篇博文
https://blog.csdn.net/qq_43371556/article/details/96859786

相关文章
|
2月前
|
运维 负载均衡 Dubbo
分布式技术之dubbo
分布式技术之dubbo
45 0
分布式技术之dubbo
|
2月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
51 1
|
8月前
|
负载均衡 Dubbo 应用服务中间件
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
63 0
|
8月前
|
Dubbo Java 应用服务中间件
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
55 0
|
2月前
|
XML Dubbo Java
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(二)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
39 2
|
2月前
|
Dubbo Cloud Native Java
【Dubbo3技术专题】总体技术体系介绍及技术指南(目录)
【Dubbo3技术专题】总体技术体系介绍及技术指南(目录)
29 2
|
2月前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
68 1
|
2月前
|
XML 监控 Dubbo
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)(一)
【Dubbo3技术专题】回顾Dubbo2.x的技术原理和功能实现及源码分析(温故而知新)
78 1
|
2月前
|
Kubernetes Dubbo Cloud Native
【Dubbo3技术专题】总体技术体系介绍及技术指南(序章)
【Dubbo3技术专题】总体技术体系介绍及技术指南(序章)
28 1
|
2月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
106 0