十万个为何之为何你们都说dubbo

Dubbo是什么?

使用背景

dubbo为何这么流行, 为何你们都这么喜欢用dubbo;前端

经过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器经过能够经过dubbo同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题;java

也有这样的理解,按咱们的技术发展趋势来看:nginx

单一应用架构算法

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

垂直应用架构docker

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

分布式服务架构服务器

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

此时,用于提升业务复用及整合的分布式服务框架(RPC) 是关键。负载均衡

流动计算架构

当服务愈来愈多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增长一个调度中心基于访问压力实时管理集群容量,提升集群利用率。

此时,用于提升机器利用率的资源调度和治理中心(SOA) 是关键。  

dubbo应运而生,其致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

Dubbo定义

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,若是没有分布式的需求,实际上是不须要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,而且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
核心部分包含:
1. 远程通信: 提供对多种基于长链接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方能够平滑增长或减小机器。

Dubbo能作什么?

  1. 透明化的远程方法调用,就像调用本地方法同样调用远程方法,只需简单配置,没有任何API侵入。      
  2. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,下降成本,减小单点。
  3. 服务自动注册与发现,再也不须要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,而且可以平滑添加或删除服务提供者。

Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置便可,Dubbo基于Spring的Schema扩展进行加载。

Dubbo的架构

节点角色说明:

       Provider: 暴露服务的服务提供方。

       Consumer: 调用远程服务的服务消费方。

       Registry: 服务注册与发现的注册中心。

       Monitor: 统计服务的调用次调和调用时间的监控中心。

       Container: 服务运行容器。

调用关系说明:

服务容器负责启动,加载,运行服务提供者。

1. 服务提供者在启动时,向注册中心注册本身提供的服务。

2. 服务消费者在启动时,向注册中心订阅本身所需的服务。

3. 注册中心返回服务提供者地址列表给消费者,若是有变动,注册中心将基于长链接推送变动数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,若是调用失败,再选另外一台调用。

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

 

Dubbo的负载均衡与nginx的负载均衡

我看到有人居然拿二者作对比, 这是彻底不是一个层次的;

dubbo具有server注册,发现,路由,负载均衡的功能

注: dubbo负载均衡适用于服务层面,而nginx适用于http请求层面;

通俗的讲:

nginx是横在用户的浏览器和自家的服务器之间。
dubbo是横在自家的服务器和自家的服务器之间。

Dubbo与SpringCloud的区别

虽然二者均属于微服务架构, 但仍是有实质区别的,Dubbo只是实现了服务治理,而Spring Cloud子项目分别覆盖了微服务架构下的众多部件,而服务治理只是其中的一个方面。Dubbo提供了各类Filter,对于上述中“无”的要素,能够经过扩展Filter来完善。

从核心要素来看,Spring Cloud 更胜一筹,在开发过程当中只要整合Spring Cloud的子项目就能够顺利的完成各类组件的融合,而Dubbo缺须要经过实现各类Filter来作定制,开发成本以及技术难度略高。(通俗的讲springCloud是全家桶,dubbo则是核心功能外,其他需自行组合)

来源:

Dubbo出生于阿里系,是阿里巴巴服务化治理的核心框架,并被普遍应用于中国各互联网公司;只须要经过spring配置的方式便可完成服务化,对于应用无入侵。设计的目的仍是服务于自身的业务为主。虽然阿里内部缘由dubbo曾经一度暂停维护版本,可是框架自己的成熟度以及文档的完善程度,彻底能知足各大互联网公司的业务需求。若是咱们须要使用配置中心、分布式跟踪这些内容都须要本身去集成,这样无形中增长了使用 Dubbo 的难度。

Spring Cloud 是大名鼎鼎的 Spring 家族的产品, 专一于企业级开源框架的研发。 Spring Cloud 自从发展到如今,仍然在不断的高速发展,几乎考虑了服务治理的方方面面,开发起来很是的便利和简单。

内容摘抄至: https://baijiahao.baidu.com/s?id=1600174787011483381&wfr=spider&for=pc 

相关文章
相关标签/搜索