任何项目都有其生命周期,Spring Could Netflix也不例外,官宣已进入维护模式,如果在新项目开始考虑技术选型时要考虑到这点风险,并考虑绕道的可能性。


原创: itmuch  IT牧场

这两天看到一则新闻:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode。

其中说到:

Spring Cloud Netflix Projects Entering Maintenance Mode

Recently, Netflix announced that Hystrix is entering maintenance mode. Ribbon has been in a similar state since 2016. Although Hystrix and Ribbon are now in maintenance mode, they are still deployed at scale at Netflix.

The Hystrix Dashboard and Turbine have been superseded by Atlas. The last commits to these project are 2 years and 4 years ago respectively. Zuul 1 and Archaius 1 have both been superseded by later versions that are not backward compatible.

The following Spring Cloud Netflix modules and corresponding starters will be placed into maintenance mode:

  1. spring-cloud-netflix-archaius

  2. spring-cloud-netflix-hystrix-contract

  3. spring-cloud-netflix-hystrix-dashboard

  4. spring-cloud-netflix-hystrix-stream

  5. spring-cloud-netflix-hystrix

  6. spring-cloud-netflix-ribbon

  7. spring-cloud-netflix-turbine-stream

  8. spring-cloud-netflix-turbine

  9. spring-cloud-netflix-zuul

This does not include the Eureka or concurrency-limits modules.

What is Maintenance Mode?

Placing a module in maintenance mode means that the Spring Cloud team will no longer be adding new features to the module. We will fix blocker bugs and security issues, and we will also consider and review small pull requests from the community.

We intend to continue to support these modules for a period of at least a year from the general availability of the Greenwich release train.

简单翻译一下:

Spring Cloud Netflix项目进入维护模式

最近,Netflix 宣布 Hystrix正在进入维护模式。自2016年以来,Ribbon已处于类似状态。虽然Hystrix和Ribbon现已处于维护模式,但它们仍然在Netflix大规模部署。

Hystrix Dashboard和Turbine已被Atlas取代。这些项目的最后一次提交别是2年和4年前。Zuul 1和Archaius 1都被后来不兼容的版本所取代。

以下Spring Cloud Netflix模块和相应的Starter将进入维护模式:

  1. spring-cloud-netflix-archaius

  2. spring-cloud-netflix-hystrix-contract

  3. spring-cloud-netflix-hystrix-dashboard

  4. spring-cloud-netflix-hystrix-stream

  5. spring-cloud-netflix-hystrix

  6. spring-cloud-netflix-ribbon

  7. spring-cloud-netflix-turbine-stream

  8. spring-cloud-netflix-turbine

  9. spring-cloud-netflix-zuul

这不包括Eureka或并发限制模块。

什么是维护模式?

将模块置于维护模式,意味着Spring Cloud团队将不会再向模块添加新功能。我们将修复block级别的bug以及安全问题,我们也会考虑并审查社区的小型pull request。

我们打算继续支持这些模块,直到 Greenwich版本 被普遍采用至少一年。

解读

从上文可知,由于Netflix对Zuul 1、Ribbon、Archaius等的维护不利,Spring Cloud决定在Greenwich中将如上项目都进入“维护模式”——

基本上,除了 spring-cloud-netflix-eureka-* 以及 spring-cloud-netflix-concurrency-limits ,其他模块都进入“维护模式了”。

TIPS:

  • 考虑到 spring-cloud-netflix-concurrency-limits 可能很多童鞋没有见过。简单介绍一下, concurrency-limits 是Netflix开源的限流器项目,Spring Cloud在Greenwich版本中引入。

  • Netflix Concurrency Limits的GitHub:https://github.com/Netflix/concurrency-limits

进入维护模式意味着,再也不会有功能的变化了,不过呢,Spring Cloud承诺会维护严重的Bug & 接受社区的pull request。

何去何从?

这应该是大家最关注的问题,目前业界对Spring Cloud使用最广的就是Spring Cloud Netflix了。这TM一下80%都进入“维护模式”,再也没有新功能福利了,让人如何是好啊!就目前来看,继续使用Sprng Cloud Netflix问题不大,但长期来看,显然是不合适的。

官方建议的替代项目如下表所示:

当前 替代项目
Hystrix Resilience4j
Hystrix Dashboard / Turbine Micrometer + Monitoring System
Ribbon Spring Cloud Loadbalancer
Zuul 1 Spring Cloud Gateway
Archaius 1 Spring Boot external config + Spring Cloud Config

替代项目的孵化进度

目前:

1 Hystrix的替代Resilience4j:目前在https://github.com/spring-cloud-incubator/spring-cloud-circuitbreaker 中孵化。该项目原名叫 spring-cloud-r4j ,最近改名为 spring-cloud-circuitbreaker 。

  • TIPS:这么做, 笔者猜想:Spring是要抽象一个断路器的统一规范,让不同的断路器实现去实现,从而实现相同的注解(例如 EnableCircuitBreaker ,然后不同的实现,诸如Hystrix、Resilience4j、Sentinel等想要接入只需更换不同的starter依赖,使用则完全一样),不过由于尚未孵化完毕,代码也比较新,暂时只是猜想。

2 Hystrix Dashboard /Turbine的替代:由于官方建议用Resilience4j替代Hystrix,所以你再也不需要Hystrix的那一堆监控轮子了!Resilience4j自带整合了Micrometer!这其实是一个个人比较喜欢的福利

TIPS:

  • 曾记否,你为了Hystrix的监控,得搞Hystrix Dashboard;为了监控微服务集群实例,又得搭Turbine;微服务整合Turbine又有HTTP方式&MQ方式,两种方式还不能共存,不能兼容……无比蛋疼!

  • Micrometer是Pivotal公司(也就是Spring所在的公司)开源的监控门面,类似于监控世界的Slf4j;它可以和各种监控系统/监控画板/时序数据库配合使用,诸如:Graphite、Influx、Ganglia、Prometheus等等。

  • Micrometer官网:http://micrometer.io/

  • Spring Boot 2中的Spring Boot Actuator底层用的就是Micrometer——这意味着,如果你用Resilience4j,监控的体验和Actuator是一致的!

3 Ribbon的替代 SpringCloudLoadbalancer :之前 spring-cloud-loadbalancer 在 spring-cloud-loadbalancer 项目(https://github.com/spring-cloud-incubator/spring-cloud-loadbalancer)中孵化,现在,该项目已经成为 spring-cloud-commons 的子项目了。使用上, spring-cloud-loadbalancer 和Ribbon区别不大

4 Zuul 1的替代Spring Cloud Gateway:这个基本玩Spring Cloud的都知道。由于Zuul持续跳票1年多,Spring Cloud索性开发了Spring Cloud Gateway。在这里,有Spring Cloud Gateway和Zuul 1.x的性能对比:http://www.itmuch.com/spring-cloud-sum/performance-zuul-and-gateway-linkerd/

5 Archaius 1的替代Spring Boot external config + Spring Cloud Config:我太喜欢这个改变了!众所周知,Spring Cloud有N多组件,N多N多配置属性(1000+),其中很多配置是不给提示的。原因在于Spring Boot/Cloud的配置需要借助 spring-boot-configuration-processor 读取代码的注释,并生成metadata.json文件才能有提示。而Netflix开源的组件(例如Ribbon/Hystrix等)都没有使用Spring Boot的规范,而是自己用Archaius管理配置(那代码风格,个人很不喜欢),根本没有metadata.json文件,于是这部分配置IDE无法给你提示。以后全面废弃Archaius,统一使用Spring Boot external config + Spring Cloud Config,这意味着未来Spring Boot的编程体验更加统一的同时,配置提示还杠杠的。

未来&其他的候选者

我相信未来Spring Cloud的生态会越来越好。事实上Spring Cloud生态中还有其他的替换项目&更多选择:

作用 业界用得最多 已孵化成功的替代项目 孵化中的替代项目
服务发现 Eureka Consul、Zookeeper Alibaba Nacos
负载均衡器 Ribbon - Spring Cloud Loadbalancer
断路器 Hystrix - Resilience4j、Alibaba Sentinel
声明式HTTP客户端 Feign - Retrofit
API网关 Zuul 1 Spring Cloud -
配置管理 Spring Cloud Config Consul、Zookeeper Alibaba Nacos

Spring Cloud Netflix项目进入维护模式的更多相关文章

  1. Spring Cloud Netflix概览和架构设计

    Spring Cloud简介 Spring Cloud是基于Spring Boot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策 ...

  2. Spring Cloud netflix 概览和架构设计

    pring Cloud是基于Spring Boot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等 ...

  3. Spring Cloud Netflix Zuul 重试会自动跳过经常超时的服务实例的简单说明和分析

    在使用E版本的Spring Cloud Netflix Zuul内置的Ribbon重试功能时,发现Ribbon有一个非常有用的特性: 如果某个服务的某个实例经常需要重试,Ribbon则会在自己维护的一 ...

  4. 基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例

    Solar Spring Cloud为开发者提供了快速构建分布式系统中的一些常见工具,如分布式配置中心,服务发现与注册中心,智能路由,服务熔断及降级,消息总线,分布式追踪的解决方案等. 本次实战以模拟 ...

  5. Spring Cloud Netflix之Euraka Server注册中心

    Spring Cloud简介 Spring Cloud是基于Spring Boot的一套实现微服务架构的生态组件.生态组件中包含Spring Cloud NetFlix,Spring Cloud Fe ...

  6. 优秀的Spring Cloud开源项目整理推荐

    无论是对于初学者,还是有一定工作经验的程序员来讲,Spring Cloud开源项目都是一笔宝贵的财富.下面给大家整理了十个优秀的开源项目,分别是spring-cloud-examples.spaasc ...

  7. Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar

    Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar 前言 公司有一个调研要做,调研如何将Python语言提供的服务纳入到Spring Clou ...

  8. Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

    在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...

  9. Spring Cloud Netflix Eureka源码导读与原理分析

    Spring Cloud Netflix技术栈中,Eureka作为服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究. 本文主要分为四部分,一是对项目构建 ...

随机推荐

  1. POJ-3744 Scout YYF I (矩阵优化概率DP)

    题目大意:有n颗地雷分布在一条直线上,有个人的起始位置在1,他每次前进1步的概率为p,前进两步的概率为1-p,问他不碰到地雷的概率. 题目分析:定义状态dp(i)表示到了dp(i)的概率,则状态转移方 ...

  2. HTML <a> 标签的伪类

    伪类的语法: selector : pseudo-class {property: value} CSS 类也可与伪类搭配使用. selector.class : pseudo-class {prop ...

  3. textBaseline

    <!DOCTYPE html><html><body> <canvas id="myCanvas" width="400&quo ...

  4. Oracle 11g 在audit_file_dest目录下产生大量的aud文件

    一.adump目录数据暴增现象 发现某台数据库服务器的根目录的使用率在暴涨,发现Oracle数据库的adump目录,每秒生成一个dump文件.数据库并未开通审计外部记录.为什么adump目录会生成那么 ...

  5. selenium安装后,需要安装浏览器驱动

    google的驱动:chromedriver.exe 驱动版本与chrome版本对应的目录: http://npm.taobao.org/mirrors/chromedriver/2.32/notes ...

  6. DevExpress v17.2新版亮点——CodeRush篇(一)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush v17.2 的新功能,快来下载试用新版本! Unit Test ...

  7. js前台数据校验

    1.脚本 Validator = { exp:{ numWord:/^[A-Za-z0-9]+$/, //数字或字母 numWordM:/^[\-]*[A-Za-z0-9]+$/, //数字或字母可为 ...

  8. git误提交了项目文件和配置文件的恢复方法

    参考链接:https://my.oschina.net/yangfuhai/blog/708704

  9. mysql 函数 事务

    mysql 中提供了许多内置函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. 对于一个包含五个二字节字符集, LENGTH()返回 ...

  10. android编译环境安装

    Android 编译环境安装 安装 Java 6 安装 Java 6 安装依赖包 (Ubuntu 12.04) $ sudo apt-get install git gnupg flex bison ...