Dubbo框架(一)

1:简介

Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题

这是Dubbo官网的介绍,下面是我对这dubbo的理解

首先介绍下什么是RPC:

常见的单体架构:请求进来———》先到控制层————》控制层掉业务层(对外提供一个个完整的功能)————》业务层掉数据持久层,这些都是在一套系统里面

分布式服务架构下:控制层是一个单独的应用工程(A系统),业务层也是个单独的应用(B系统)

用户请求进到控制层,A系统去掉B系统里面的方法这个过程就叫RPC:远程过程方法调用

dubbo就是一个分布式服务框架实现了这个过程,实现这个过程的还框架有很多:

Motan(新浪微博开源的一个Java 框架)rpcx(Go语言生态圈的Dubbo, 比Dubbo更轻量)gRPC(Google开发的高性能、通用的开源RPC框架)thrift(Apache的一个跨语言的高性能的服务框架)

总结来说:

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

对了dubbo还可以和 Spring框架无缝集成

官网:

dubbo.apache.org

2:Dubbo高性能的原因

dubbo作为一个PRPC框架,主要干的就是远程过程(方法)调用,这个过程中最关键也是最耗时的两个方面:序列化和网络通信

序列化:

我们都知道本地对象要在网络上传输,必须要实现Serializable接口(序列化),序列化的方案有很多:xml、json、二进制流等等,其中效率最高的就是二进制流(因为计算机就是二进制的01010),dubbo采用的就是效率最高的二进制

网络通信:

不同于HTTP(SpringCloud采用的就是HTTP协议)需要七步走(三次握手和四次挥手),dubbo采用Socket通信(只需要知道ip,端口就可以建立长连接)一步到位,提升了通信效率,建立长连接(不需要反复连接)直接传输数据

3:Dubbo框架结构

Git Hub上的结构图:

Dubbo框架(一)_第1张图片

通过这张结构图可以很好的理解dubb的框架结构:

从0到5梳理一遍:

0:从0开始,这个容器(Container)指的就是spring容器(前面说过Dubbo可以和 Spring框架无缝集成),当Spring容器启动加载的时候初始化服务的提供者(Provider),这个提供者就是业务层里的方法

1:将这个方法注册(register)到注册中心(注册过去的就是一个个服务的URL地址)

2:注册完成后,消费者(Consumer)订阅(subscribe)组测中心里提供者提供的服务,这个消费者可以理解为控制层(就是控制层调用业务层)

3:同时注册中心异步通知(notify)消费者消费提供者提供的服务

4:消费者拿到订阅的地址去调用(invoke)提供者提供的具体的方法(拿到URL去调用)

5:在容器初始化和消费者消费的时候都会异步通知监控中心记录(记录提供者提供哪些服务,消费者消费哪些服务,谁消费,谁提供)

对于我们使用dubbo框架,只需要关注上面的框架即可,监控中心由dubbo提供好了,不需要开发者去实现

Dubbo框架(一)_第2张图片

你可能感兴趣的:(系统架构,dubbo,java,系统架构)