Netflix Eureka 2.0.0正式发布:借尸还魂还是虚晃一枪?

开发 前端
本次大版本号升级,虽然不是虚晃一枪但也仅属小打小闹。对你之前学习过的Eureka知识、源码并不构成冲击,基本没什么变动,也算一件好事。

本文之所以聊一聊Eureka,是因为它还是有一定话题度的。换句话讲,在Spring Cloud的加持下,Eureka作为注册中心的市场占有率蛮高的,大概率还是第一名(非官方数据,笔者个人直觉而已)。

真的or假的?

这,虽然有点难以置信,但,一图胜千言:

图片

图片

结论:真的,毋庸置疑!!!

谁在提交代码?

继续看图:

图片

一直提交代码的竟是Spring Cloud的作者,并非奈飞的工程师?

其实不然,Spencer Gibb确实有过不少的commit,但他绝非唯一。但他的源动力是很足的,作为Spring Cloud项目的负责人之一,也得负责将Release Train上的组件整合进来嘛。说到底,还是谁最痛,谁去推!

PS:代码肯定不会是他一个人来写(commit也有不少奈飞的工程师),但主要推手之一一定有他

为什么还在维护Eureka?

既然Netflix官方都不愿去继续发展Eureka了,为何还在持续迭代升级呢?

这其中非常重要的一个原因是:Eureka作为配置中心组件,足够优秀!!!

整体设计、表现、性能、代码水平...都属非常优秀级别

无明显短板:性能可能算一个,但只要不是超大规模集群就不成问题

这里祭出各个注册中心对比图,感受下Eureka的“强悍”:

图片

乍一看Nacos貌似完胜?但“国产软件”想要走向世界,还有一段路要走。这不体现在它是否实现的功能,而体现在实现的非功能(如文档、宣传、设计、代码水平等)。

这次更新的目的是啥

结合Spring Framework、Spring Boot、Spirng Cloud的发布节点,以及上面截图中 Spring Cloud作者一直提交代码的迹象来看,本次升级的目的就显而易见了:继续拥抱Spring Cloud。这不,最新的Spring Cloud 2022已经“拥抱”它了:

图片

本次升级的目的,Release Note上也做了说明:这个2.0.0版本是一项新的工作,和2.x-archive分支是完完全全的两码事,从代码分支里也能看出来:

图片

本次升级,Eureka Server的Http API接口和数据结构没有任何改变。言外之意:协议层面,100%向下兼容,兼容1.x的Client客户端。所以本次升级的目的主要是:Spring Framework 6.0和Spring Boot 3.0兼容,并且拥抱Jakarta EE 9。

what’s new(新特性)

既然升级已成事实,并非虚晃一枪。那就看看新版本带来了哪些新特性呗。

虽然是大版本号的升级,但在功能上并不会有多少改变,简要看一看。

最低版本要求

JDK 8(跑测试的话要求JDK 11及以上,因为测试依赖基于Jakarta EE 9的Jetty)

解释:原生Eureka Client&Server的代码,使用JDK 8可以正常构建、使用

Spring Boot 3.0.0

Spring Cloud 2022.0.0

原生Eureka估计没人会直接使用,一般都会结合Spring Cloud一起,这也是“官方推荐”。

其它改变

众所周知,Eureka是CS模式,分为Client端和Server端。上面提到:本次升级协议层面完全没变,但这并不代表代码层面没有变化。

2.0.0版本Java客户端API不向后兼容1.x。言外之意:接口协议虽不变,但实现接口的代码API变了,不兼容1.x了。我们知道Eureka发送Http请求使用的是glassfish的Jersey客户端,版本变强便是本次不兼容的主要原因:Eureka 1.x版本默认使用Jersey 1.x(可选支持Jersey 2.x),而Eureka 2.0.0版本使用的是jersey 3.x。

图片

从Jar包层面可以看出,除了​javax.*​ -> jakarta.*,改变得并不多,官方描述的是2.0.0大部分Java客户端API保持不变。

另外,eureka-server这个模块现在并不能直接打成一个WAR包部署,因为“官方”(这里主要指的Spring官方)觉得没有必要,毕竟你不太可能单独去裸跑它。推荐的使用方式是作为Spring Cloud Netflix的一部分跑在Spring Boot应用上,非常方便。

使用兼容性示例

大版本号升级了,并且还存在一定阻断式,但官方又一直强调改变得不多,那么到底如何呢?保险起见,笔者跑了几个典型case看看:

eureka-server:下图可看到1.x和2.x的后台页面一毛一样

图片

图片

服务注册。笔者启了一个基于Spring Cloud 2021版本(基于1.x的eureka-client)的应用,分别进行注册到1.x和2.x的eureka-server,情况为:完全兼容,无任何违和感,符合官方说的协议层面100%兼容

图片

图片

集群模式。1.x和2.x可以无缝的组成集群模式,笔者亲测!这里就不贴图了,留给你自己玩一玩哈

声明:本文的case只做简单的现象、效果测试,不对最终生产环境负责,请酌情参考

总结​

本次大版本号升级,虽然不是虚晃一枪但也仅属小打小闹。对你之前学习过的Eureka知识、源码并不构成冲击,基本没什么变动,也算一件好事。

责任编辑:武晓燕 来源: YourBatman
相关推荐

2021-09-17 18:34:05

腾讯QQ移动应用

2009-07-10 09:40:16

Google操作系统Chrome市场

2010-05-06 20:45:47

木马网络安全360安全中心

2017-06-06 15:13:07

2020-01-06 18:55:52

移动支付微信银联

2009-08-27 09:45:42

Apache Came

2022-01-19 09:37:29

微软Windows11Windows

2024-02-29 16:11:05

2011-12-02 14:55:39

Java工具

2013-08-06 17:54:32

2020-10-29 12:56:29

黑客特朗普网络攻击

2011-07-22 09:37:58

阿里云云计算马云

2019-06-12 07:50:23

自动驾驶人工智能AI

2021-12-08 15:28:45

元宇宙网易云信

2019-08-19 19:33:47

北京互联网区块链

2021-12-10 10:27:58

谷歌Android汽车

2022-01-18 06:28:01

Windows 11操作系统微软

2024-01-10 16:47:17

2018-05-30 14:56:24

Spring轻量化Java 8
点赞
收藏

51CTO技术栈公众号