Java 应用在云计算时代面临“冷启动”慢、内存占用高、预热时间长等问题,无法很好的适应 Serverless 等云上部署模式,GraalVM 通过静态编译、打包等技术在很大程度上解决了这些问题,同时针对 GraalVM 的一些使用限制,Spring 和 Dubbo 等主流框架也都提供了相应的 AOT 解决方案。 本文我们将详细分析 Java 应用在云时代面临的挑战,GraalVM Native Image 是如何解决这些问题,GraalVM 的基本概念与工作原理,最后我们通过一个 Spring6 + Dubbo3 的微服务应用示例演示了如何将一个普通微服务应用进行静态化打包。
在线应用的诊断一直是日常维护中的难点和痛点,2018年下半年,Alibaba 开源了 java 应用诊断工具 arthas ,让 java 应用的诊断能力上了一个台阶。作为基础架构团队,我们自然也对它非常感兴趣。研究后发现,arthas 确实是一个非常优秀的 java 诊断工具,但是也存在一些不足。 一是 arthas 更像是一个工具,而不像一个产品。如果要使用它,首先要登录相关机器,然后在机器上下载 arthas,再执行一些命令来运行。这整个流程里,下载可能出现问题,运行 arthas 也需要具有目标进程相应的权限,还需要先看看对应进程id等等...这些确实只是一些小问题,但也可以选择让这些问题不存在,让整个使用过程更加流畅。 二是 arthas 缺少 web 界面。命令行界面用起来确实很酷,但不可否认在相当一部分情况下 web 界面更直观更友好,很多需要查文档的情况在 web 界面下都可以直接操作,降低了使用门槛。 三是 arthas 所有功能都针对单台机器,实际上很多时候我们需要考虑和观察整个应用的运行情况,需要一个应用级的视角。 四是 arthas 是一个独立的工具。