文章目录

  • 技术选型考虑
  • 为什么考虑SpringCloudAlibaba
  • SpringCloudAlibaba和SpringCloud的区别及技术最终选型


开源微服务技术选型功能技术对比

SpringCloud

Dubbo

Motan

MSEC

功能

微服务完整方案

服务治理框架

服务治理框架

服务治理框架

通信方式

Rest/Http

RPC

RPC/Hessian2

Protocol buffer

服务发现

Eureka(AP)/Conusl/ZK

Nacos、ZK

ZK/Conusl

只有服务发现

负载均衡

Ribbon

客户端负载

客户端负载

客户端负载

容错策略

6种容错策略

6种容错策略

2种容错策略

自动容错

熔断机制

Hystrix

Sentinel


提供过载保护

配置中心

Spring Cloud Config

Nacos



网关

Zuul、Gateway




服务监控

Hystrix+Turbine

Dubbo+Monitor


Monitor

链路监控

Sleuth+Zipkin




多语言

Rest支持多语言

Java

Java

Java、C++、PHP

社区

高(背靠Spring)

高(背靠阿里)

一般

未知

技术选型考虑

技术选型时,对于中小型公司而言,使用 SpringCloud 会极大的减少开发成本,只需了解原理以及如何使用,就能进行开发。但是对于大型公司而言,更倾向使用Dubbo,比较灵活,可以很方便的拓展自主研发一些组件,虽然人力成本会增加,但是能全面的把控技术风险。

为什么考虑SpringCloudAlibaba

我们这里为什么选择SpringCloudAlibaba呢,主要因为SpringCloud的组件:服务注册与发现的 Eureka、服务限流降级的 Hystrix、网关 Zuul都已经停止更新了。当然,Spring这个我们Java界的老大哥也迅速给出了新的一套组件解决方案,如果想用还是可以继续用的,也只不过是权衡取舍的问题了,两套组件用哪一套更好?

SpringCloudAlibaba和SpringCloud的区别及技术最终选型

SpringCloudAlibaba实际上是对我们的SpringCloud组件增强功能,是SpringCloud的增强框架,可以兼容SpringCloud原生组件和SpringCloudAlibaba的组件。当然如果用了SpingCloudAlibaba还是建议使用阿里提供的这些组件的。
我在进行技术预研时对SpringCloud和SpringCloudAlibaba两套组件都一一进行了实验,最终还是选择了SpringCloudAlibaba,无论是开发架构的简单、方便程度还是技术社区的活跃度,还有就是它提供的一整套完整的解决方案生态:分布式事务、分布式任务调度、消息队列RocketMQ等等阿里系的一些组件还是挺完善强大的。

经过一系列的对比,最终选择的技术框架体系,基础的技术架构如图:

dubbo springcloud 性能 springcloud和dubbo选型_Cloud

使用统一的微服务框架有一个比较严重的问题:框架更新成本很高。每次框架升级,都需要所有应用服务配合升级。当然,一般会使用兼容方案,留出一段并行时间等待所有应用服务升级。但是如果应用服务非常多时,升级时间可能会非常漫长。并且有一些很稳定几乎不更新的应用服务,其负责人可能会拒绝升级……因此,使用统一微服务框架需要完善的版本管理方法和开发管理规范。