Dubbo概念和基本框架结构

简介: Dubbo概念和基本框架结构

一、 概念

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 角色介绍

20200321111430219.png

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 架构图的执行流程

2020032111145766.png

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) 缺点 :

不支持集群 .


目录
相关文章
|
10月前
|
负载均衡 Dubbo Java
Dubbo 3.x:探索阿里巴巴的开源RPC框架新技术
随着微服务架构的兴起,远程过程调用(RPC)框架成为了关键组件。Dubbo,作为阿里巴巴的开源RPC框架,已经演进到了3.x版本,带来了许多新特性和技术改进。本文将探讨Dubbo 3.x中的一些最新技术,包括服务注册与发现、负载均衡、服务治理等,并通过代码示例展示其使用方式。
509 9
|
10月前
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
199 0
|
10月前
|
监控 负载均衡 Dubbo
Dubbo 框架揭秘:分布式架构的精髓与魔法【一】
Dubbo 框架揭秘:分布式架构的精髓与魔法【一】
259 0
|
10月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
10月前
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
5月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
6月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
465 17
微服务框架Dubbo环境部署实战
|
6月前
|
负载均衡 Dubbo NoSQL
Dubbo框架的1个核心设计点
Java领域要说让我最服气的RPC框架当属Dubbo,原因有许多,但是最吸引我的还是它把远程调用这个事情设计得很有艺术。
Dubbo框架的1个核心设计点
|
6月前
|
负载均衡 监控 Dubbo
分布式框架-dubbo
分布式框架-dubbo
|
6月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架