前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Netflix Eureka 2.0.0正式发布:借尸还魂还是虚晃一枪?

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

作者头像
YourBatman
发布2022-12-29 15:46:09
6030
发布2022-12-29 15:46:09
举报
文章被收录于专栏:BAT的乌托邦BAT的乌托邦

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning

你好,我是YourBatman:一个俗人,贪财好色。

Title

Link

所属专栏

[YourBatman]-资讯/新特性,[YourBatman]-Spring技术栈新特性

源代码

https://github.com/yourbatman/FXP-java-ee

程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法

https://wangpan.yourbatman.cn

Java开发软件包(Mac)

https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit

女娲工程

http://152.136.106.14:8761

版本约定

[Mac OS 13.1],[IDEA 2022.3.1],[Spring Boot 3.0.0]

📚前言

北京时间2022-12-14,Netflix的Eureka 2.0.0正式发布。

惊不惊喜,意不意外,Eureka 2.x闭源、停止更新似乎已成共识,突然间“借尸还魂”发布新版本?难道是虚晃一枪?先看下它们的压压惊:

✍正文

本文之所以聊一聊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看看:

  1. eureka-server:下图可看到1.x和2.x的后台页面一毛一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 服务注册。笔者启了一个基于Spring Cloud 2021版本(基于1.x的eureka-client)的应用,分别进行注册到1.x和2.x的eureka-server,情况为:完全兼容,无任何违和感,符合官方说的协议层面100%兼容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 集群模式。1.x和2.x可以无缝的组成集群模式,笔者亲测!这里就不贴图了,留给你自己玩一玩哈

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

🍞总结

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

PS:若你对Eureka还不是很了解,笔者之前写过一个专栏来专门介绍,有空可去翻一番哈:

在这里插入图片描述
在这里插入图片描述

我是YourBatman:前25年不会写Hallo World、早已毕业的大龄程序员。高中时期《梦幻西游》骨灰玩家,网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖…是我不可抹灭的黑标签

  • 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
  • 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
  • ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
  • 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!擅长抽象思维,任基础架构团队负责人
  • 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
  • 🙅🏻‍♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
  • 📚高质量代码、规范践行者;DDD领域驱动深度实践;即将出版书籍《Spring奇淫巧技》

序号

专栏名称

简介

01

[YourBatman]-程序人生

程序人生,人生程序

02

[YourBatman]-资讯/新特性

IDEA、JDK、Spring技术栈…新特性

03

[YourBatman]-IntelliJ IDEA

熟练使用IDEA就相当拥有物理外挂,助你高效编码

04

[YourBatman]-Bean Validation

熟练掌握数据校验,减少90%的垃圾代码

05

[YourBatman]-日期时间

帮你解决JDK Date、JSR 310日期/其实 的一切问题

06

[YourBatman]-Spring类型转换

Spring类型转换-框架设计的基石

07

[YourBatman]-Spring static

static关键字在Spring里的应用

08

[YourBatman]-Cors跨域

关于跨域请求问题,本专栏足矣

09

[YourBatman]-Jackson

Almost Maybe是最好的Jackson专栏

10

[YourBatman]-Spring配置类

专讲@Configuration配置类,你懂的

11

[YourBatman]-Spring技术栈

暂无所属小分类的,Spring技术栈大分类

12

[YourBatman]-JDK

暂无所属小分类的,JDK技术栈大分类

13

[YourBatman]-Servlet

Servlet规范、Web相关内容专题

14

[YourBatman]-Java EE

从Java EE到Jakarta EE,30年弹指一挥间

15

[YourBatman]-工具/提效

开发工具、软件工具,目标是提效

16

[YourBatman]-Spring技术栈新特性

Spring Framework、Spring Boot、Spring Cloud、Spring其它技术

17

[YourBatman]-基本功

每个Javaer,都需要有扎实的基本功

99

源代码库

大多数专栏均配有源代码,都在这里

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📚前言
  • ✍正文
    • 🚀真的or假的?
      • 🚀谁在提交代码?
        • 🚀为什么还在维护Eureka?
          • 🚀这次更新的目的是啥
            • 🌈what’s new(新特性)
              • 🚀最低版本要求
              • 🚀其它改变
              • 🚀使用兼容性示例
          • 🍞总结
          相关产品与服务
          微服务引擎 TSE
          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档