使用GraalVM的native-imag重新打包jfinal

[背景]

服务器扩容的要求

目前分布式扩容方案主要分为2种, 1基于容器 2基于服务器

1基于容器 在并发量高时启动新的容器,在并发量低时关闭容器, 比较主流 缺点时服务器不能关机,仍然需要缴纳电费

2基于服务器 在并发量高时远程唤醒服务器,在并发量低时远程关闭服务器,非主流,但是省电

[需求]

基于服务器扩容,要求服务器从开机到程序启动成功不能操作2s 即服务器启动0.7s,将程序服复制到服务器上0.6s,程序启动0.6s


服务器启动0.7s 已经实现 

1.bios采用EFI BIOS,没有post上电自检时间

2.将gur启动设置为0s

3.裁剪linux,取消无用模块,取消显示驱动,实际中不需要显示驱动,ssh可以搞定一切

实际测试 0.6s


将程序服复制到服务器上0.6s

在千兆网络下测试 0.5s


程序启动0.6s 也已经实现

有2种方法

1.使用方舟编译器编译成二进制文件,测试结果 方舟编译器的运行库没有开源,放弃


测试视频

https://www.bilibili.com/video/bv1Qt4y1i7MT

2.使用graal vm+native-image组合 测试成功

测试视频

https://www.bilibili.com/video/bv1AV411m7yk


[spring-boot]

github地址

https://github.com/jonashackt/spring-boot-graalvm

这是1个spring-boot和graal vm的组合,jonashackt测试启动时间时0.7s,但是我却始终测试不成功,学习相关知识后,我决定使用


[jfinal]

graal vm+native image+jfinal的组合,并且测试成功了 如果jfinal仅仅只有1个hello接口,启动时间是0.6s,加入微服务的相关组件,预计启动时间不会超过0.7s

打包和启动jfinal的具体项目如下

#jfinal项目通常生成一个tar.gz的包

ee-jfinal-4.9-hello-1.0-release.tar.gz

#解压查看目录结构

tar -xf ee-jfinal-4.9-hello-1.0-release.tar.gz 

cd ee-jfinal-4.9-hello-1.0/

#tree #结构十分精简,因为这是我写一个测试项目

├── jfinal.sh
└── lib
    ├── ee-jfinal-4.9-hello-1.0.jar
    ├── javax.servlet-api-4.0.1.jar
    ├── jboss-logging-3.3.2.Final.jar
    ├── jfinal-4.2.jar
    ├── jfinal-undertow-1.6.jar
    ├── undertow-core-2.0.19.Final.jar
    ├── undertow-servlet-2.0.19.Final.jar
    ├── xnio-api-3.3.8.Final.jar
    └── xnio-nio-3.3.8.Final.jar

#获取cp

CP=`find lib | tr '\n' ':'`

#获取GRAALVM_VERSION

GRAALVM_VERSION=`native-image --version`
echo "[-->] Compiling Spring Boot App '$ARTIFACT' with $GRAALVM_VERSION"

#设置ARTIFACT 

ARTIFACT=ee-jfinal-4.9-hello-1.0

#指定MAINCLASS

MAINCLASS=demo.DemoConfig

#测试启动

java -cp $CP $MAINCLASS

打包

native-image \
  -J-Xmx4G \
  -H:+TraceClassInitialization \
  -H:Name=$ARTIFACT \
  -H:+ReportExceptionStackTraces \
  -Dspring.native.remove-unused-autoconfig=true \
  -Dspring.native.remove-yaml-support=true \
  -cp $CP $MAINCLASS;

启动,启动时间是0.6s

./ee-jfinal-4.9-hello-1.0

测试启动时间 是0.6s,在真是的服务器上测试,启动时间或许更短


如此以来,基于服务器扩容方案骨架就已经有了

评论区

SuperEric

2020-10-05 19:18

不明觉厉!!

热门分享

扫码入社