学习Dubbo前你要了解这些


Dubbo发音: |ˈdʌbəʊ|

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

Dubbo是阿里巴巴开发的,已经贡献给Apache,并且已经成Apache的顶级开源项目

在这里插入图片描述

Dubbo的发展背景

​ 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

在这里插入图片描述

单一应用架构

​ 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

​ 此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

​ 使用一个web容器(如tomcat),然后使用Servlet/JSP技术,最后选择一个合适数据库管理系统来存储数据(MySQL、Oracle)。

垂直应用架构

​ 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。

​ 此时,用于加速前端页面开发的Web框架(MVC)是关键。

​ 用户系统、权限系统、商品系统、订单系统、物流系统…

特点:系统独立部署,每一个系统都有完整的前后端;

问题:各个系统无法做到完全独立,公共模块无法复用,系统之间通信比较麻烦;

分布式服务架构

​ 当垂直应用越来越多,应用之间交互不可避免,这时将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

​ 此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

分布式架构的难点

  1. 各个系统如何进行远程调用
  2. 如何进行业务拆分

流动计算架构

​ 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

RPC

​ RPC(Remote Procedure Call)- 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层的网络技术协议。RPC假定某种传输协议的存在(如TCP),为通信程序携带数据;

​ 通俗的说,RPC可以让我们像调用本地方法一样调用远程计算机提供的服务;

RPC的简单原理

在这里插入图片描述

  1. 客户端以本地调用的方式调用远程服务
  2. client stub接收到调用后,将方法、参数等组装成能够进行网络传输的消息;
  3. client stub查找服务地址,找到之后,将消息发送到服务端;
  4. server stub收到消息之后,对收到的消息进行解码;
  5. server stub根据解码结果,使用反射的方式调用本地服务;
  6. 服务端执行完成之后将结果返回给Server stub;
  7. server stub将返回结果打包成消息并发送给客户端;
  8. client stub收到消息后,对结果进行解码;

总结:

  • 客户端和服务端需要有网络连接
  • 传输的消息需要序列化

Dubbo

Dubbo是什么

​ Apache Dubbo™ 是一款高性能Java RPC框架

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

Dubbo作者

在这里插入图片描述

​ 从左至右:刘超,梁飞,闾刚,陈雷,刘昊旻,李鼎

Dubbo的发展历程

​ 2008年阿里内部开始使用;
​ 2009年初,发布1.0版本;
​ 2010年初,发布2.0版本;
​ 2011年10月27日,阿里将Dubbo开源,版本号为2.0.7;
​ 2012年3月,发布2.1.0版本;
​ 2014年10月,发布2.3.11版本,之后版本停滞;
​ 2017年9月,阿里重启维护,重点升级了依赖的JDK版本,发布2.5.4/2.5.5版本;
​ 2017年10月,发布2.5.6版本;
​ 2017年11月,发布2.5.7版本,后期集成了SpringBoot;
​ 2014年10月的时候,当当网Fork了Dubbo源代码,在此基础上增加了HTTP REST协议,发布版本号2.8.0,名字叫DubboX;
​ 网易考拉在Dubbo基础上开发了DubboK;

Dubbo架构

. 架构中的角色

Provider:服务提供者
Consumer:服务消费者
Registry:服务注册和发现的中心
Monitor:监控中心,用于统计服务调用情况
Container:Dubbo容器

在这里插入图片描述

. 调用关系

0、容器负责启动、加载、运行服务提供者、消费者;

1、服务提供者在启动时,向注册中心注册自己提供的服务;

2、服务消费者在启动时,向注册中心订阅自己需要的服务;

3、注册中心返回服务提供者的地址列表给消费者;如果有服务变更(服务的上线或下线),注册中心会基于长连接的方式推送变更给消费者;

4、服务消费者从地址列表中,基于软件负载均衡算法,选择一个服务提供者进行调用,如果调用失败,可以重试其它提供者;

5、服务消费者和提供者,在内存中累计调用时间和调用次数,每分钟向监控中心发送一次统计数据;
4、服务消费者从地址列表中,基于软件负载均衡算法,选择一个服务提供者进行调用,如果调用失败,可以重试其它提供者;

5、服务消费者和提供者,在内存中累计调用时间和调用次数,每分钟向监控中心发送一次统计数据;

猜你喜欢

转载自blog.csdn.net/qq_29917503/article/details/131814119