微服务架构是互联网的"香饽饽", 通过微服务架构, 将一个复杂大型的项目分为一个或多个微服务,实现各个服务之间的松耦合. 让开发人员在开发过程中只需关注更少的东西, 每个服务代表一个功能点.
但是针对于微服务实现, 有著名阿里阿巴的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.
以上有错误或有补充的地方, 欢迎随时补充呀!