《深入理解 Spring Cloud 与微服务构建》第四章 Dubbo

《深入理解 Spring Cloud 与微服务构建》第四章 Dubbo

一、Dubbo 简介

Dubbo 是阿里巴巴开源的一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。Dubbo 广泛应用于阿里巴巴的各大站点,有很多互联网公司也在使用这个框架,它包含如下核心内容:

  • RPC 远程调用:封装了长连接 NIO 框架,如 Netty 和 Mina 等。使用的是多线程模式
  • 集群容错:提供了基于接口方法的远程调用的功能,并实现了负载均衡策略、失败容错等功能
  • 服务发现:集成了 Apache 的 Zookeeper 组件,用于服务的注册和发现

Dubbo 架构的流程如下:

  1. 服务提供者向服务中心注册服务
  2. 服务消费者订阅服务
  3. 服务消费者发现服务
  4. 服务消费者远程调度服务提供者进行服务消费,在调度过程中,提供了负载均衡策略和失败容错的功能
  5. 服务消费者和提供者在内存中记录服务的调用次数和调用时间,并定时每分钟发送一次统计数据到监控中心

Dubbo 是一个非常优秀的服务治理框架,在国内互联网公司应用广泛,它具有以下特性:

  • 连通性:注册中心负责服务的注册;监控中心负责收集调用次数、调用时间;注册中心、服务提供者、服务消费者为长连接
  • 健壮性:监控中心宕机不影响其它服务的使用;注册中心集群,任意一个实例宕机自动切换到另一个注册中心实例;服务实例集群,任意一个实例宕机,自动切换到另一个可用的实例
  • 伸缩性:可以动态增减注册中心和服务的实例数量
  • 升级性:服务集群升级,不会对现有架构造成压力

二、与 Spring Cloud 对比

微服务关注点Spring CloudDubbo
配置管理Config
服务发现Eureka、Consul、ZookeeperZookeeper
负载均衡Ribbon自带
网关Zuul
分布式追踪Spring Cloud Sleuth
容错Hystrix不完善
通信方式HTTP、MessageRPC
安全模块Spring Cloud Security

项目模块
Spring Cloud 拥有很多的项目模块,包含了微服务系统的方方面面。Dubbo 是一个非常优秀的服务治理和服务调用框架,但缺少很多功能模块,例如网关、链路追踪等。在项目模块上,Spring Cloud 更具优势

更新频率
Spring Cloud 的更新速度非常快,Camden.SR5 版本发布于 2017 年 2 月,Camden.SR6 版本发布于 2017 年 3 月,Dalston 版本发布于 2017 年 4 月,Finchley 版本发布于 2018 年 6 月,Greenwich 版本发布于 2019 年 2 月,基本每年发布 1 ~ 2 次大版本,每月会发布一次版本的迭代。从 GitHub 的代码仓库来看,Spring Cloud 几乎每天都有更新。阿里巴巴于 2011 年 10 月开源了 Dubbo,开源后的 Dubbo 发展迅速,大概每 2 ~ 3 个月有一次版本更新。然而,从 2013 年 3 月开始,Dubbo 暂停了版本更新,并只在 2014 年 10 月发布了一个小版本,修复了一个 bug,之后长期处于版本停止更新的状态。直到 2017 年 9 月,阿里巴巴中间件部门重新组建了 Dubbo 团队,把 Dubbo 列为重点开源项目,并在 2017 年 9 ~ 11 月期间,一直保持每月一次版本更新的频率

学习成本
从学习成本上考虑,Dubbo 的版本趋于稳定,文档完善,可以即学即用,没有太大难度。Spring Cloud 基于 Spring Boot 开发,需要开发者先学会 Spring Boot。另外,Spring Cloud 版本迭代快,需要快速跟进学习。Spring Cloud 文档大多是英文的,要求学习者有一定的英文阅读能力。此外,Spring Cloud 文档很多,不容易快速找到相应的文档

开发风格
从开发风格上来讲,Dubbo 更倾向于 Spring XML 的配置方式,Dubbo 官方也推荐这种方式。Spring Cloud 基于 Spring Boot,Spring Boot 采用的是基于注解和 JavaBean 配置方式的敏捷开发。从开发速度上讲,Spring Cloud 具有更高的开发和部署速度

通信方式
Spring Cloud 的通信方式大多数是基于 HTTP Restful 风格的,服务与服务之间完全无关、无耦合。由于采用的是 HTTP Rest,因此服务无关乎语言和平台,只需要提供相应 API 接口,就可以相互调用。Dubbo 的通信方式基于远程调用,对接口、平台和语言有强依赖性。如果需要实现跨平台调用服务,需要写额外的中间件,这也是 Dubbox(支持 HTTP 协议)存在的意义

总结
Dubbo 和 Spring Cloud 各自拥有优缺点。Dubbo 更容易上手,并且广泛使用于阿里巴巴的各大站点,经历了 “双11” 期间高并发、大流量的检验,Dubbo 框架非常成熟和稳定。Spring Cloud 服务框架严格遵守 Martin Fowler 提出的微服务规范,社区异常活跃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

313YPHU3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值