专栏首页波波烤鸭Dubbo01【概述】

Dubbo01【概述】

一、 概念

1、Dubbo 介绍

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

2、单体架构

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

3、SOA 架构:

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

4、RPC 远程过程调用

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

二、Dubbo 框架结构图

1.Dubbo 角色介绍

1.1registry

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

1.1.1发布

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

1.1.2订阅

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

1.2consumer

  服务的消费者, 就是服务的客户端. 消费者必须使用 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 执行流程

  1. start: 启动 Spring 容器时,自动启动 Dubbo 的 Provider
  2. register: Dubbo 的 Provider 在启动后自动会去注册中心注册内容.注册的内容包括:   1.1 Provider 的 IP   1.2 Provider 的端口.   1.3 Provider 对外提供的接口列表.哪些方法.哪些接口类   1.4 Dubbo 的版本.   1.5 访问 Provider 的协议.
  3. subscribe: 订阅.当 Consumer 启动时,自动去 Registry 获取到所已注册的服务的信息.
  4. notify: 通知.当 Provider 的信息发生变化时, 自动由 Registry 向 Consumer 推送通知.
  5. invoke: 调用. Consumer 调用 Provider 中方法   4.1 同步请求.消耗一定性能.但是必须是同步请求,因为需要接收调用方法后的结果.
  6. count:次数. 每隔 2 分钟,provoider 和 consumer 自动向 Monitor 发送访问次数.Monitor进行统计.

3.Dubbo 支持的协议

3.1Dubbo 协议(官方推荐协议)

特点

说明

优点

采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)

缺点

大文件上传时,可能出现问题(不使用 Dubbo 文件上传)

3.2RMI(Remote Method Invocation)协议

特点

说明

优点

JDK 自带的能力。可与原生 RMI 互操作,基于 TCP 协议

缺点

偶尔连接失败

3.3Hessian 协议

特点

说明

优点

可与原生 Hessian 互操作,基于 HTTP 协议

缺点

需 hessian.jar 支持,http 短连接的开销大

4.Dubbo 支持的注册中心

4.1Zookeeper(官方推荐)

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

4.2Multicast

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

4.3Redis

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

4.4Simple

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

三、 zookeeper

  在dubbo中我们选择zookeeper来搭建服务治理中心,具体的安装操作参考下文链接地址 https://dpb-bobokaoya-sm.blog.csdn.net/column/info/34287

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot核心【基本配置】

      SpringBoot项目通常都有一个名为*Application的入口类,入口类中有一个main方法,这个main方法就是一个标准的java应用的入口方法,...

    用户4919348
  • SpringBoot核心【自定义starter】

      为了加深对SpringBoot中自动装配的理解,我们自定义一个starter来实现,具体步骤如下

    用户4919348
  • SpringBoot高级【单元测试】

      单元测试是我们开发中调试的时候的重要方式,本文介绍下在SpringBoot2.x中怎么使用单元测试。

    用户4919348
  • Apache Dubbo已不再局限于Java语言

    2017 年 9 月 7 日,在沉寂了4年之后,Dubbo 悄悄的在 GitHub 发布了 2.5.4 版本。随后又迅速发布了 2.5.5、2.5.6、2.5....

    歪脖贰点零
  • 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

    Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉...

    Java技术栈
  • 惊艳,Dubbo域名已改,也不再局限于Java!!

    看这个新官网还真清新亮丽,对比之前的老官网,这次调整还真不少,我想我有必要给大家重新介绍一下 Dubbo, 结合这次的变更下面给大家总结一下。

    Java技术栈
  • Dubbo作者亲述:那些辉煌、沉寂与重生的故事

    梁飞在 2011 年开源 Dubbo 这个项目的时候,完全没有想过,Dubbo 这个名字,最后会变成一个 Apache 的商标,会成为一个在 GitHub 上有...

    纯洁的微笑
  • Apache Dubbo 的毕业之旅

    2018年2月16日,Apache Dubbo 加入 Apache 基金会孵化器。

    JAVA葵花宝典
  • 独家解读:Dubbo Ecosystem - 从微服务框架到微服务生态

    从微服务框架到微服务生态,这是微服务发展的必然趋势,也是Dubbo社区满足开发者更高效的构建微服务体系期望的使命和担当。

    heidsoft
  • 互联网公司想月薪15K挖走大牛程序员网友:欠你的吗

    @路比咯:这程序员很实在,都说到点上根本不浪费彼此时间,个人感觉是这个HR气量太小反应过激才说了这些鬼

    欧阳愠斐

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动