天天看点

微服务架构——Spring Cloud与Dubbo之争

      微服务架构是互联网的"香饽饽", 通过微服务架构, 将一个复杂大型的项目分为一个或多个微服务,实现各个服务之间的松耦合. 让开发人员在开发过程中只需关注更少的东西, 每个服务代表一个功能点.

      但是针对于微服务实现, 有著名阿里阿巴的Dubbo, 以及Spring Cloud, 该如何进行选择呢? 让我们来看以下几个方面来对比两者之间的区别吧!

基本背景

  • Dubbo, 是阿里巴巴服务化治理的核心框架, 并被广泛应用于阿里巴巴集团的各个成员站点
  • Spring Cloud, 它是Spring Source的产物, Spring社区的强大背景可以说是Java企业界最有影响力的组织了, 除了Spring Source之外, 还有Pivotal和Netfix是其强大的后盾与技术输出. 其中Netflix开源的整套微服务架构套件是Spring Cloud的核心.
  • 如果拿Dubbo与Netflix套件做对比, 前者在国内影响力较大, 后者在国外影响力较大, 在背景上可以打个平手. 但是若要与Spring Cloud做对比, 由于Spring Source的加入, Spring Cloud在背景上略胜一筹, 但是在高并发上dubbo曾经在阿里的运营中实际承载过过亿用户同时在线的, 而且Netflix并没有实际的上线应用中体现过.

基本组件

服务名称 Dubbo Spring Cloud
服务注册中心 Zookeeper Spring Cloud Netflix Eureka
服务调用方式 RPC REST API
服务网关 Spring Cloud Netflix Zuul
断路器 Spring Cloud Netflix Hystrix
分布式配置 Spring Cloud Config
服务跟踪 服务跟踪后台 Spring Cloud Sleuth
消息总线 Spring Cloud Bus
数据流 Spring Cloud Stream
批量任务 Spring Cloud Task Batch

高可用性

服务名称 Dubbo Spring Cloud
负载均衡 只有后置服务自带负载均衡 Spring Cloud Ribbon
反向代理 没有(须第三方支持) Spring Cloud Netflix Zuul
隔离 没有(须第三方支持) SprinSpring Cloud Netflix Hystrix
限流 没有(须第三方支持) Spring Cloud Netflix Hystrix
降级 没有(须第三方支持) Spring Cloud Netflix Hystrix
超时与重试 NETTY SpringCloud Fegin
回滚 TCC

高并发性

服务名称 Dubbo Spring Cloud
应用缓存 没有(须第三方支持) spring boot支持集成
HTTP缓存 没有(须第三方支持) spring boot支持集成
多级缓存 没有(须第三方支持) spring boot支持集成
池化 没有(须第三方支持),阿里有自己的连接池 spring boot支持集成
异步并发 提供RPC高性能分布式架构 Spring Cloud Stream
扩容 1、支持docker 2、借助于数据库扩容技术 1、无缝支持docker 2、借助于数据库扩容技术
队列 无,借助于第三方消息无自带监听服务 Spring Cloud Stream

维护学习成本

学习项 Dubbo Spring Cloud
项目改造 需要集成dubbo技术 需将现有项目改为springboot, 再无缝集成
程序员开发成本 需要学习dubbo 需要学习Spring Cloud Netflix
维护与部署成本 学习第三方的(配置管理、服务发现、断路器、智能路由、微代理、控制总线、群集状态、Docker、分布式会话) 来自springcloud的(配置管理、服务发现、断路器、智能路由、微代理、控制总线、群集状态、Docker、分布式会话)

      综上, Spring Cloud 明显优于Dubbo, 无论是在配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态, 还是在运维部署过程中, 大家都知道Dubbo部署是件头疼的事情, Spring Cloud天然部署在Docker中, 维护成本较低.

      至于市面上还是Dubbo使用居多呢? 让我大胆得猜测一下, 是不是很多阿里大佬都出来创业, 习惯了用Dubbo呢? 纯属个人瞎想, hhh.

      以上有错误或有补充的地方, 欢迎随时补充呀!

继续阅读