共计 4237 个字符,预计需要花费 11 分钟才能阅读完成。
在上篇文章中,咱们为大家介绍了亚马逊的 Java 生态及丰盛的开发工具、框架。本文将分享亚马逊的 Java 架构、迁徙路径,并分享一个具体实例,介绍如何应用机器学习来构建 Java 利用和晋升 Java 性能。
亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! |
Java 开发的平台之选
1 为 Java 利用提供多种开发和部署抉择
- 计算 :EC2、Lambda、ECS、EKS、Fargate
- 存储 :S3、Elastic File Service
- 网络 :Classic Load Balancer、Application Load Balancer、Network Load Balancer、Security Groups、Virtual Private Cloud
- 数据库 :RDS、DynamoDB、Aurora、Neptune
- 治理 :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/6409b6f1056d1b2cc4c…