SpringOne 2GX 2012 回放:虚拟化和调整大规模 Java 应用程序,从 Spring 和 Java 到 Spring 和 Akka

新闻 | Pieter Humphrey | 2013年4月9日 | ...

虚拟化和调整大规模 Java 应用程序

本课程分享了许多在 vSphere 上运行 Java 的经过生产验证的方法。涵盖如何为大规模部署调整 JVM 和虚拟机的大小。本课程将专门介绍 GC 调优,并展示如何使用过去 15 年在 JVM 调优方面积累的实际现场经验开发的 GC 方案来调优各种 JVM。

本课程讨论了三个关键趋势及其相关的调优技术。关键趋势是:整合、弹性和灵活性以及性能

整合 许多客户发现他们的中间件部署已经激增,并且正在成为一项与更高成本相关的管理挑战。我们看到一个趋势,客户将虚拟化视为减少服务器实例数量的一种方式。同时,客户正在利用整合机会来合理化服务特定负载所需的中间件组件数量。中间件组件通常在 Java 虚拟机 (JVM) 中运行,观察到的规模为 100 到 1000 个 JVM 实例,并为 JVM 实例整合提供了许多机会。因此,中间件虚拟化提供了两次整合的机会——一次是整合服务器实例,第二次是整合 JVM 实例。这一趋势影响深远,因为全球每个 IT 部门都在考虑整合带来的成本节约。一家酒店行业的客户经历了整合其服务器资源的流程,同时整合了许多小于 1GB 堆的小型 JVM。他们将许多这些较小的 1GB JVM 整合到两类中,一类是 4GB,另一类是 6GB。他们以这种方式进行整合,使应用程序可用的 RAM 总量等于原始 RAM 量,但 JVM 实例更少。他们完成了所有这些工作,同时提高了性能并保持了良好的 SLA。由于他们需要管理的 JVM 实例数量减少,并且环境得到了改进,因此更容易实现 SLA。
另一家保险行业的客户能够实现与上述客户相同的目标,但此外还能够在开发和 QA 环境中过度分配 CPU 以节省第三方软件许可证成本。另一方面,有时我们会遇到一些客户,他们有合法的业务需求来为一个应用程序维护一个 JVM,和/或每个业务线一个 JVM。在这种情况下,您实际上无法整合 JVM 实例,因为这会导致一个业务线的应用程序生命周期与另一个业务线的应用程序生命周期混合。但是,虽然此类客户无法通过 JVM 整合消除额外的 JVM 实例,但他们确实受益于更充分地利用服务器硬件上的可用计算资源,否则这些资源在非虚拟化环境中将被低效利用。

弹性和灵活性 越来越常见的是,应用程序具有季节性需求。例如,许多客户运行各种营销活动,这些活动会将季节性流量引导到他们的应用程序。使用 VMware,您可以通过在需要时自动配置新的虚拟机和中间件组件来处理这种流量激增,然后在负载下降时自动拆除这些虚拟机。此外,能够在不导致中断的情况下更改更新/修补硬件对于支持云时代规模和正常运行时间的中间件至关重要。VMware VMotion 使您能够移动虚拟机而无需停止应用程序或虚拟机。仅此灵活性就使得在管理大规模中间件部署时,中间件虚拟化值得考虑。一家金融领域的客户每天处理数百万笔交易,经常使用 VMotion 来安排其硬件升级,而无需任何停机时间。否则,这将给他们的业务带来代价高昂的计划停机时间。

性能 客户经常报告虚拟化时中间件平台性能有所提高。性能提升部分是由于客户通常会在虚拟化项目期间刷新更新的硬件。由于强大的 VMware 虚拟机管理程序,性能也得到了一些提升。最近一位报告了很高性能水平的客户提供了以下证明

“在我们的 OrderExpress 项目中,我们升级了我们的中间件服务、商务、门户、WCM、服务层、DB2 数据库;从 AIX 迁移到 Linux;在 VMware 上虚拟化;将应用程序迁移到三层 DMZ;将交易量增加了 150% 以上;并添加了显著的新功能,极大地改善了客户体验。一次更改如此广泛的技术组件是一项巨大的挑战。但是,使用 VMware vSphere 和额外的架构更改,我们成功地将性能提高了 300% 以上;降低了数百万美元的成本;提高了安全性、可用性和可扩展性;以及我们如何继续发展此应用程序以保持超过 30% 的年度增长。”

—— Cardinal Health 高级企业架构师 Jeff Battisti

在本课程中,我将展示小型和大型 JVM 中间件组件的一些实际 JVM 和虚拟机大小。还将详细介绍我多年来开发的 GC 调优方案,该方案已被证明可以处理 4GB 到 88GB+ 及更高的 JVM 堆大小。当然,内存数据库的引入推动了拥有这些更大 JVM 的趋势,因此我们将讨论调优 JVM、虚拟机及其部署所在的硬件平台的最佳方法。

我认为大小调整问题是我们客户群中最常见的问题,因此我计划在本课程中重点介绍它。



关于演讲者

Emad Benjamin

Emad Benjamin

Emad Benjamin 在 IT 行业工作了二十多年。他毕业于卧龙岗大学,获得电气工程学士学位。在他职业生涯的早期,他是一名 C++ 软件工程师,然后在 1997 年,他转向使用 Java 进行编程,并且从那时起一直专注于 Java。在过去的七年里,他一直专注于 VMware vSphere、vFabric GemFire 和 SQLFire 上的 Java。Emad 自 2005 年以来一直在 VMware 工作,并且是《VMware 上的企业 Java 应用程序架构》一书的作者。Emad 此前曾在 VMworld、SpringOne 和 Open World 上就 Java 虚拟化主题进行过演讲。

更多关于 Emad 的信息»



 

从 Spring + Java 到 Spring + Akka——一段发现之旅

基于 Actor 的并发模型是一种范式转变。什么是范式转变?

科学统治理论中基本假设或范式的变化。范式转变使简单的想法难以理解。即使 Actor 模型是一个简单而革命性的想法,程序员也很难看到实际的好处和用途。同样,Scala 编程语言在简化基于 Actor 的设计方面带来了很多优势,但也带来了一种新的编码风格。解决这个问题的一种可能方法是用旧范式来评估新范式。在本演示中,我们将采用一个基于 Spring 的工作 Web 应用程序,并逐步使用 Actor 和 Scala 实现它。我们将对新想法持怀疑态度,但同时也会保持开放的心态。我们将利用 Spring 的知识来学习基于 Actor 的并发模型。同时,我们将学习 Actor、Scala 及其与 Spring Framework 结合使用的最佳实践。



关于演讲者

Nilanjan Raychaudhuri

Nilanjan Raychaudhuri

Nilanjan 是 Typesafe 的顾问和培训师。他于 2000 年开始他的职业生涯,担任使用面向对象编程语言的软件开发人员。Nilanjan 此前曾在 IBM、ThoughtWorks 和 LivingSocial 工作,在那里他积累了丰富的经验,负责管理和开发 Java/JEE、Ruby、Groovy 和 Scala 的软件解决方案。自从他接触到这种美丽的语言以来,他就一直热衷于使用 Scala 进行编程。目前,他在业余时间致力于 scala-webmachine 开源项目(RESTful 资源框架)。过去,Nilanjan 从事其他开源项目和库的工作。在 Typesafe,他主要教授和设计 Scala 和 Play 课程,并帮助客户采用这些技术。Nilanjan 喜欢通过在各种会议上发表演讲来分享他的经验。他也是《Scala in Action》一书的作者。

更多关于 Nilanjan 的信息»

Josh Suereth

Josh Suereth 是 Typesafe 的高级软件工程师,也是《Scala In Depth》一书的作者。自从他于 2007 年了解到这种美丽的语言以来,他就一直是 Scala 的爱好者。他于 2004 年开始他的职业生涯,担任软件开发人员,学习使用 C++、STL 和 Boost。大约在同一时间,Java 热潮正在蔓延,他的兴趣转向使用 Web 托管的分布式 Java 传递的解决方案来帮助卫生部门发现疾病的爆发——从 EJB 到 Hibernate/Spring,甚至还有一些 Applet。他于 2007 年首次在他的公司代码库中引入 Scala,此后不久就被 Scala 热潮感染,为 Scala IDE、maven-Scala-plugin 和 Scala 本身做出了贡献。2009 年,他开始撰写《Scala In Depth》一书,该书为在日常应用程序中使用 Scala 提供了实践支持。今天,Josh 是多个开源 Scala 项目的作者,包括 Scala 自动资源管理库、PGP sbt 插件,并为 Scala 生态系统中的关键组件(如 maven-Scala-plugin)做出了贡献。他在 Typesafe Inc. 的当前工作包括从构建 MSI 到分析性能问题的所有事情。Josh 定期通过文章和演讲分享他的专业知识。

更多关于 Josh 的信息»





获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部