简介
GraalVM 是高性能、云原生、多语言的 JDK 发行版,旨在减速用 Java 和其余 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python 和许多其余风行语言提供运行时。
GraalVM 作为一个运行时环境是举世无双的,它提供了多种操作模式:JVM 运行时模式、Native Image、Truffle 上的 Java(雷同的 Java 应用程序能够在任何一种上运行)。
JVM 运行时模式
在 HotSpot JVM 上运行程序时,GraalVM 默认应用 GraalVM 编译器作为顶级 JIT 编译器。在运行时,应用程序在 JVM 上失常加载和执行。
JVM 将 Java 或任何其余 JVM 原生语言的字节码传递给编译器,编译器将其编译为机器代码并将其返回给 JVM。在 Truffle 框架之上编写的受反对语言的解释器自身就是在 JVM 上运行的 Java 程序。
Native Image
Native Image 是一项翻新技术,可将 Java 代码编译成独立的二进制可执行文件或本机共享库。在本机映像构建期间解决的 Java 字节码包含所有应用程序类、依赖项、第三方依赖库以及所需的任何 JDK 类。生成的自蕴含本机可执行文件特定于不须要 JVM 的每个独自的操作系统和机器架构。
Spring Native 为应用 GraalVM 原生镜像编译器编译 Spring 利用为本地可执行文件提供反对。本文应用 JVM 运行时模式,应用 ddtrace 实现链路接入观测云。
环境版本
云服务器:4 核 8 G
Centos:7.9
git version:1.8.3.1
Maven:3.8.5
OpenJDK:17.0.3
GraalVM CE:22.1.0
DataKit:1.4.0
操作步骤
1 部署 Git
yum install -y gitgit –version
2 部署 GraalVM
cd /usr/local/df-demowget https://github.com/graalvm/gr… -zxvf graalvm-ce-java17-linux-amd64-22.1.0.tar.gz
编辑 /etc/profile,减少上面内容。
export JAVA_HOME=/usr/local/df-demo/graalvm-ce-java17-22.1.0export CLASSPATH=$JAVA_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH
native-image 装置配置。
gu install native-imageyum install zlib-devel -y
3 部署 Maven
cd /usr/local/df-demowget https://mirrors.bfsu.edu.cn/a… -zxvf apache-maven-3.8.5-bin.tar.gz
编辑 /etc/profile,减少上面内容。
export MAVEN_HOME=/usr/local/df-demo/apache-maven-3.8.5 export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin # 批改
source /etc/profile
cd /usr/local/df-demo/apache-maven-3.8.5/conf
编辑 settings.xml,减少如下内容。
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus…</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus…</url> </mirror> </mirrors>
4 创立 Spring Boot 我的项目
进入 spring.io,抉择 Spring Native 和 Spring Web,Java 抉择 17,Project 选 Maven,Project Name 能够本人定义,点击『GENERATE』
减少 Application 和 Controller,如示例我的项目 springboot-native-demo。
5 我的项目打包
上传我的项目到云服务的 /usr/local/df-demo 目录,执行打包命令。
cd /usr/local/df-demo/springboot-native-demomvn -Pnative -DskipTests clean package
查看 target 目录,有二进制文件 springboot-native-demo 和 springboot-native-demo-1.0-SNAPSHOT-exec.jar 文件。
6 链路接入
6.1 装置 Datakit
登录『观测云』,顺次进入『集成』->『DataKit』->『Linux』,点击“复制”图标复制装置命令。
登录 Linux 服务器,执行复制的命令。
6.2 开明采集器
开明 RUM,须要让用户近程拜访到 DataKit 的 9529 端口,编辑上面文件。
/usr/local/datakit/conf.d/datakit.conf
批改 listen 的值是“0.0.0.0:9529”。
开明 ddtrace 采集器。
cd /usr/local/datakit/conf.d/ddtracecp ddtrace.conf.sample ddtrace.conf
6.3 重启 DataKit
systemctl restart datakit
6.4 启动利用
cd /usr/local/df-demo/springboot-native-demo/target java -DspringAot=true -javaagent:/usr/local/datakit/data/dd-java-agent.jar -Ddd.service=spring-native-demo -Ddd.env=dev -Ddd.agent.port=9529 -jar springboot-native-demo-1.0-SNAPSHOT-exec.jar
6.5 链路上报
拜访利用的接口 curl localhost:8090/ping,上报链路数据。
登录『观测云』->『利用性能监测』,可看到 spring-native-demo 服务。
在『链路』界面中,能够查看到链路详情、火焰图等。