亚马逊AWS官方博客
智能化 Graviton 迁移:Amazon Q CLI 加速应用架构现代化
![]() |
在云计算成本优化与性能提升的双重压力下,AWS Graviton 处理器正逐渐成为技术领导者们的战略选择。这款基于 ARM 架构的处理器承诺提供更高的性价比和更出色的能效,但许多开发团队面临的现实问题是:如何高效、低风险地将现有应用迁移到这一全新架构平台?
Amazon Q CLI 的出现恰如其分地解决了这一挑战。作为 AWS 最新推出的智能化 AI 助手,Q CLI 将复杂的架构迁移转变为可预测、可操作的工程任务。对于 Java 这类“一次编写,到处运行”的语言,虽然理论上跨架构迁移应当顺畅,但实际过程中常常隐藏着各种依赖兼容性问题和性能优化空间。
在这篇技术博客中,将通过一个实际的 Java 演示应用为例,带您一步步探索如何借助 Q CLI 的强大功能,轻松识别潜在的迁移障碍,获取针对性的解决方案建议,并最终实现应用在 Graviton 平台上的顺利部署与运行。从依赖分析到代码适配,从构建多架构镜像到应用部署,这将是一次从 x86 到 ARM 架构的完整迁移实战之旅。无论您是考虑大规模微服务迁移,还是评估关键业务应用的架构转换,这篇文章都将为您提供实用的技术指导和决策参考。
让我们一起揭开 Java 应用 Graviton 迁移的神秘面纱,探索 Q CLI 如何成为您迈向更高效云计算架构的得力助手。
![]() |
AWS Graviton 简介
AWS Graviton 是亚马逊云服务自主研发的基于 ARM 架构的处理器系列,代表了云计算领域的重要技术创新。自 2018 年首次推出以来,Graviton 处理器已经历 4 代演进,每一代都带来显著的性能提升和架构优化。
![]() |
核心特点
- 定制化 ARM 架构:AWS Graviton 基于 ARM Neoverse 核心设计,但经过 AWS 专门优化,以满足云工作负载的独特需求。全新发布的 Graviton4 处理器拥有高达 96 个高效能核心,专为云原生应用设计。
- 全面的实例类型支持:Graviton 处理器支持多种 EC2 实例类型,包括通用型、计算优化型、内存优化型、存储优化型以及加速计算实例,几乎覆盖所有主流云计算场景。
- 深度云服务集成:除 EC2 外,Graviton 已广泛应用于 Amazon RDS、ElastiCache、Amazon EMR、Lambda 等多种 AWS 托管服务,提供一致的高性能体验。
显著优势
- 卓越的性价比:与同代 x86 处理器相比,Graviton 实例可提供高达 40% 的性价比提升,直接降低客户的计算成本。对于适配良好的工作负载,这一优势尤为明显。
- 能效领先:Graviton 处理器采用先进的 ARM 架构设计,能耗显著低于传统 x86 处理器,每瓦性能更高,不仅降低运营成本,也符合可持续发展理念。
- 优化的性能特性:Graviton3 在机器学习工作负载上性能提升高达 3 倍,浮点性能提升 2 倍,加密性能提升 2 倍,同时内存访问速度提升 50%,为各类应用提供全面性能加速。全新的 Graviton4 处理器具有96 个 Neoverse V2 内核、每个内核 2MB 的 L2 缓存和 12 个 DDR5-5600 通道共同作用,使得 Graviton4 与 Graviton3 相比,处理数据库的速度提升多达 40%,处理 Web 应用程序的速度提升 30%,处理大型 Java 应用程序的速度提升 45%。
- 增强的安全特性:内置内存保护技术和加密加速器,为云工作负载提供额外的安全保障层,满足企业对数据安全的严格要求。
Graviton 处理器代表了 AWS 在云计算基础设施领域的长期战略投入,通过自研芯片打造差异化竞争优势,同时为客户提供更具吸引力的计算选择。随着云原生应用的普及和多架构开发实践的成熟,Graviton 已从早期的实验性选项发展为许多企业云计算战略的核心组成部分,成为追求高性能、高效率云计算的理想平台。
![]() |
来源:https://www.aboutamazon.com/news/aws/graviton4-aws-cloud-computing-chip
快速开始使用 Q CLI
什么是 Amazon Q CLI?
Amazon Q CLI 是一款命令行工具,它将 Amazon Q 的强大功能引入命令行界面。借助 Amazon Q CLI,用户可以完成以下或更多工作:
- 获取 AWS 服务的帮助与推荐建议
- 诊断并解决 AWS 资源问题
- 生成并解析 AWS CLI 命令
- 以对话方式与 AI 助手交互
使用前提
开始实验前,请确保已经在本地电脑安装了必要的工具
- Amazon Q CLI is installed, instructions: 安装适用于命令行的 Amazon Q
- AWS CLI 已安装并配置,操作说明:安装或更新最新版本的 AWS CLI
您拥有适当的 AWS 权限,可以创建和管理实验中使用到的资源。
开始和 Q CLI 进行对话
在终端会话中,使用以下命令开始与 Q CLI 进行对话:
然后,提出问题即可看到回复:
![]() |
将应用程序从 x86 迁移到 ARM 架构可能会涉及兼容性挑战,Amazon Q CLI 旨在帮助软件开发人员将其应用程序迁移到 AWS Graviton 处理器并进行优化。Q CLI 通过以下方式解决这些挑战:
- 自动化分析 x86 和 ARM 架构之间的代码兼容性
- 为代码修改提供智能建议
- 协助构建多架构容器镜像
- 简化部署和验证流程
- 加速整体迁移工作流程
该工具集成到开发人员现有的工作流程中,显著减少了将应用程序(Java、Golang、C++ 等)适配到 Graviton 处理器上高效运行所需的时间和精力。
将 Java 应用迁移到 Graviton 实例的步骤
在开始与 Amazon Q CLI 进行交互之前,让我们深入了解将基于 Java 的应用程序迁移到 AWS Graviton EC2 实例的关键基础知识。
Java 作为一种卓越的跨平台编程语言,其最大优势在于“一次编写,到处运行”的特性,编译后的 Java 代码可在任何支持 Java 的平台上无缝执行,无需重新编译。这是因为 Java 应用程序被转换为平台无关的字节码,能够在任何 Java 虚拟机(JVM)上运行,完全不受底层硬件架构的限制。
Java 在 Arm64 架构上获得了全面优化支持,通常能够在 Graviton 实例上实现“开箱即用”的出色性能。尽管 Java 8 在 Arm 处理器上已完全兼容,但实践表明,许多客户只有在升级到 Java 11 后才能充分释放 Graviton 平台的全部性能潜能。作为理想选择,您可以考虑采用 Amazon Corretto —— 一个免费、多平台、企业级的 OpenJDK 发行版,专为 Graviton 驱动的实例进行了深度优化,确保您的 Java 应用程序能够最大限度地发挥 ARM 架构的优势。
Demo 应用介绍
本文中使用一个基于 Java 的聊天机器人演示应用,专为展示 AWS Graviton 处理器迁移而设计。该应用程序通过 JNA (Java Native Access) 调用本地 C++ 库来实现 AI 推理功能。
应用架构:该应用由以下主要组件构成:
- Java Web 服务:基于 Java 的 HTTP 服务器,提供 REST API 接口
- 本地库集成:通过 JNA 框架调用 C++ 编写的本地库
- 动态库加载机制:根据系统架构自动选择合适的本地库文件
- Docker 容器化:支持在不同架构上的容器化部署
技术特点:
- 跨架构兼容性:支持 x86_64 (AMD64) 和 ARM64 (Graviton) 架构
- 动态库选择:根据运行环境自动选择适合的本地库
- REST API:提供简单的 HTTP 接口用于文本生成
- 容器化部署:使用 Docker 实现一致的部署体验
关键文件:
- Main.java:应用程序入口点,包含 Web 服务器和库加载逻辑
- libchatbot-amd64.so:x86_64 架构的本地库
- Dockerfile:容器构建配置文件
API 使用:
- 应用提供了一个简单的 REST API 用于文本生成,例如:
本文后续内容将展示如何设计一个能够无缝运行在不同 CPU 架构上的 Java 应用,同时保持代码的可移植性和灵活性。
如何将 Java 应用迁移到 Graviton 实例
将一个原来在 x86_64 架构下部署和运行的 Java 应用迁移到 Graviton 实例(Arm64 架构),通常可参考以下步骤完成:
- 通过 Porting Advisor for Graviton 扫描 Java 源代码,并得到修改建议;
- 将代码中通过 JNI/JNA 调用的 *.so 共享库文件(通常采用 C/C++编写),基于 Arm64 架构进行编译构建;
- 修改 Dockerfile 中架构相关的内容,添加 Arm64 相关内容,例如下载某个文件时选择 Arm64 架构;
- 构建基于 Arm64 架构的容器镜像;
- 通过构建好的容器镜像,在 Graviton 实例上启动容器和应用;
关于 Java 应用程序在 Graviton 实例的最佳实践,可以通过查看 AWS Graviton 技术指南 获取更多详细信息。
步骤 1:修改源文件适配 Arm64 架构
以 java-demo 目录作为工作目录,从该路径启动 Q CLI 对话窗口,输入提示词:
我有一个Java 应用(源代码保存在 java 目录下)目前是在 x86 架构的 EC2 实例通过容器进行部署,请评估该应用的 Java 代码,给出迁移到 AWS Graviton3 实例需要修改的地方;在我确认后可以修改代码,修改的文件请做好备份。
可以看到 Q CLI 开始思考并逐步进行任务分解和执行:
![]() |
最后,Q 将给出一些总结,描述将在源代码评估报告:
![]() |
在阅读完 Q 提供的修改建议后,如果确认无误,请让 Q 继续进行代码修改:
![]() |
Q 将修改相关源代码文件以适配 Arm64 架构:
从上面截图可以看到,Q CLI 将源代码修改为自适应 x86_64 和 Arm64 架构,这将有利于通过维护一份代码来支持 x86_64 和 Arm64 多架构。
最后,Q 将提供修改内容摘要并给出后续步骤建议:
![]() |
步骤 2:启动一个 Graviton 实例完成后续工作
以下步骤需要在一个 Arm64 实例完成,以 c7g.xlarge (Graviton3) 为例:
- 为 Arm64 架构编译构建 libchatbot.so 库文件;
- 打包 Java 应用程序,构建 Arm64 架构的容器镜像;
- 启动容器和应用;
- 进行基本功能验证等
因此,我们将让 Q CLI 通过调用 AWS CLI 来启动一台 c7g.xlarge 实例。
在 Q CLI 对话窗口输入下面提示词:
我已在本笔记本电脑配置好AWS CLI。请使用AWS CLI查询默认区域,并在该区域启动一台c7g.xlarge实例,配置80G gp3 EBS卷、Ubuntu 22.04操作系统,使用默认VPC、默认安全组以及名为tempkey的密钥对。实例成功启动后,我们将继续后续步骤。
注意:在 Prompt 中,请将 密钥对 名称替换为您常用的密钥对名称(示例中为 tempkey),并确保 Q 能在本地使用该密钥对通过 ssh
命令登录 EC2 实例。
约 2~3 分钟后,Q 将根据需求成功创建 c7g.xlarge 实例并提供了实例信息。
![]() |
步骤 3:编译 Arm64 架构的 libchatbot.so 库文件
接下来,我们将让 Q 在新创建的 c7g.xlarge 实例上编译 Arm64 架构的库文件,文件名为 libchatbot-arm64.so。
请在该实例上编译libchatbot-arm64.so库文件。libchatbot源代码位于本地目录gdd-chatbot-main/chatbot.cpp中,请勿修改。您可以参考源代码目录中的commands.txt和CMakeLists.txt文件,在我们刚启动的c7g实例上构建libchatbot-arm64.so。然后将该库文件下载到本地java/chatbot-libs目录,该目录已包含amd64架构的.so文件。
Q 启动思考过程:
![]() |
开始执行后,可看到编译工具集的安装、程序编译构建等进度信息:
![]() |
![]() |
![]() |
![]() |
编译完成后,Q 将 libchatbot-arm64.so 文件下载到本地,并提供了执行摘要:
![]() |
并且,我们可以在本地文件夹中看到新生成的 libchatbot-arm64.so:
![]() |
步骤 4:在 Graviton 实例上启动容器和 Java 应用
Q 已协助我们完成 Java 源代码修改、Dockerfile 多架构适配(x86_64 和 Arm64)、编译 Arm64 架构的库文件等工作,目前一切准备就绪。 接下来请 Q 在 Graviton 实例上通过容器部署该 Java应用,并验证基础功能。
请将java目录下的应用以容器形式部署到这台c7g实例
Q 启动后,您可观察到构建 Docker 镜像、启动容器等过程:
![]() |
![]() |
步骤 5:验证 Java 应用的基本功能
将下面提示词发送给 Q,验证 Java 应用的 Chatbot 问答功能:
使用这个命令验证聊天功能:
curl -X POST -H "Content-Type: application/jso" -d '{\"Prompt\":\"Tell me about AWS Graviton processors\", \"Tokens\":50}'
http://localhost:8081/generateResponse
这条测试命令预期将返回 50 个 token 的响应,并给出一些本次迁移过程和效果的总结性信息:
![]() |
总结
在上面的 Q CLI 演示中,可以看到我们仅通过 Q CLI 的聊天界面作为操作平台,就完成了一个 Java 语言编写的 Demo 应用迁移到 Graviton 实例的全过程。在整个迁移过程中,我们无需亲自修改任何代码,也不必手动通过 ssh 命令登录到 EC2 实例进行操作。Q 以自动化的方式帮我们完成了所有必要步骤,显著加速了技术验证工作,将原本复杂的迁移流程转变为一次流畅的体验。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。
相关内容推荐
AWS Graviton4 新品发布
Amazon EC2 新实例:由 Amazon Graviton4 提供支持,且配备 NVMe SSD 存储
现已推出:由 Graviton4 提供支持的内存优化型 Amazon EC2 X8g 实例
基于 AWS Graviton4 的 Amazon EC2 R8g 实例:Amazon EC2 中的最高性价比
您可以通过 AWS Graviton 处理器 页面获取更多信息,并在 AWS Graviton 技术指南 页面阅读更多最佳实践。
Graviton 技术博客精选
- 中文
AWS Graviton4 加速 Apache APISIX 消息处理
AWS Graviton3 加速 Flink 作业执行:Benchmark
AWS Graviton3 加速 Spark 作业执行:Benchmark
在 AWS Graviton 上运行大语言模型:CPU 推理性能实测与调优指南
StarRocks on AWS Graviton3,实现 50% 以上性价比提升
Milvus 使用 Amazon Graviton3 实例实现高达 31% 的性价比提升
基于 EMR on EKS 的 Spark 集群通过 Karpenter、Spot、Graviton 实现成本优化
UnrealEngine 5 结合 AmazonGameLift 在 Graviton3 上的实践
使用 Graviton 4 构建 UE5 Dedicated Server 获得极致性价比
- 英文
Video Encoding on Graviton in 2025
Accelerate NLP inference with ONNX Runtime on AWS Graviton processors
Running GenAI Inference with AWS Graviton and Arcee AI Models
Accelerate your AWS Graviton adoption with the AWS Graviton Savings Dashboard
Migrating from x86 to AWS Graviton on Amazon EKS using Karpenter
Using Amazon APerf to go from 50% below to 36% above performance target
第三方技术文章推荐
Uncovering the Real-World Performance of AWS Graviton4 with ClickHouse
Boost AdTech Performance with AWS Graviton4: 6X Throughput & Faster Latencies
其他产品和服务推荐
- S-BGP 是我们在由光环新网运营的亚马逊云科技中国(北京)区域和由西云数据运营的亚马逊云科技中国(宁夏)区域推出的一项成本优化型网络服务,旨在帮助我们的客户降低经过互联网传输数据出云(Data Transfer Out)的费用。 如果您想申请亚马逊云科技中国区域的 S-BGP 服务,请联系您的客户经理获取进一步帮助。