大规模(Web-scale)应用程序需要高性能和大规模可扩展性,以出色的用户体验支持大量用户。它们必须按需扩展,为快速壮大的用户群提供服务,同时提供出色的性能、灵活性和弹性。大规模应用程序日益应用于金融服务、医疗保健、在线商业服务、媒体、电信及其他行业;在这些行业,系统用户的数量不断增长,它们的要求也在不断变化。
开发大规模应用程序的一个挑战是依赖基于磁盘的传统数据库。这些数据库在规模环境上带来了不可接受的延迟。此外,将数据从操作型数据库转移到分析型数据库的提取、转换和加载(ETL)过程意味着数据在分析之前是陈旧的。如今要消除基于磁盘的数据库引起的延迟,最简单、最高效和最具成本效益的策略就是部署内存计算(IMC)平台。
内存计算简述
内存计算基于跨分布式计算集群的大规模并行处理,共享集群中的所有可用内存和CPU能力。集群可以使用商用服务器来构建,并通过添加新节点进行扩展。添加新节点后,系统会自动重新平衡数据在节点之间的分布,提供极高的可扩展性和数据冗余。
与直接在基于磁盘的数据库上构建的应用程序相比,IMC平台的处理速度可提高1000倍或更多。一些IMC平台支持ANSI-99 SQL和ACID事务,因而更容易将IMC平台整合到现有的大规模应用程序中,并且让内存计算平台充当应用程序的记录系统。
IMC平台的速度和可扩展性能够实现事务/分析混合处理(HTAP)(即操作/分析混合处理(HOAP)或集事务和分析性能于一体的处理)。HTAP能够在不影响系统性能的情况下,对大规模的操作数据集进行分析。基于内存计算平台等HTAP解决方案的大规模应用程序让公司可以实时了解用户行为,并实时响应不断变化的行为带来的任何机会或威胁。
IMC平台的主要功能和特性,包括如下:
充当现有应用程序的内存数据网格
针对现有的应用程序,IMC平台用作在应用程序层和数据层之间插入的内存数据网格(IMDG),无需丢弃和更换底层数据库。底层RDBMS、NoSQL或Hadoop数据库中的数据加载到IMC集群的内存中。集群节点上放在一起的大规模并行处理极大地提升了性能。如果IMDG支持SQL,与数据网格之间的联系就像使用标准SQL命令来操作和分析数据一样容易。
充当新应用程序的内存数据库
针对新的或重新设计架构的应用程序,一些IMC平台可以充当独立的内存SQL数据库(IMDB)。为了保护内存中的数据在重启或断电期间不会丢失,一种经济高效的策略是使用“持久存储”。这在下面会有讨论。
持久存储
可以将“持久存储”功能添加到部署在普通磁盘、固态磁盘(SSD)、闪存、3D XPoint或其他存储级内存技术上的分布式ACID事务和与ANSI-99 SQL兼容的磁盘存储系统。
如果是IMDB,持久存储在重启或断电时可保留数据,让应用程序可以访问保存在整个集群内存中的更大数据集。如果是IMDG,持久存储让企业可以将完全操作的数据集保留在磁盘上,而将数据集的一小部分保留在内存中,以此兼顾基础设施成本和应用程序性能。持久存储的一个重要好处是,它在服务器重启后可以让用户立即处理数据,无需等待所有数据重新加载到内存中。
机器学习
一些IMC平台现拥有集成的、完全分布式的机器学习和深度学习库,这些库已针对大规模并行处理进行了优化。这让每种机器学习或深度学习算法能够针对驻留在IMC集群每个节点上的内存中的数据进行本地运行,因而可以持续更新机器学习或深度学习模型,而不影响性能,即便在PB级规模下也是如此。
与其他应用程序集成
IMC必须作为整个架构堆栈的一部分来运行,并与其他有用的解决方案轻松集成。比如,下列开源解决方案都能无缝集成:Apache Ignite内存计算平台、Apache Kafka流处理平台、Apache Spark分布式通用集群计算框架以及Kubernetes开源容器编排系统。
开源
所有上述解决方案都是开源这不足为奇。开源解决方案对于已启动数字化转型和全渠道客户互动计划的企业至关重要,并使开发大规模应用程序对于大大小小的企业来说变得切实可行。开源提供了一种可靠又成熟的策略,可用于开发应用程序,前期投入低得多。它让企业更牢牢地掌控自己的命运,因为大多数开源项目基于标准的方法缓解了供应商锁定现象。另外,开源项目带来出色创新的速度比传统的专有供应商模式快得多。
大规模应用程序若要带来预期的好处,企业须获得大规模环境下的实时应用程序性能。 IMC为实现这个目标提供了唯一切实可行的、经济高效的途径,这在Gartner的预测中有所体现。
Gartner预测,到2019年,75%的云原生应用程序开发将使用内存计算或使用IMC的服务,让主流开发人员能够实现高性能、大规模可扩展的应用程序。架构师、开发人员和首席技术官了解了大规模架构对数据中心未来而言的重要性,才会立即开始研究内存计算解决方案具有的功能、灵活性和可扩展性。
原文标题:How to Solve the Performance Challenges of Web-Scale Applications,作者:Nikita Ivanov