Micronaut + GraalVM 是不是真的香
微服务规模大了以后,传统build 的docker image就显得非常臃肿,启动慢,体积大,非常不利于scale, 资源消耗也大。一般提高方法就是使用轻量级模块注入,用什么,加什么, 并且不用大的框架,像Spring, Spring boot就 非常不推荐在为服务使用。。。
经过上面优化,性能会好一些,但没啥惊人变化, 因为base image还是openjdk,依赖注入,反射,注解之类 还是会降低启动速度。
GraalVM(https://www.graalvm.org/) GraalVM作为一款新型通用的虚拟机,不废话,单刀直入解决问题,启动快50倍,内存消耗少5倍。
为啥它这么牛,因为它用AOT(ahead-of-time)编译,可以快速启动和低内存消耗。官方列的优点:
高效 AOT 编译 (快速启动) 多语言 高级工具(调试,监控,profile等等) 后两项还没有特别感觉,因为公司后台主要用Java/Kotlin/Grrovy,没有多语言问题。高级工具这些,公司有统一的stack,也不准备用。
Micronaut(https://github.com/micronaut-projects/micronaut-core) Micronaut是一款现代, 基于JVM的全栈Java框架,适用于模块化搭建,易于测试的JVM应用,支持Java, Kotlin和Groovy. 它提供了编译时的依赖注入和AOP处理能力,并最小化反射和动态代理的使用。它应用有着更快的启动速度和更低的内存占用。
Micronaut + GraalVM (POC) 用Micronaut template创建一个App
version: 2.3.3 language: Java 11 build: gradle test: jUnit feature: netty-server 创建一个简单的API
@Controller("/hello") public class HelloController { @Get("/") public String index() { return "hello from Micronaut + GraalVM"; } } 添加lib到build.