最新要闻
- 国产高端手机份额第一!卢伟冰:小米13系列好评99% 自然销量高
- 【天天快播报】史上第一颗6GHz CPU!i9-13900KS发布:性能涨3% 价格涨20%
- 理想汽车CEO曾试图接触威马沈晖?本人回应:纯属放屁!
- 世界新资讯:韩国第一个月球探测器发回第一张照片:地月黑白合影
- 微头条丨女子乘火车遇麻将专列生意火爆 还能K歌引围观:网友直呼想买站票
- 全球观焦点:三级应急响应启动!寒潮预警升级 降温图又变紫了:局地降超20度
- 天天观天下!盖茨自曝他的主力机是三星Galaxy Z Fold4:李在镕送的
- 全球热文:《卧龙:苍天陨落》中配预告 声优大佬云集、虎牢关战吕布超燃
- 苹果兔年新春大片《过五关》发布!iPhone 14 Pro拍摄国粹京剧
- 焦点消息!最远能跑1200km 长安智电iDD正式发布:一公里不到2毛钱
- 世界动态:3月发售 《生化危机4:重制版》中文配音首曝:艾达王登场
- 世界百事通!能怎样?爱奇艺回应没限制投屏只限制清晰度被喷无耻:律师称确没违法
- 《原神》开发商米哈游上热搜:间接持股企业超百家
- 一度因黑客攻击被迫停服:狼人杀游戏《鹅鸭杀》服务器重新上线
- 天天视点!魅族新专利:可根据坐姿判断是否疲劳驾驶
- 全球焦点!奔驰L3级自动驾驶获批:司机可看书、喝咖啡 事故奔驰负责
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球滚动:Spring Cloud Alibaba 2022.0.0.0 版本发布啦!
作者:铖朴
新版本预览
本次发布的 Spring Cloud Alibaba 2022.0.0.0-RC1 版本,是基于社区 2022.x 主干分支进行构建发布第一个 Release Candidate(RC)版本,考虑到本次版本升级属于重大版本变更,因此暂时先以 RC 版本形式发布,当前大家可以先试用起来,待后续时机成熟社区会尽快发布正式版本。新版本预览内容如下:
(资料图片)
2022.0.0.0-RC1 版本
是在 Spring Cloud 2022.0.0、Spring Boot 3.0 的基础上,对生态中原有的包括注册配置中心、分布式消息等在内的众多组件进行了适配,属于一个大变更的版本。本次发布的 Spring Cloud Alibaba 2022.0.0.0-RC1 版本对以下组件版本进行了适配:
Seata:客户端适配版本为1.6.1 版本 [1],该版本相比于之前的1.5.x版本,已经支持MySQL updatejoin,PostgreSQL & Oracle多主键支持,InsertOnDuplicateUpdate 做了大量优化,支持多注册中心等及核心功能大量优化,该版本客户端已完成JDK 17的支持。
RocketMQ:客户端适配版本为4.9.4版本 [2],该版本提供了轻量级消息队列和为延迟消息提供异步发送功能等在内的诸多特性。
Sentinel:客户端适配版本为1.8.6 版本 [3],该版本调整了Sentinel规则类中的属性,并将javax.* 包下的相关基础类都替换为了jakarta.*包路径下的,以兼容 JDK 17 。
Nacos: 客户端适配版本为 2.2.1-RC,该版本是Nacos社区在最新发布的 2.2.0 版本基础上为适配最新GraalVM构建原生镜像而推出的最新版本客户端,该版本可直接搭配Nacos 2.x系列Nacos Server使用,不仅能体验 2.2.0 最新带来的数据源、连接限流等插件能力,而且可直接构建GraalVM原生镜像,启动速度和运行时内存得到大幅降低。
除了组件升级,另外也修复了一些之前版本所存在的问题,进一步提升了Spring Cloud Alibaba 使用的稳定性与健壮性。更多内容可参见该版本相关发版公告 [4]。
版本解读
为什么是 JDK 17?
很多人,听到 Spring Boot 3.0 默认所需的 JDK 最低版本为 17 会感到非常诧异!对很多 JDK 8 用户来说 Spring 官方的选择一定是不明智的。真的是这样的吗?对于这个问题,我们认为主要基于 2 个原因:Oracle 官方对 JDK 支持政策和技术先进性。
Oracle 当前对所有发布的 JDK 版本分为 Long-Term-Support (LTS) releases 和non-TLS releases,TLS 版本的 JDK 作为 Oracle 官方长期支持的版本,在未来的很长一段时间内,官方都会对该版本进行持续的维护和更新。而 non-TLS 版本的 JDK 仅仅是作为过度版本,只要下一个 LTS 版本出现以后,官方就不会对其进行维护了,因此也是不适合作为外部用户生产长期使用的。
因此在 Spring Boot 3.0 于今年年初的第一个 Milestone 版本发布之时,可选的 JDK 版本从上图来看,就只有 JDK 7、8、11 和 17。为什么是 17 而不是其之前的版本呢?这个就要结合 Oracle 官方的 JDK 支持政策来理解了。Oracle 官方一般将所发布的 JDK 后续的支持策略分为以下 3 种:
Premier Support: 其可以理解为 Oracle 提供的标准支持类型,其最新政策下的支持时间周期为 5 年,5 年内 Oracle 官方会对该版本 JDK 提供持续免费的更新与升级服务。
Extended Support:作为标准支持后的延续支持类型,其最新政策下的支持时间周期为 3 年,3 年内 Oracle 的用户可以通过支付一定的支持服务费用购买 Oracle 对该版本 JDK 所提供的更新支持服务。
Sustaining Support:其是 Oracle 官方在延续支持类型后的一种支持服务,当然其也是要收费的,其没有明确的截止时间。
根据上述 Oracle 官方对当前 JDK 所提供的支持服务形式以及 JDK 版本本身的先进性来看,JDK 7、8 已经截止了 Premier Support 支持服务,11 相关的 Premier Support 也快到期了。JDK 17 作为目前最新的 LTS 版本,本身无论是在语法还是运行性能方面都在之前版本基础上做了一定优化,具有比较大的优势。因此,选择 JDK 17 作为最新的 Spring Boot 3.0 的默认 JDK 版本也就顺理成章了!
Spring Cloud 2022.0.0 带来了什么?
Spring Cloud 在 2022 年的最后一个月迎来了 2022.x 系列的第一个正式版本 2022.0.0,有些用户这个时候可能会有一种快结束了才刚刚开始的感觉!其实不然,Spring 在 2022 年的第一个月就推出了 2022.0.0-M1,作为第一个 Milestone 版本。
在接下来一年里,其陆续发布了 5 个 Milestone 和 3 个 Release Candicate(RC) 版本以后,才正式推出最终的 General Available(GA) 版本。由此可见,其实 Spring 官方做事情还是非常靠谱和有耐心的,值得尊敬!
Spring Cloud 作为当前业界应用最为广泛的微服务框架,其定义了一套包含:分布式注册配置中心、分布式消息、限流降级、远程过程调用、负载均衡等在内的较为完整的一套微服务解决方案标准。在 2022.0.0 中,主要做了如下部分内容的调整:
Spring Cloud Common 模块中由于 AsyncRestTemplate 已在 Spring Framework 6 中删除,因此删除了对应的 LoadBalancer 自动配置,老代码中有涉及相关内容并考虑升级的用户需要注意。
Spring Cloud Common 模块中 LoadBalancer 的 ResponseData 现在已经调整为使用 Spring 中 org.springframework.http.HttpStatusCode,跟 Spring 其他模块保持了一致性。
Spring Cloud Common 模块中第一次正式从源码中移除 @SpringCloudApplication注解,@EnableDiscoveryClient、@EnableCircuitBreaker 注解也都不再默认需要添加内容等。
Spring Cloud Stream 模块正式移除了对 @StreamListener、@Input 等注解的支持,当前只能使用函数式编程方式进行消息的订阅与发送。
Spring Cloud OpenFeign 中 feign.autoconfiguration.jackson.enabled 属性默认改为 true。
更多具体信息可以参考Spring Cloud 2022.0.0 版本说明 [5]。
Spring Boot 3.0 意味着什么?
Spring Boot 3.0 距离上次大版本 2.0 发布以来,已经过去 4 年半,该版本社区历时 12 个月共提交超过 5700 个 commit。其在 Spring 6.0 和 Spring Native 的基础上主要做了 4 大主要的调整:
调整 JDK 基线到 17 版本,兼容 JDK19;
将 Java EE 依赖迁移到 Jakarta EE;
支持应用使用 GraalVM 技术生成原生镜像,取代了之前实验性质的 Spring Native 项目,让 Spring Boot 应用直接迈向 GraalVM;
使用 Micrometer 和 Micrometer Tracing 提升了应用可观测性。
其中,前 2 点前文也有说明,不再赘述。接下来将就其中的 GraalVM 和可观测方面进行介绍。
迈向 GraalVM
Spring Boot 3.0 本次带来最大的改动就是GraalVM原生镜像的支持,也是官方文档中强调的他们花费时间精力比较多的部分。
GraalVM 技术作为 JRE 的替代方案,其通过预先编译(Ahead Of Time,AOT)等技术对 Java 应用进行预先编译,让 Spring 在运行应用时掌握更多应用有关的信息,让整个应用启动速度更快。另外,通过编译工具在编译过程中通过消除一些不必要的内容可以让最终的应用更小,占用内存更低。对于一些对启动速度要求非常高的场景,比如 Serverless、FaaS 场景非常友好!
提到 GraalVM 技术,其最早来自于 Spring 团队于2019 年发起的 Spring Native 项目。它作为一个实验性质的项目,在过去几年通过与 Spring Boot 3.0 和 Spring Framework 6.0 之前的项目进行整合使用,据 Josh Long 在最近的相关采访 [6]透露,该实验项目已经验证了 Spring Boot 2.x 和 Spring Framework 5.x 的各项功能。本次 Spring Boot 3.0 直接将其正式从 Spring Native 迁入到 Spring Boot 中来,也预示着该项技术开始逐渐走向成熟,Spring生态开始迈入 GraalVM 阶段!
跟 JVM编译部署方式相比,GraalVM 具有以下特点:
在应用构建阶段,从主入口点就开始进行应用程序的静态分析。
创建本机镜像时,通过代码分析,会将无法访问的代码删除,并且不会成为可执行文件的一部分,从而可在一定程度上压缩程序包大小。
GraalVM 无法直接感知代码的动态元素,因此对于存在反射、序列化和动态代理的应用程序,需要提前提供相关hint配置文件,帮助解析应用程序,相关操作过程可参考官方文档 [7]。
应用程序类路径在构建时是固定的,不能更改。
没有惰性类加载,可执行文件中的所有内容都将在启动时加载到内存中。
支持的 Java 应用程序在某些方面存在一些限制,因此目前并不能保证之前的 Java 应用都可直接使用GraalVM技术进行应用构建,有一定概率会存在不兼容的异常情况。
本次发布的 Spring Cloud Alibaba 2022.0.0.0 版本所包含的部分中间件客户端已完成了构建 GraalVM 原生应用的适配,以下是社区对目前所支持的服务注册与发现、分布式事务模块相关示例应用在升级为 Spring Boot 3.0 以后,使用 GraalVM 构建原生应用镜像做的在启动速度和运行时占用内容相关的测试(Sentinel、Seata 和 RocketMQ 目前还在适配中,以下测试过程在 MacOS 11.4,2.6 GHz 6-Core Intel Core i7 处理器,16G 内存环境下模拟 5 次取平均值测得):
从上述对比可发现,最新支持 Spring Boot 3.0 基于 GraalVM 的 Spring Cloud Alibaba 应用会在启动速度、运行时内存占用和应用包大小方面得到大幅度降低,例如,其中服务注册消费应用启动速度提升了近 10 倍,运行时内存占用比原来降低了近乎 2/3,效果非常明显。这给云原生时代,托管在云上的应用带来了显著优势,让其可以更快的进行弹性扩缩容以及降低企业整体用云成本!
可观测能力
微服务应用带来了系统的解耦,把一个应用拆分成若干个模块来进行部署,这样在提高系统的可扩展性的同时,一个请求的处理可能会经过多个单独部署的模块,因此,让问题排查显著提升。可观测技术通过定义 logging、metrics 和 traces 3个维度指标数据的采集和处理,让系统运维人员可以方便地掌握系统运行状态,及时排查解决问题。
Spring Boot 3.0中另外一项重大特性,就是其在可观测领域的增强。在 Spring Boot 3.0 中,支持了可观测事实标准 Micrometer 1.10 [8]中引入的新 API。例如,Spring Boot 3.0 可自动装配一个 ObservationRegistry 实例对象,为用户提供一个同时适用于 metrics 和 traces 的API接口。另外,3.0 也为用户提供了自动配置Micrometer Tracing [9]功能,具体包括支持第三方的相关可观测工具,如:Brave、OpenTelemetry、Zipkin 以及 Wavefront。让Spring Boot 应用能非常方便的集成各种主流的可观测工具。更多有关可观测的内容可参见相关文档说明 [10]。
除了上述介绍的主要特性以外,Spring Boot 3.0 还解决很多之前存在的bug,更多具体内容可参见Spring Boot 3.0 版本说明 [11]。
升级步骤
升级操作
如果对于一个 Spring Boot 3.0项目需要使用Spring Cloud Alibaba 2022.0.0.0-RC1 版本,请在项目中添加如下 Management 依赖:
org.springframework.cloud spring-cloud-dependencies 2022.0.0 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2022.0.0.0-RC1 pom import
注意除了调整上述JDK版本,还需要将JDK版本升级到17。
兼容 Spring Boot 3.0&Spring Cloud2022.0.0
Spring Cloud Alibaba项目作为阿里巴巴中间件微服务领域的一站式解决方案,在本次发布的 2022.0.0.0 版本适配过程中,由于Spring Boot & JDK的较大变化给项目适配造成了除功能升级以外的大量其他兼容性工作。如果是直接构建新项目,可以参考最新的 Spring Boot 3.0 项目构建过程进行操作即可,以下步骤可以省略,如果是老的应用希望升级到 JDK17 & Spring Boot 3.0 可能需要做如下一些兼容处理:
Java EE依赖迁移到Jakarta EE
由于 Oracle 跟 Eclipse 基金会在 Java EE商标上所存在的纠纷,从 Jakarta EE 9 开始, javax.* 包下的基础类都被迁移到了jakarta.。因此,对于本次升级如果在程序中使用了 javax.开头的导包,都需要将其进行修改。
以下列出了一系列工具可以帮助你完成这部分的迁移:
- OpenRewrite recipes [12].
- The Spring Boot Migrator project [13].
- Migration support in IntelliJ IDEA [14].
spring.factories 文件不再支持对 Auto-configuration 进行自动装配
从 Spring Boot 3.0 开始,META-INF/spring.factories 文件不再支持对 Auto-configuration 进行自动装配。用户可以使用 AutoConfiguration.imports 文件代替 META-INF/spring.factories 文件对原来编写在其中的自动装配类进行迁移。如果不做对应的修改,直接升级你会发现之前程序运行阶段自动注入的对象都将不存在导致运行报错。这个也是本次 Spring Cloud Alibaba 所使用的方式,如本次 Spring Cloud Alibaba 升级过程中服务注册与发现模块就通过创建如下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 进行自动类装配:
com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfigurationcom.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfigurationcom.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfigurationcom.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfigurationcom.alibaba.cloud.nacos.discovery.reactive.NacosReactiveDiscoveryClientConfigurationcom.alibaba.cloud.nacos.discovery.configclient.NacosConfigServerAutoConfigurationcom.alibaba.cloud.nacos.loadbalancer.LoadBalancerNacosAutoConfigurationcom.alibaba.cloud.nacos.NacosServiceAutoConfigurationcom.alibaba.cloud.nacos.utils.UtilIPv6AutoConfiguration
不在允许 URI 尾部斜杠匹配
在 Spring 6 以前,请求路径使用"/hello"和"/hello/"都可以进入如下到 hello() 方法,但是在升级以后需要注意只有前者请求才能正常被配到到方法中,后者会抛出 404 到不到匹配路径异常。
@GetMapping("/hello")String hello() { return "Hello World";}
Spring Cloud Stream 注解使用方式被移除
Spring Cloud Stream 作为 Spring Cloud 体系内集成具有高度可扩展性的分布式消息解决标准实现,Spring Cloud Alibaba 基于其将 RocketMQ 集成进入了 Spring Cloud 生态,让用户可以不用修改一行业务代码仅调整依赖和配置即可进行消息中间件从 RabbitMQ、Kafka 等迁移到 RocketMQ。在 Spring Cloud 2022.0.0 最新版本所对应的 Spring Cloud Stream 4.0 中移除之前的注解方式在客户端处理消息能力,目前仅支持函数式方式。
因此,像之前的 @StreamListener 和 @Input 等注解在升级以后都不再能直接使用。目前,Spring Cloud Alibaba 中 RocketMQ 相关模块示例代码已调整为函数方式,函数式方式让代码编写过程变得更加简洁,以下为使用函数式方式完成广播消息的消费代码,更多示例可参考相关示例模块 [15]:
@SpringBootApplicationpublic class RocketMQBroadcastConsumer2Application { private static final Logger log = LoggerFactory .getLogger(RocketMQBroadcastConsumer2Application.class); public static void main(String[] args) { SpringApplication.run(RocketMQBroadcastConsumer2Application.class, args); } @Bean public Consumer> consumer() { return msg -> { log.info(Thread.currentThread().getName() + " Consumer2 Receive New Messages: " + msg.getPayload().getMsg()); }; }}
Spring Cloud Common 模块正式移除 @SpringCloudApplication 注解
在 Spring Cloud 2022.0.0 所对应的 Spring Cloud Common 4.0.0 中正式移除 @SpringCloudApplication 注解。该注解的推出是为了包含 @SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker 这 3 个 Spring Cloud 应用都必要的注解分别提供应用依赖管理,服务注册和断路器。在后来通过引入相关的依赖就可默认提供服务注册以及断路器能力,因此这两个注解也不再必须,通过配置 spring.cloud.discovery.enabled=false 可直接关闭默认注册行为,这样操作更加灵活,这次在新版本中 @SpringCloudApplication 正式被移除,升级过程中老版本需要注意进行相应的调整。
上述内容是 Spring Cloud Alibaba 适配 JDK 17 & Spring 6 & Spring Boot 3.0 & Spring Cloud 2022.0.0 过程中框架层面比较直接的一些变动。其他的一些相关新版本所带来的更多特性和改变可详细参考相关文档Spring 6 [16]、Spring Boot 3.0 [17]、Spring Cloud 2022.0.0 [18]。另外在适配支持 GraalVM 技术构建 Spring Cloud Alibaba 应用原生镜像方式,社区了也联合 Nacos、Sentinel、Seata 等社区共同做了一些改造和兼容。具体在新特性使用介绍中会有提及。
新特性以及使用方式
使用 GraalVM 技术构建应用
本次适配 Spring Boot 3.0 的 Spring Cloud Alibaba 所支持的所有组件中,Nacos 2.2.1-RC已经支持 GraalVM 技术构建应用。接下来,将介绍一下相关组件使用 GraalVM 技术进行应用编译与运行测试:
项目构建
按照一般的 Spring Cloud Alibaba 应用构建方式进行项目构建即可,以下为相关必须添加的依赖内容:
org.springframework.boot spring-boot-starter-parent 3.0.0 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-commons org.springframework.cloud spring-cloud-dependencies 2022.0.0 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2022.0.0.0-RC1 pom import
以上为本次通过 Spring Cloud Alibaba 使用 Nacos 进行服务注册所需要的必要依赖,其他依赖请根据自身需求进行调整,请注意,使用 GraalVM spring-boot-starter-parent 父模块是非常关键的,其声明一个 native profile,其中包含了创建、运行 GraalVM 原生映像的必要信息。
构建 Spring Boot 原生镜像应用主要有两种方式:
- 使用 Spring Boot 对 Cloud Native Buildpacks 的支持来生成包含本机可执行文件的轻量级容器。
- 使用 GraalVM Native Build Tools 生成本机可执行文件。
由于第一种方式使用过程中对本地环境有一定的要求,如需使用可参考Spring Boot 3.0 相关用户文档 [19]。本文接下来演示使用第二种方式进行 GraalVM 应用构建。
环境准备
要使用 Native Build Tools 构建原生镜像,需要在首先在机器上安装 GraalVM 发行版。您可以在Liberica Native Image Kit [20]页面上手动下载它,也可以使用像 SDKMAN! 这样的下载管理器。本文演示环境为 MacOS,如果是 Windows 可参考相应文档 [21]进行操作。执行以下命令安装 GraalVM 环境:
sdk install java 22.3.r17-niksdk use java 22.3.r17-nik
通过检查 java -version 的输出来验证是否配置了正确的版本:
$ java -versionopenjdk version "17.0.5" 2022-10-18 LTSOpenJDK Runtime Environment GraalVM 22.3.0 (build 17.0.5+8-LTS)OpenJDK 64-Bit Server VM GraalVM 22.3.0 (build 17.0.5+8-LTS, mixed mode)
资源文件准备
在构建应用之前,需要在应用 pom.xml 文件中添加如下相关构建工具插件。
org.springframework.boot spring-boot-maven-plugin -agentlib:native-image-agent=config-merge-dir=src/main/resources/META-INF/native-image/ org.graalvm.buildtools native-maven-plugin
添加完上述插件后,通过以下命令生成应用中反射、序列化和动态代理所需的 hint 配置文件。
mvn -Pnative spring-boot:run
运行成功以后,停止应用以后,可发现项目 resource/META-INF/native-image 目录下会生成以下一些 hint 文件:
- resource-config.json:应用中资源 hint 文件
- reflect-config.json:应用中反射定义 hint 文件
- serialization-config.json:应用中序列化内容 hint 文件
- proxy-config.json:应用中 Java 代理相关内容 hint 文件
- jni-config.json:应用中 Java Native Interface(JNI)内容 hint 文件
由于 GraalVM 无法直接感知代码的动态元素,因此需要这些 hint 原生帮助生成的原生应用镜像进行运行。
注意:执行以上命令启动应用进行应用属性解析的过程是动态的,在该阶段需要完整测试一遍应用的所有功能才能确保完整生成应用运行过程中的所有必须动态属性,否则会出现生成的配置文件中内容不完整造成运行阶段报错。社区在适配 Nacos 服务注册与消费测试过程中就因为测试不充分导致过类似错误。
编译原生应用
上述步骤一切就绪以后,通过以下命令进行原生应用构建:
mvn -Pnative native:compile
原生应用构建阶段会比较耗时,根据本地环境资源情况会耗费几分钟时间,以上过程都顺利执行以后,出现如下结果则表示构建成功:
Finished generating "nacos-discovery-provider-example" in 2m 36s.[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 02:51 min[INFO] Finished at: 2022-12-21T13:43:22+08:00[INFO] ------------------------------------------------------------------------
接下来我们通过 target/nacos-discovery-provider-example 启动应用,如下图显示结果可见,启动速度非常迅速,仅 0.3s 多就完成了应用启动和服务注册:
...... : [REGISTER-SERVICE] public registering service DEFAULT_GROUP@@service-provider with instance: Instance{instanceId="null", ip="30.221.144.116", port=18082, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName="DEFAULT", serviceName="null", metadata={preserved.register.source=SPRING_CLOUD}}...... : null No credential found...... : nacos registry, DEFAULT_GROUP service-provider 30.221.144.116:18082 register finished...... : Started ProviderApplication in 0.328 seconds (process running for 0.339)
另外,我们可以通过 vmmap pid | grep Physical 命令查看运行过程中的内存占用情况:
以上过程则为一个 Spring Cloud Alibaba 应用使用 GraalVM技术构建应用并完成向 Nacos 注册的整个过程,相关示例代码可以参考SCA Nacos Example [22]。特别需要注意的是,OpenFeign 使用GraalVM 过程中需要进行一些调整,比如添加 spring.cloud.refresh.enabled=false 配置,具体设置过程可参考相关OpenFeign说明文档 [23]。
升级建议与注意事项
此次支持 Spring Boot 3.0 的 Spring Cloud Alibaba 版本相关内容改动整体还是比较大的,老项目特别是 Spring Boot 2.4 以下的直接迁移存在一定的兼容性风险,建议相关迁移操作先进行充分验证和测试以后再进行。
此次引入 Spring Boot 3.0 中的 GraalVM 技术在应用启动速度、运行时内存占用率和包大小方面相比于传统的 JVM 虚拟机模式有非常显著的优势,在一定程度上解决 Java 语言一直被诟病的启动速度慢、构建包过大等问题。但相关技术目前也还在发展中,段时间内还有一定问题需要处理,比如本次发布的 Spring Cloud Alibaba 版本中除了服务注册与发现模块实现了初步的 GraalVM 支持,其他模块或多或少存在一些问题还无法直接使用 GraalVM,这块社区也在持续努力中。
社区未来规划
目前,本次发布的 Spring Cloud Alibaba 版本初步实现了对 GraalVM 支持,Sentinel/Seata/RocketMQ 等模块也正在火热支持中,社区也会在后续完成兼容适配以后进行发布,这块也是未来 2022.x 分支的短期工作重心!大家目前可以先通过社区 Examples 模块完成新版本的功能体验,云原生应用脚手架对 Spring Cloud Alibaba 的 2022.0.0.0 版本的支持也会在近期支持上线,届时大家可以通过start.aliyun.com更加便捷的构建新应用,云原生应用脚手架是一款基于 Spring Initializr 项目基础之上,支持多种工程架构、提供代码示例片段、组件更丰富、生态更开放的一款脚手架。其致力于在当下云原生时代,为广大开发者提供更简单、更高效的项目构建体验。目前该项目已经开源,Github 地址如下:
https://github.com/alibaba/cloud-native-app-initializer
另外在未来,Spring Cloud Alibaba 社区的工作重心会投入到构建 Spring Cloud 生态的微服务治理能力上。当前社区已经基于 Istio VirtualService 和 DestinationRule 流量以及安全规范实现了标签路由和服务鉴权等能力,在未来用户仅需通过编写 CRD 规则通过 Istio 控制面进行解析和下发到系统中的 Spring Cloud Alibaba 应用。便可轻松具备原生微服务治理能力。欢迎感兴趣的同学扫描下方钉钉二维码加入社区交流群,一起参与社区未来建设!
相关链接
[1]1.6.1 版本
https://github.com/seata/seata/releases
[2]4.9.4版本
https://github.com/apache/rocketmq/releases
[3]1.8.6 版本
https://github.com/alibaba/Sentinel/releases
[4]版本相关发版公告
https://github.com/alibaba/spring-cloud-alibaba/releases
[5]Spring Cloud 2022.0.0 版本说明
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2022.0-Release-Notes
[6]相关采访
https://mp.weixin.qq.com/s/GKakb5AF_T1vDjk_u7y3fA
[7]官方文档
https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.advanced.converting-executable-jars
[8]可观测事实标准 Micrometer 1.10
https://micrometer.io/docs
[9]Micrometer Tracing
https://micrometer.io/docs/tracing
[10]文档说明
https://docs.spring.io/spring-boot/docs/3.0.0/reference/html/actuator.html#actuator.observability
[11]Spring Boot 3.0 版本说明
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes
[12]OpenRewrite recipes
https://docs.openrewrite.org/reference/recipes/java/migrate/javaxmigrationtojakarta
[13]The Spring Boot Migrator project
https://github.com/spring-projects-experimental/spring-boot-migrator
[14]Migration support in IntelliJ IDEA
https://blog.jetbrains.com/idea/2021/06/intellij-idea-eap-6/
[15]示例模块
https://github.com/alibaba/spring-cloud-alibaba/tree/2022.x/spring-cloud-alibaba-examples/rocketmq-example
[16]Spring 6
https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.x/
[17]Spring Boot 3.0
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes
[18]Spring Cloud 2022.0.0
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2022.0-Release-Notes
[19]Spring Boot 3.0 相关用户文档
https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.introducing-graalvm-native-images
[20]Liberica Native Image Kit
https://bell-sw.com/pages/downloads/native-image-kit/#/nik-22-17
[21]相应文档
https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html#native-image.developing-your-first-application.native-build-tools.prerequisites.windows
[22]SCA Nacos Example
https://github.com/alibaba/spring-cloud-alibaba/tree/2022.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example
[23]OpenFeign说明文档
https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#aot-and-native-image-support
-
环球滚动:Spring Cloud Alibaba 2022.0.0.0 版本发布啦!
本次发布的SpringCloudAlibaba2022 0 0 0-RC1版本,是基于社区2022 x主干分支进行构建发布第一个Rel...
来源: 环球滚动:Spring Cloud Alibaba 2022.0.0.0 版本发布啦!
国产高端手机份额第一!卢伟冰:小米13系列好评99% 自然销量高
【天天快播报】史上第一颗6GHz CPU!i9-13900KS发布:性能涨3% 价格涨20%
理想汽车CEO曾试图接触威马沈晖?本人回应:纯属放屁!
世界新资讯:韩国第一个月球探测器发回第一张照片:地月黑白合影
每日资讯:【深度学习】常用PyTorch CUDA版本whl下载及在线安装命令
世界今日讯!「闲话随笔」势能分析法
全球短讯!MQ——如何选择消息队列
微头条丨女子乘火车遇麻将专列生意火爆 还能K歌引围观:网友直呼想买站票
全球观焦点:三级应急响应启动!寒潮预警升级 降温图又变紫了:局地降超20度
天天观天下!盖茨自曝他的主力机是三星Galaxy Z Fold4:李在镕送的
全球热文:《卧龙:苍天陨落》中配预告 声优大佬云集、虎牢关战吕布超燃
学习笔记——Mybatis中缓存机制
播报:区块链特辑——solidity语言基础(五)
热文:Python实现希尔排序、快速排序、归并排序
苹果兔年新春大片《过五关》发布!iPhone 14 Pro拍摄国粹京剧
天天看点:Matplotlib学习笔记1 - 上手制作一些图表吧!
焦点消息!最远能跑1200km 长安智电iDD正式发布:一公里不到2毛钱
世界动态:3月发售 《生化危机4:重制版》中文配音首曝:艾达王登场
世界百事通!能怎样?爱奇艺回应没限制投屏只限制清晰度被喷无耻:律师称确没违法
要闻:uwsgi 快速入门
焦点速递!学习笔记——Mybatis动态SQL
《原神》开发商米哈游上热搜:间接持股企业超百家
一度因黑客攻击被迫停服:狼人杀游戏《鹅鸭杀》服务器重新上线
天天视点!魅族新专利:可根据坐姿判断是否疲劳驾驶
全球焦点!奔驰L3级自动驾驶获批:司机可看书、喝咖啡 事故奔驰负责
PS“迷你版”Paint.net推5.0正式更新:Win7/8.1系统被放弃
央视网络春晚官宣:王冰冰、董宇辉加盟
天天快资讯:N95口罩价格大跳水 单价跌破1块钱!专家:是否戴N95口罩看场合
来自后端的愤怒!
【全球新要闻】广东东莞的刮痧板在欧美爆火:有公司年出口量可达700万片
限制投屏清晰度后:爱奇艺TV版新功能允许远程为父母付款
世界热资讯!性能领先24核i9多达24% AMD锐龙7000 3D缓存版闹乌龙:情人节没戏
全球快资讯丨为什么手机的内存都到了16GB 电脑才普及8GB呢?
秦始皇兵马俑考古重大新发现!6000多件宝物、一号坑甬道被人挖开过
腾讯E证通实现人脸核验(.Net6)
天天短讯!排查+解决 Java 内存泄漏,最基本的方法,你必须学会!
环球热推荐:看这篇就够了丨基于Calcite框架的SQL语法扩展探索
今日讯!都想来分一杯羹,低代码到底服务谁?
04-Sed操作参数
看点:799元 ROG龙鳞ACE Aimlab鼠标上市:仅重54g
2030年前我国将送人上月球 新一代载人火箭三级发动机点火成功
天天快讯:《王者荣耀》兔年限定皮肤英雄公布:马克、瑶妹喜提新装
【报资讯】1300多种首次公开!中国空间站居然种了这么多“菜”
中国第一商贩:“傻子瓜子”创始人年广九逝世 享年84岁
全球速递!【Python爬虫实战项目】Python爬虫批量下载去哪儿网站旅游数据保存本地
世界热门:辛苦加班了一年,为何年终奖比同级同事少?
天天视点!Nginx 高级篇
天天热推荐:python中argparse模块的用法
【天天快播报】使用python自动发送图片给微信好友
焦点日报:美国上万架航班停飞!初步调查:因一个数据库文件损坏
环球观察:小米13 Pro用上安卓最高端屏幕 雷军:价格最贵
4000吨巨型“充电宝”广东下水:每天可发2.4万度电
每日信息:高德地图上线一键报平安功能 路程家人一看便知
天天最资讯丨2022年新生儿爆款名字出炉上热搜:男/女孩这些名字土爆了?
环球热文:【验证码逆向专栏】某验二代滑块验证码逆向分析
开源动物行为分析实验箱(斯金纳箱)特色解析及试用条款
环球信息:爱奇艺APP投屏加钱 上海消保委点名批评:不合理、不厚道
特斯拉降价效果显著!友商会不会跟进降价?
焦点消息!阿凡达2不适合国人?国产科幻大片《流浪地球2》迎战 还有《满江红》等一次看爽
12306出现故障无法查车次 客服回应:网络问题 建议多次刷新
环球焦点!羡慕吗?微软宣布给员工“无限休假”福利:不再固定天数
C#、TS和Dart对比4.1:类型概述
全球速递!虚拟串口及其在串口转以太网中的应用
别催了,别催了,这篇文章我一次性把Shell的内容说完
环球观点:AMD RDNA3显卡架构底层细节公开!606页 应有尽有
前沿资讯!微信隐藏功能无了!群空间助手小程序宣布3月下线:号称永久保存
世界滚动:腾讯优酷后!爱奇艺限制投屏 会员只能看480P:专家发声 用户只能接受
环球快看点丨SUV比亚迪卖爆!榜一大哥月销7万+、一代神车没落
《黑豹2》女主演利蒂西娅·赖特:续集已在计划中
头条:疑似零跑C11路边停车起火 车尾疯狂往外喷火
男子开豪车带马狗羊回家过年 它们都是自己的家人:画面让网友难受
公交司机边开车边抠脚引乘客担忧 官方回应:会研究处理
焦点短讯!这些是最热门的机器学习方法!
【播资讯】通过事件总线EventBus/AsyncEventBus进行JAVA模块解耦 (史上最全)
内存、SSD价格雪崩 韩国芯片双雄终于顶不住了?
又一日系品牌拥抱比亚迪 铃木EVX概念车首发:用上刀片电池
全球视点!美国最大私人地主 大量买地引质疑!比尔盖茨回应:只为提高产量
国产家轿又一“黑马”诞生 长安逸达首发亮相
原长城汽车总裁王凤英将出任小鹏CEO 接替何小鹏?内部回应
围棋哪个国家最强?围棋哪个颜色先下?
都挺好苏明成知道自己不是亲生的是第几集?都挺好的结局是什么?
魂来枫林青的下一句是什么?魂来枫林青是什么意思?
李宁标志刺绣是真的吗?李宁标志设计含义
美的净水器好不好?净水器哪个牌子质量好性价比高?
ios7输入法怎么设置成搜狗?ios7输入法打不出汉字怎么办?
怎么修改系统启动项?修改系统启动项的方法有哪些?
新资讯:MySQL间隙锁、行锁的读写阻塞实验
win8如何找到硬件驱动程序?win8怎么进入安全模式?
港利通手机怎么样?港利通手机怎么恢复出厂设置密码?
当前播报:推特广告收入下跌严重:考虑出售15亿用户名创收
今日看点:春节正常发货:仁和N95灭菌级口罩25片15.9元发车
【全球独家】跟上Windows本步伐!苹果正开发触摸屏Mac笔记本:最早2025年发布
秒变战神!杰士邦延时避孕套大促:立减200元 不到20到手
全球新动态:文件出台!车险价格最高可再降23% 开车越稳越便宜
天天报道:TapTap 算法平台的 Serverless 探索之路
我用AI去讨债:一顿操作猛如虎 3000要回350
环球观察:不止投屏缩水 爱奇艺蓝光码率仅蓝光碟1/13 1080P也糊
4999元限量发售!雷军:小米13定制色水泥灰卖的最好
焦点关注:育碧《怒海战记》再度延期