Dubbo零基础学习指南

Dubbo

  1. 为什么出现Dubbo
    1. 随着现在互联网行业的发展,越来越多的框架、中间件、容器等开源技术不断地涌现,更好地来服务于业务,解决实现业务的问题。
    2. 随着业务的发展、用户量的增长,系统数量增多,调用依赖关系也变得复杂,为了确保系统高可用、高并发的要求,系统的架构也从单体时代慢慢迁移至服务SOA时代,根据不同服务对系统资源的要求不同,我们可以更合理的配置系统资源,使系统资源利用率最大化。
  2. 系统服务的演变过程
    1. 单一应用框架(ORM)
      • 将所有功能部署在一起,减少部署节点和成本。
    2. 垂直应用架构(MVC)
      • 应用拆成互不相干的几个应用,以提升效率
    3. 分布式应用架构
      • 核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求
    4. 流动计算架构
      • 用于提高机器利用率的资源调度和治理中心(SOA) 是关键
  3. 电商系统的演变可以看出应用系统架构演变的过程:
  4. Dubbo是什么
    1. 一款分布式服务框架
    2. 高性能和透明化的RPC远程服务调用方案
    3. SOA服务治理方案
  5. Dubbo的架构
    1. 上图的流程:
      • 0.服务容器负责启动,加载,运行服务提供者。
      • 1.服务提供者在启动时,向注册中心注册自己提供的服务。
      • 2.服务消费者在启动时,向注册中心订阅自己所需的服务。
      • 3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
      • 4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
      • 5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
  6. Dubbo注册中心
    1. 注册服务:
      • 对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;
    2. 消息订阅
      • 对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。
    3. 两个身份都有:
      • 对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,又需要消费服务。
  7. 注册中心的目的:
    1. 通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。
  8. Dubbo提供的注册中心有几种类型:
    1. Multicast注册中心
    2. Zookeeper注册中心
    3. Redis注册中心
    4. Simple注册中心
  9. Dubbo优点:
    1. 透明化的远程方法调用
      • 像调用本地方法一样调用远程方法;只需简单配置,没有任何API侵入
    2. 软负载均衡及容错机制
      • 可在内网替代nginx lvs等硬件负载均衡器
    3. 服务注册中心自动注册 & 配置管理
      • 不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip
      • 使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群
    4. 服务接口监控与治理
      • Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理
  10. Dubooq缺点
    1. 只支持Java语言
  11. 使用Dubbo步骤
    1. 安装Zookeeper启动;
    2. 创建Maven项目,构建:Dubbo+Zookeeper+Spring
    3. 安装Dubbo-admin,监控
  12. Dubbo注册中心为什么采用Zookeeper?
    1. Zookeeper是一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心。
    2. Dubbo能与Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。
  13. 安装Zookeeper
    1. 在Zookeeper官网中下载Zookeeper发行包并解压:
    2. 复制Zookeeper配置文件
      • 将Zookeeper安装目录的conf子文件夹中的zoo_sample.cfg复制一份并重命名为zoo.cfg
  14. 运行Zookeeper
    1. 执行Zookeeper安装(解压)目录中bin子文件夹的zkServer.cmd启动Zookeeper
  15. 利用Maven创建Dubbo项目,主要分为以下组成部分:
    1. 项目Dubbo-consumer : 调用远程服务;
    2. 项目Dubbo-provider : 提供远程服务。
  16. Provider和Consumer需要提供相同的业务服务接口
  17. 为项目编辑pom文档
    1. 服务的提供者和消费者需要依赖的库相同,主要有Netty依赖、Zookeeper依赖、ZookeeperClient依赖、Dubbo依赖、Spring依赖等
  18. Provider中需要提供业务接口的实现:

  19. Provider在Spring容器中声明Dubbo的服务:
  20. Provider启动远程服务

  21. Consumer在Spring容器中声明需要调用的服务:

  22. Consumer调用远程服务:
  23. Dubbo管理控制台功能:
    1. 路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡。
  24. Dubbo控制台的使用
    1. 下载dubbo-admin,将dubbo-admin的war包发布到tomcat中,再运行tomcat即可,缺省用户名和密码均为root:
  25. 总结Dubbo
    1. Dubbo是一款分布式服务框架,一个高性能和透明化的RPC远程服务调用方案,一个SOA服务治理方案。
    2. Dubbo每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章