让性能腾飞!亚马逊云科技的 Java 云端之旅

news2024/11/28 16:02:28

在上篇文章中,我们为大家介绍了亚马逊的 Java 生态及丰富的开发工具、框架。本文将分享亚马逊的 Java 架构、迁移途径,并分享一个具体实例,介绍如何使用机器学习来构建 Java 应用和提升 Java 性能。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

Java 开发的平台之选

1 为 Java 应用提供多种开发和部署选择

  1. 计算:EC2、Lambda、ECS、EKS、Fargate
  2. 存储:S3、Elastic File Service
  3. 网络:Classic Load Balancer、Application Load Balancer、Network Load Balancer、Security Groups、Virtual Private Cloud
  4. 数据库:RDS、DynamoDB、Aurora、Neptune
  5. 管理:Auto Scaling、CloudFormation、Systems Manager、CloudWatch

众所周知,现在很多开发者基于云平台进行 Java 应用的开发和部署。亚马逊云科技提供了一整套完善的选项来帮助开发者更好的开发。例如计算领域的虚拟机、容器、无服务器,存储领域的对象存储和文件系统;网络领域不同层级的负载均衡和访问控制机制;数据库领域的各种关系型和非关系型数据库;以及全方位多角度的管理和监控。

2 执行环境

在 Java 的执行环境方面,开发者通常会选择三个主要的计算方式,包括虚拟服务器 (Amazon EC2)、容器 (Amazon ECS、EKS 和 Fargate)、无服务器计算 (Amazon Lambda)。无论是哪种方式,亚马逊都在不断添加新的能力来帮助开发者进行更好的 Java 构建。

3 无服务器应用

无服务器计算在近年来成为越来越多开发者的首选。Amazon Lambda 管理所有的基础设施,以将代码放在可用性高的容错型基础设施上运行,从而使开发者能够专注于构建有差别后端服务。使用 Lambda,开发者不必在补丁发布时更新底层操作系统 (OS),或随着使用量的增加而为调整大小或添加新服务器担心。Amazon Lambda 无缝部署代码、执行所有的管理、维护和安全补丁操作,并通过 Amazon CloudWatch 提供内置记录和监控。

使用 Amazon Lambda,不需要了解任何新语言、工具或框架。开发者可以使用任何第三方库,甚至是本机库。你还可以将任何代码(框架、软件开发工具包、库等)打包为 Lambda Layer,并在多个函数之间轻松进行管理和共享。Lambda 原生支持 Java,并提供 Runtime API,允许开发者使用任何其他编程语言来编写函数。

Lambda 函数是在完全托管的运行时环境中执行函数代码,因此每次应用程序扩展以创建新的执行环境时都会进行初始化。在 2022 年 re:Invent 大会上,新功能 Amazon Lambda SnapStart 正式发布。利用 SnapStart 可将 Lambda 函数冷启动持续时间降低至不到 200 毫秒,延迟率降低 90%,使得冷启动跟非冷启动(缓存命中)几乎没有区别。目前这项功能适用于使用 Corretto 运行时的 Java 函数,包括 Spring Boot、Quarkus、Micronaut 和其他 Java 框架的应用。

Java 应用迁移上云

开发者除了选择云平台直接进行 Java 开发之外,还有很多遗留的应用可能是在本地或者在其它环境中运行,而越来越多的开发者需要将这些 Java 应用迁移上云。而基于 Java 上云的现代化应用改造也是亚马逊逐步帮助企业和开发者迁移应用上云的重要途径。

 传统的 Java 企业应用架构

上图传统的三层应用架构,包括表示层、业务逻辑层、数据层,分别对应 Web 服务器、应用服务器、数据库服务器,也有传统的应用软件帮助开发者构建传统的三层架构,像 JavaBeans、Web Services 等等。

 现代三层应用架构

随着云服务架构的不断提升和不断演进,整体上讲,与传统的三层架构也有非常匹配的对应关系。虽然同样包括表示层、业务逻辑层和数据层,但是实现方式有非常明显的变化。

首先在三层之间,是通过 API 进行通信。其次在业务逻辑层通过事件的方式进行消息的传递,同时在系统架构中构建消息队列实现后端数据的通信和交互。另外数据层面,也有面向不同工作负载的关系型和非关系型数据库选项来契合前端的应用。

通过事件、消息队列等技术形成了现代化三层架构。那么如何将传统三层应用架构向现代化三层架构迁移呢?亚马逊云科技已经为大家提供了方便快捷的迁移方案。通过 App2Container,可以将已有的应用进行容器化,并且迁移上云。在 A2C 产品中,其核心首先是容器化现有应用,其次支持不同的部署源,比如一些本地环境,像 EC2 或者 VM 等等,把他们的应用以容器的方式在云端部署。通过将 Java 应用进行容器化处理,部署的目标是基于亚马逊的容器服务,包括 ECS、EKS、ECR 等等。结合开发者工具进行整体的开发生命周期管理,使得整个云端容器化部署更加便捷,也使得传统 Java 应用向云端迁移获得更加良好的效果。

 App2Container – 容器化现有应用并将其迁移上云

通过机器学习加速 Java 开发

机器学习一直是近年来开发者非常关注的话题,我们也在探索如何通过机器学习帮助开发者尤其是 Java 开发者进行更快更好的高质量开发,这也是亚马逊云科技一直以来着力解决的问题,希望能够为开发者提供便利。

 Java 应用开发之旅

上图是典型的 Java 应用开发之旅。包括代码编写、代码审核、安全和操作审核、观测和漏洞缓解。通常上述四个阶段构成了典型的 Java 应用开发之旅。其实也适用于其它语言的开发过程。

在这个过程中,我们也发现了一系列挑战,大量消耗开发者的时间和精力:

  • 如何帮助开发者识别有问题的代码,尤其是编译通过,但运行结果不符合预期的情况下,如何找到有问题的代码,其实是非常耗费精力的过程;
  • 在行业内部或者标准化的环境中有些代码分析工具,缺乏高质量的代码分析环境,也缺乏很好的实践的集成,使得开发者在使用这些工具时感到费时费力。
  • 如何发现并修复昂贵的代码行,这同样值得关注。

而亚马逊云科技一直致力于解决上述问题,在 Java 开发的后三个阶段,已经引入了机器学习的审核和观测机制,包括 Amazon CodeGuru 和 Amazon DevOps Guru,帮助开发者进行代码审核、安全操作审核,以及观测和漏洞缓解。通过这两个人工智能驱动的代码服务,可以极大地提高开发者的效率,来帮助开发者更好地发现代码中的问题,提升代码的性能。

 ML 辅助的审核和观测

 Amazon CodeGuru

Amazon CodeGuru 是基于机器学习的代码审核和性能建议服务。它本身分为两个部分,第一个部分叫做 CodeGuru Reviewer (静态代码分析器),第二部分叫做 CodeGuru Profile (代码的性能分析器),通过这两大功能可以帮助开发者进行具有智能建议的内置代码审查、检测和优化昂贵的代码行以及识别延迟和性能改进。

 Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer 主要用于代码审核,通过亚马逊云科技的最佳实践,来帮助开发者更加正确地使用 Amazon API。同时可以检测很多潜在的问题,比如如何构建并发机制、如何审核避免资源泄漏、避免敏感信息泄露,以及通过数据挖掘的方法来发现缺陷代码,从而提升代码质量。

 Amazon CodeGuru Reviewer 代码审核效果

上图为 Amazon CodeGuru Reviewer 代码审核效果。整个 Reviewer 分为四个层级,包括代码、建议、修复、开发者反馈。后端通过机器学习的审核机制,可以推荐相关的修改建议,开发者可以根据修改建议对代码进行针对性地修复来提升代码质量。

而对于 Amazon CodeGuru Profiler,它是性能分析可视化,在整个性能分析可视化过程中也包括四个部分:Why、What、How、Where。通过性能分析可视化,生成非常直观的火焰图,其中会针对开发者的代码进行机器学习性能改进分析。

其实还有一个有趣的问题,就是如何使用机器学习来编写代码。其目的不是为了取代开发者,而是帮助开发者进行更快和更好的构建。

在 2022 re:MARS 上,亚马逊云科技推出了全新的服务:Amazon CodeWhisperer,它是机器学习驱动的编码伴侣。

这项服务可以从纯英文的注释中生成代码,也可以生成完整的函数。通过它还可以生成即用型代码。作为扩展,CodeWhisperer 可用于主流 IDE 中。下图为使用机器学习生成 Java 代码的典型示例。

 CodeWhisperer

对于 CodeWhisperer,除了 Java 之外,还支持众多的语言。在 IDE 方面,也支持集成目前主流的 IDE,包括 JetBrains、VS Code、Visual Studio 等等。同时也集成了亚马逊云科技的一流的 API。帮助开发者既能够利用云服务的高效快捷,又能够在熟悉的环境中进行开发。

更多资源

  • 亚马逊 Java 开发博客

  • 加入亚马逊 Java 的 GitHub 论坛

  • 亚马逊代码示例   

  • 亚马逊 Java 开发者中心

以上就是亚马逊云科技关于 Java 语言架构、迁移以及如何使用机器学习来构建 Java 应用和提升 Java 性能的相关介绍。

欢迎开发者和我们互动,一起共建 Java 社区、Java 生态,在云上更好地进行 Java 应用开发,提升全方位技能。

请持续关注 Build On Cloud 微信公众号,了解更多面向开发者的技术分享和云开发动态!

往期推荐

  • #架构模型最佳实践
  • #亚马逊的开源文化
  • #机器学习洞察

作者王宇博

亚马逊云科技大中华区开发者关系总监,致力于新一代信息技术与创新在开发者中的布道推广,以及开发者社区和生态体系的建设。他此前担任亚马逊云科技高级产品经理多年,负责云原生、大数据和机器学习等相关产品的业务和市场拓展。在加入亚马逊云科技之前,他曾在多家跨国企业担任产品、技术和管理等岗位,具有近 20 年的 IT 行业经验与实践,同时在计算机视觉、模式识别等领域也有多年的科研经历。

 

 文章来源:https://dev.amazoncloud.cn/column/article/6409b6f1056d1b2cc4cbfde8?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulhub-structs2-S2-009 远程代码执行漏洞复现

漏洞描述 影响版本: 2.1.0 - 2.3.1.1 漏洞原理 Struts2对s2-003的修复方法是禁止#号,于是s2-005通过使用编码\u0023或\43来绕过;于是Struts2对s2-005的修复方法是禁止\等特殊符号,使用户不能提交反斜线。 但是,如果当前action…

Java---第三章(选择,循环,二重循环语句,输入,调试,标签)

Java---第三章 一 流程图二 选择结构简单的if-else嵌套的if-else多重if的选择语句(else-if)switch语句 二 输入验证三 程序调试四 循环结构while循环do-while循环for循环流程控制二重循环(重点) 五 标签 label(标号&am…

代码随想录二刷day27 | 回溯之 39. 组合总和 40.组合总和II 131.分割回文串

day27 39. 组合总和回溯三部曲剪枝优化 40.组合总和II回溯三部曲 131.分割回文串回溯三部曲判断回文子串 39. 组合总和 题目链接 解题思路: 本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。 本题搜…

AI对话分析,如何赋能销售人员实现销售增长和提升客户满意度?

在当今的商业世界中,销售人员的工作关键在于建立与潜在客户的关系,了解他们的需求,并提供满足这些需求的产品或服务。虽然这听起来简单,但实际上,这需要许多复杂的技能和经验。幸运的是,有许多工具和技术可…

消息队列及常见消息队列介绍

一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队…

金属元素螯合剂:1189194-64-6,DOTA-(COOt-Bu)3-CH2-Alkynyl,试剂的结构式和CAS分享

文章关键词:双功能螯合剂,大环配体一、试剂基团反应特点(Reagent group reaction characteristics): 西安凯新生物科技有限公司供应的​DOTA-(COOt-Bu)3-CH2-Alkynyl中,​DOTA分子是一种十二元四氮杂大环配…

【每日算法】【205. 同构字符串】

☀️博客主页:CSDN博客主页 💨本文由 我是小狼君 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&…

随机2D形状周围层流预测!基于飞桨实现图形神经网络

项目背景 近年来,快速流场预测领域一直由基于像素的卷积神经网络(Convolution Neural Network,CNN)主导。当 CFD 与基于 CNN 的神经网络模型耦合时,来自网格的数据必须在笛卡尔网格上进行插值,然后再投影回…

Jetpack Compose Material3 组件之 DatePicker(日期选择)

前言 在之前我使用 Comose 写 APP 的时候,官方还没有给出关于 DatePicker 的解决方案。 当时为了在 Compose 中实现 DatePicker ,大致有两种方案: 一是使用原生 VIew 的 DatePicker,但是因为觉得我即然都用 Compose 了&#xf…

图书推荐|Python数据分析与挖掘实战(第2版)

Python数据分析与挖掘实战(第2版)一共分为三个部分,包括基础篇(第1~5章)、实战篇(第6~12章)、提高篇(第13章)。其中基础篇介绍了数据挖掘的基本原…

揭秘猫狗的微生物世界:肠道微生物群的意义和影响

谷禾健康 “铲屎官”们都希望自己的宠物有一个健康的身体。但是猫狗都不会说话,平时我们只能从它们的精神状态来判断它们是否健康,但这并不准确。去宠物医院又不太方便,很多猫咪和狗狗还会对抽血等检查有所抗拒。 肠道微生物检测在人类中的应…

边云协同:大小模型如何协同推理?

1 背景 “化繁为简、大巧不工”是机器学习的初衷之一。 费米曾讲述一个故事,冯诺依曼告诉他,用四个参数就可以拟合出一头大象,用五个参数就可以让大象鼻子动起来,这就是“四个参数画大象”的故事。 但AI模型规模不断剧增已是不…

CVE-2023-27524 Apache Superset 身份认证绕过漏洞

漏洞简介 Apache Superset是一个开源的数据可视化和数据探测平台,它基于Python构建,使用了一些类似于Django和Flask的Python web框架。提供了一个用户友好的界面,可以轻松地创建和共享仪表板、查询和可视化数据,也可以集成到其他应…

第一章 string模块

1. string模块介绍 Python中的第三方模块 string 模块解决了一些关于字符串操作的问题。例如,string 模块中可列出所有的大小写英文字母、数字、标点符号、八进制数字字符、十进制数字字符、十六进制数字字符等 Python 中可打印的字符;还可以进行格式化…

学习笔记之MySQL存储引擎

一、MySQL架构 MySQL的连接层处理客户端连接和权限管理,服务层解析和执行SQL语句,引擎层负责数据的存储和检索,存储层处理数据在磁盘上的读写操作。这种架构使得MySQL可以在不同的场景中灵活运行,并根据需求选择合适的存储引擎和…

Spring Security OAuth2.0认证授权 --- 基础篇

一、基本概念 1.1、什么是认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可…

CVPR2022 多目标跟踪(MOT)汇总-补充篇

为该文章的后续补充https://blog.csdn.net/qq_34919792/article/details/124343166 七、《Multi-Object Tracking Meets Moving UAV》 作者: Shuai Liu†1, Xin Li†2, Huchuan Lu1,2, You He∗3 1Dalian University of Technology, 2Peng Cheng Laboratory, 3Naval Aeronaut…

【yolov5系列】将模型部署到瑞芯微RK3566上面

本篇博客记录将yolov5s移植到瑞芯微3566上的整体流程。当然在其它芯片上的操作类似,差别会在具体的API的调用上。 1 芯片相关 芯片参数:https://www.rock-chips.com/a/cn/product/RK35xilie/2021/0113/1273.htmlCPU:四核,1.8GHZ.N…

CSS查缺补漏之《选择器的复杂用法》

最近在复盘CSS基础知识,发现很多CSS选择器里面还是大有学问,需要详细总结一番,以备差缺补漏~ 作为CSS基础的一大类别,选择器又分为多种类别,本篇内容默认读者已了解并掌握基础选择器【通配符选择器】、【元素选择器】…

企业采用融合CDN战略之前的相关注意事项

很多企业可能都会犹豫是否要从单CDN模式到转向为多CDN模式,一方面因为这可能看起来很复杂,这不仅涉及到需要建立更多的CDN提供商,而且还有其他较多的操作和配置要做,尤其是在当前单CDN供应商似乎一切正常的情况下。但从另一方面来…