优秀的编程知识分享平台

网站首页 > 技术文章 正文

Spring Boot 的高性能平替框架

nanyue 2025-03-10 18:59:30 技术文章 1 ℃

介绍

在上一篇文章聊聊 Java 本地原生应用开发中,我们聊到在云原生的大潮下,Java 也在向着云原生、本地化变革。在这些变革中,除了 Spring Boot 推出了适配 GraalVM 的 Spring Boot 3 以外,Quarkus 框架也是异军突起,收获了不少粉丝。

而另一个 Micronaut 虽短暂落后,但却有着更猛的发展势头。截至 2024.04.30 ,Micronaut 核心框架已发布到版本 4.4.7,且一直保持着高强度的更新优化。

Micronaut 官网的介绍中,Micronaut 框架是一个现代的、基于 JVM 的、全栈 Java 框架,旨在构建模块化、易于测试的 JVM 应用程序,并支持 Java、Kotlin 和 Groovy 语言。

对这些语言的支持,不仅是由于框架所依赖的 JVM —— GraalVM 能力的支持,也是由于 Micronaut 框架的团队成员的经历才支持这些语言:团队成员曾参与 Grails 框架工作。

而 Grails 框架是一个基于 Groovy 语言的 Web 应用开发框架。具有快速开发、约定优于配置、集成 ORM和支持插件等特点。

Micronaut 框架开发时,团队又从多年来使用 Spring、Spring Boot 和 Grails 框架构建经验,以及从单体应用到微服务应用实践中所吸取的经验中获得了灵感。

这些经验,使得 Micronaut 的框架设计得与 Spring 的使用体验非常接近,但整体又比 Spring 更清爽。这也是我个人非常推崇 Micronaut 框架的原因。

另一方面,没钱的项目是不能长久的。

所以,Micronaut 核心团队通过 Micronaut 基金会的支持继续开发和维护 Micronaut 项目。这就为项目的长期发展奠定了稳定的基础。

特性

Micronaut 框架旨在提供构建 JVM 应用程序所需的所有工具,包括:

  • 依赖注入和控制反转 (IoC)
  • 面向方面编程 (AOP)
  • 合理的默认值和自动配置

使用 Micronaut 框架,我们可以构建消息驱动的应用程序、命令行应用程序、HTTP 服务器等。

而对于微服务,Micronaut 框架还进一步提供支持:

  • 分布式配置
  • 服务发现
  • HTTP 路由
  • 客户端侧负载均衡

有了这些支持,使用 Micronaut 框架构建云原生应用将更简洁。

改进

如果介绍中所提到的,Micronaut 框架吸引了 Grails 和 Spring 框架的优点,也同时尽力去避免这些框架的缺点,以做到以下特性:

  • 快速启动时间
  • 减少内存占用
  • 最小化反射的使用
  • 最小化代理的使用
  • 没有运行时字节码生成
  • 易于单元测试

这是都是通过在编译时预先计算框架基础设施来实现的,减少了应用程序运行时所需的逻辑。除去框架本身的设计外,通过 GraalVM 的特性,制作 Native Image 本地应用,能更一步提升应用性能。

经验

在我们的商业化实践中,将 Spring Boot 1.x 或 2.x 的项目变更为 Micronaut 项目,收益是远远高于变更为 Spring Boot 3 项目的。

在变更 Spring Boot 3 的过程中,你需要解决大量 Spring 相关框架的升级问题,仅这些框架适配代码的变更,就会让你焦头烂额。这也导致我们的升级失败,最终转投变更为 Micronaut 框架的基本原因。

变更 Micronaut 框架过程中,大体可以分为几步做:

  • o 1 使用 Micronaut 提供的 Spring 兼容插件,继承 Spring 的相关注解,分区域将注解、代码等逐步变更为 Micronaut 框架相关的注解、实现
  • o 2 依赖框架的替换,比如:选择继续使用自己熟悉的 MyBatis 或者替换为其他 Micronaut 支持的持久层框架;认证框架替换为 Micronaut 的实现等等
  • o 3在 Spring 相关注解、实现替换完成后,移除 Spring 兼容插件

而一个新项目如果选择 Micronaut 框架,可以 90% 的继承团队 Spring Boot 经验,几乎没有学习成本。但却能带来很高的性能提升和资源降低。

后续,将更多的分享 Micronaut 框架相关的开发经验以及云计算相关的经验分享。

最近发表
标签列表