关于微服务架构方案选型

推荐优先采用 Spring Cloud Alibaba 方案

概述

目前业界对 Spring Cloud 使用最广的就是 Spring Cloud Netflix 了。

2018年12月12日 Spring Cloud Netflix项目宣布已经进入维护模式

什么是维护模式?

将模块置于维护模式意味着Spring Cloud团队将不再向该模块添加新功能。我们将修复阻止程序错误和安全性问题,还将考虑并审查社区的一些小请求。

这意味着继续使用它再也没有新功能福利了;

推荐替代品

服务熔断

Hystrix

Resilience4j

监控

Hystrix Dashboard / Turbine

Micrometer + Monitoring System

负载均衡

Ribbon

Spring Cloud Loadbalancer

路由网关

Zuul

Spring Cloud Gateway

分布式配置

Archaius

Spring Boot external config + Spring Cloud Config

Spring Cloud Netflix

Spring Cloud Netflix功能:

  • 服务发现:可以注册Eureka实例,并且客户端可以使用Spring托管的Bean发现实例
  • 服务发现:可以使用声明性Java配置创建嵌入式Eureka服务器
  • 断路器:Hystrix客户端可以使用简单的注释驱动的方法装饰器构建
  • 断路器:具有声明性Java配置的嵌入式Hystrix仪表板
  • 声明式REST客户端:Feign创建一个用JAX-RS或Spring MVC注释修饰的接口的动态实现。
  • 客户端负载均衡器:功能区
  • 外部配置:从Spring Environment到Archaius的桥梁(使用Spring Boot约定启用Netflix组件的本机配置)
  • 路由器和过滤器:Zuul过滤器的自动重新注册,以及用于反向代理创建的简单配置约定

Spring Cloud Alibaba

Github官网

Spring Cloud Alibaba 特征:

  • 流量控制和服务降级:使用Sentinel进行流量控制,断路和系统自适应保护。
  • 服务注册和发现:实例可以在Nacos上注册,客户可以使用Spring管理的bean发现实例。支持通过Spring Cloud Netflix的客户端负载均衡器Ribbon。
  • 分布式配置:使用Nacos作为数据存储
  • 事件驱动:构建与Spring Cloud Stream RocketMQ Binder连接的高度可扩展的事件驱动微服务
  • 消息总线:使用Spring Cloud Bus RocketMQ链接分布式系统的节点
  • 分布式事务:支持高性能且易于使用的Seata分布式事务解决方案
  • Dubbo RPC:通过Dubbo RPC扩展Spring Cloud服务到服务调用的通信协议
  • 阿里云对象存储:OSS的Spring资源抽象。阿里云对象存储服务(OSS)是一种加密,安全,经济高效且易于使用的对象存储服务,可让您在云中存储,备份和存档大量数据

对比

Spring Cloud Netflix

Spring Cloud Alibaba

Spring Cloud

Dubbo + Zookeeper

注册中心

Eureka

Nacos

——

Zookeeper

服务熔断

Hystrix

Sentinel

——

——

服务调用

Feign(内置Ribbon)

Dubbo Rpc

OpenFeign RestTemplate

——

服务路由

Zuul

Dubbo PROXY

Spring Cloud Gateway

——

分布式消息

——

RocketMQ

RabbitMQ

——

负载均衡

Ribbon

Dubbo LB

——

——

分布式事务

——

Seata

——

——

分布式配置

Archaius

Nacos

Spring Cloud Config

Zookeeper

Dubbo 与 Spring Cloud 性能比较

微服务架构大数据分析系统 微服务架构选型_微服务架构大数据分析系统

Spring Cloud alibaba 技术架构

微服务架构大数据分析系统 微服务架构选型_java_02

建议

  1. Spring CloudDubbo + Zookeeper属于自行组装。
  2. Spring Cloud Netflix 系列技术栈进入维护模式(不再添加新特性)
  3. Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案(全家桶)。并且已经贡献给Spring

推荐优先采用 Spring Cloud Alibaba 方案