Dubbo
Table of Contents

Dubbo

Dubbo简介

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

什么是RPC

最传统的,比如说我们现在需要调用一个http的请求,在这期间,我们需要做一系列的工作,如设置请求头参数,填充请求参数,发起远程链接,拿到远程结果后,对结果进行封装处理等等....这个过程比较复杂,对于企业内部越来越复杂的业务来说,几乎是灾难性的。

RPC(Remote Procedure Call),即远程过程调用,RPC框架,即远程调用框架,它封装了底层通讯的很多细节,目的是为了调用远程服务,就像调用本地方法一样简单。事实上,也的确是这样。

背景

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

架构演进

单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

流动计算架构

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

简要模块图

Dubbo功能

Provider

服务提供者

Consumer

服务消费者

Registry

服务注册与发现中心

Minitor

服务监控中心

调用顺序

1.注册者上线,(Zookeeper启动)
2.服务提供者上线,向注册中心注册自己提供的服务
3.服务消费者上线,向注册中心订阅自己需要的服务
4.注册中心返回服务提供者的列表给消费者,如果提供者有变更,注册中心会基于长连接推送变更数据到消费者
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

架构图

架构图

简单使用