Dubbo简介

那年仲夏 提交于 2019-12-29 22:54:57

Dubbo简介

Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

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

官方网站 : http://dubbo.apache.org/

阿里巴巴已经将dubbo框架捐献给了Apache软件基金会

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 admin

监控中心. 是Dubbo提供的一个jar工程.

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

执行流程

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

协议

Dubbo协议(官方推荐协议)

优点:

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

缺点:

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

RMI(Remote Method Invocation)协议

优点:

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

缺点:

偶尔连接失败.

Hessian协议

优点:

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

缺点:

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

注册中心

Zookeeper(官方推荐)

优点:

支持分布式.很多周边产品.

缺点:

受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优

Multicast

优点:

去中心化,不需要单独安装软件.

缺点:

2.2.1 Provider和Consumer和Registry不能跨机房(路由)

Redis

优点:

支持集群,性能高

缺点:

要求服务器时间同步.否则可能出现集群失败问题.

Simple

优点:

标准RPC服务.没有兼容问题

缺点:

不支持集群.

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!