Dubbo基础介绍

Dubbo是一个常用的分布式服务框架,

  • 它致力于提供高性能、透明化的RPC远程服务方案。
  • 学习Dubbo有助于提高企业级应用的开发效率,以及可通过简单的配置就可以实现负载均衡提高服务的效率

67662f605f116ac8728f0886c9cf20593e8.jpg

单一应用阶段(ORM为主):

  • 对于访问流量小的网站或系统,只需要单一的应用架构即可,也就是只需要一个应用就能将所有的功能都聚集到一起,
  • 减少部署的成本,这个时候,用于简化增删改查工作量的数据库访问框架(ORM对象关系映射框架,如Hibernate、MyBatis),会提高开发的效率。

垂直应用架构(MVC为主):

  • 当访问量稍微增大以后,单一的应用架构就不能满足系统的日常需求,
  • 我们需要将系统之间耦合度较低的模块拆分出来,来减少代码的冗余,提高效率。
  • 此时,用于提升前端页面访问效率的Web框架应运而生(如Struts、SpringMVC)
  • 与之前的ORM框架结合起来,共同形成了MVC架构的Web应用体系。

分布式服务架构(RPC为主):

  • 当应用越来越多,应用和应用之间不断的交互,
  • 此时就需要将核心的业务抽取出来,提供独立的服务,形成稳定的服务中心,使前端可以适应多变的市场需求。
  • 此时,使用分布式服务框架是一个关键,而我们的Dubbo就是一个分布式服务框架

流动计算架构(SOA为主):

  • 当提供的服务越来越多,我们就需要一个中心,来对不同服务的负载进行评估,实时的调配资源,提高集群的应用率。
  • 此时,资源的调度和治理中心就是关键。而Duboo支持了完整的RPC调用的支持,以及服务治理中心相关的功能

Dubbo介绍

  • Dubbo是一个分布式服务框架,致力于提高性能透明化的RPC远程服务调用方案,以及SOA服务治理方案
  • 与Dubbo同类型的框架还有Apache的Thrift、Hessian,Java原生的RMIWebService,以及淘宝的HSF,京东的JSF。
    • Apache的Thrift对多语言的支持比较好,但是负载均衡和SOA的治理这一块比较缺乏。
    • 而Hessian和WebService都是传统的HTTP调用框架,由于HTTP调用时使用的多是短连接形式,大部分资源都被浪费在服务器的IO上。
    • Java的RMI只支持Java语言,而且性能比较一般
    • 淘宝的HSF和京东的JSF都没有开源
    • 那么在开源框架中,Dubbo是一个比较优秀的分布式服务框架
  • Dubbo的线上版本比较稳定,社区文档多,运维方案比较成熟(admin控制台和monte监控平台)。
  • Duboo支持拓展,目前,国内有许多家大型生产型应用互联网公司使用了Dubbo框架

Dubbo涉及的知识

  • 远程调用:RMI、hassion、webService、thrift
    • Dubbo都会在底层真正调用的时候,使用这些框架来做远程调用。
  • 通信交互:HTTP、mina、netty
    • mina与netty都是NIO的框架。
  • 序列化:hessian2、java、json
    • Dubbo默认使用hessian2
  • 容器:jetty、spring
    • Dubbo在容器方面支持像jetty这样的轻量级容器,或者spring这样的IOC容器。
  • 多线程:异步,线程池
    • Dubbo涉及了异步的调用和线程池的管理。
  • 负载均衡:zookeeper、redis
    • Dubbo大部分使用zookeeper来实现负载均衡。

使用Dubbo可以做什么

  • 作为对内提供服务应用的容器
    • 开发很多业务处理的应用,然后使用Duboo这种容器来提供服务。
  • 拆分复杂Web应用到服务器容器
    • 把大量的逻辑放置在服务提供的应用之中,使Web应用调用服务容器。
  • 应用负载均衡协调
    • 使用Duboo来实现软件的负载均衡和协调,这样不仅简化了配置,还大大简化了服务器的利用率。
  • 应用服务治理
    • 除了负载均衡,还可以做服务的降级、调用统计以及依赖关系的计算等等。
    • 使用这些功能我们可以很清晰了解一个应用的依赖关系,以及不同应用调用的负载情况,
    • 我们根据这些负载,来分配和计算,以增加对应的机器。

996f832dcf904db2253eee0774dac549a90.jpg

Dubbo架构

aae0f688616792a513516090c07dd0e2233.jpg

Provider: 暴露服务的服务提供方。 
Consumer: 调用远程服务的服务消费方。 
Registry: 服务注册与发现的注册中心。 
Monitor: 统计服务的调用次数和调用时间的监控中心。

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

Dubbo注册中心

  • 对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀; 
  • 对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。 
  • 而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,有需要消费服务。
  • 通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。
  • 服务注册中心可以通过特定协议来完成服务对外的统一。

Dubbo提供的注册中心有如下几种类型可供选择:

  • Multicast注册中心
  • Zookeeper注册中心
  • Redis注册中心
  • Simple注册中心

Dubbo优缺点

优点:

  1. 透明化的远程方法调用 
    • 像调用本地方法一样调用远程方法;
    • 只需简单配置,没有任何API侵入。
  2. 软负载均衡及容错机制 
    • 可在内网替代nginx lvs等硬件负载均衡器。
  3. 服务注册中心自动注册 & 配置管理 
    • 不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip。 
    • 使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群。
  4. 服务接口监控与治理 
    • Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,
    • 针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。

缺点:

  • 只支持JAVA语言

 

 

转载于:https://my.oschina.net/u/3847203/blog/2876498

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值