写点什么

Spring Cloud Netflix 移除后,我们又该何去何从?

作者:木风mind
  • 2023-12-15
    河南
  • 本文字数:1549 字

    阅读完需:约 5 分钟

SpringCloud 概述

SpringCloud 是一套分布式框架,在 SpringBoot 快速创建应用的基础之上提供了分布式应用所需的一系列服务治理以及中间件的能力,包括配置管理、服务发现、熔断器、智能路由、服务代理、控制总线、单元测试等等;


SpringCloud 框架在本质上是提供了一套统一的接口规范和开发约定,通过集成不同的开源框架来实现真实的功能,这也是 SpringCloud 可以形成生态的重要因素之一,目前 SpringCloud 社区依旧活跃,是 Java 应用微服务化的首选框架,SpringCloud 社区维护的主要项目包括 Spring Cloud Config、Spring Cloud Bus、Spring Cloud Consul、Spring Cloud Sleuth、Spring Cloud Gateway 等等,涵盖了云原生,数据处理,微服务等各种领域;


附上 SpringCloud 各 GA 版本发布时间


SpringCloud Netflix 前世今生

上文提到 SpringCloud 主要提供统一规范和接口,目前 SpringCloud 中主要有三套服务治理实现的底层框架,SpringCloud Netflix、SpringCloud Alibaba 以及 SpringCloud 官方的默认实现,SpringCloud Netflix 可以理解为元老级别的底层实现框架,最初 Dalston 版本就由该框架实现,十几年间 SpringCloud Netflix 框架也是经历了足够的生产验证,可信性值得保障,该框架主要包括以下组件


  • archaius-配置管理

  • eureka-服务注册 &发现

  • hystrix-熔断限流

  • ribbon-负载均衡

  • servo-监控指标

  • zuul-服务网关

  • turbine-集群监控


转入维护阶段

但随着后续技术发展,新技术更新迭代,像 SpringCloud Alibaba 等优秀的开源框架迭出,SpringCloud Netflix 的发展也来到了瓶颈,首先于 2019 年 SpringCloud Greenwich 版本中宣布进入维护期,


停止维护,并删除依赖

紧接着于 2020 年 SpringCloud 2020 版本中正式删除 Netflix 大部分组件,保留了 eureka;


SpringCloud Netflix 技术栈演进

是否必须切换技术栈?首先需要考虑一种情况,是否可以不切换技术栈,依旧采用 Netflix 生态组件,因为如上文所说,Netflix 虽然结束维护,但几十年的生产实践积累和大量使用者也能提供相当的支持;

结论是 SpringCloud Hoxton 后不可行

首先,在 Hoxton 之前,Ribbon 和 LoadBalancer 和 Eureka Client 集成方式不同,实际上 Ribbon 在 Finchley 之后,Ribbon 就对接了 Loadbalancer(如下图),只是因为 Feign 作为门面限制无法使用 Loadbalancer,在 Hoxton 之后,SpringCloud Common 包中 Loadbalancer 的 ServiceInstanceChooser 接口发生变化,Ribbon 未实现,因此无法兼容;


服务治理方案选择

对于 SpringCloud Netflix 目前业界有两种替换方案,一种是采用 SpingCloud 官方实现,一种采用 SpringCloud Alibaba 全家桶:


Spring Cloud Config vs Nacos


SpringCloud OpenFeign vs Dubbo


Sentinel vs Hystrix (Sentinel 官方数据)


对于 SpringCloud 与 Sentinel 的集成这里需要补充一点,目前 SpringCloud Alibaba 对 SpringCloud OpenFeign 的集成其实做了很多,SpringCloud 对熔断框架抽象了独立项目 SpringCloud CircuitBreaker,Sentinel 支持以下两种对接方式:

  • OpenFeign + Circuit Breaker + Sentinel,兼容 Circuit Breaker 熔断规则的管理模式和实现了相关能力,由 OpenFeign 集成 Circuit Breaker,这样更接近 SpringCloud 官方,但对配置动态刷新存在 bug,这个有机会再分享;

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>  </dependency>
复制代码


  • OpenFeign + Sentinel ,直接集成 OpenFeign,可以通过 Sentinel 管理端进行规则控制,更接近 Sentinel 原生用法;

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>  </dependency>
复制代码


总结

SpringCloud 与 SpringCloud Alibaba 都是优秀的微服务框架技术实现,大家需要根据自己具体业务需求进行选型,根据自身技术栈和投入粒度进行升级,避免因技术栈切换导致风险。

用户头像

木风mind

关注

还未添加个人签名 2020-02-06 加入

还未添加个人简介

评论

发布
暂无评论
Spring Cloud Netflix移除后,我们又该何去何从?_云原生_木风mind_InfoQ写作社区