1.1.3 企业应用的需求

除了软件和硬件的不断进步,另一个促使内存计算发展的重要因素是企业应用的需求。在云计算、大数据、社交化和移动化趋势的推动下,企业应用需要处理的应用模式越来越复杂,数据量越来越大,对数据处理实时性的要求也越来越高。换句话说,越来越多的传统企业正在向实时企业转变。

实时企业应具有数据驱动、敏捷和高效三种特质,也就是从数据中获得实时洞察的能力,快速调整以适应内外部变化的能力,以及持续流程改进以最大化收益的能力。所有这些能力都需要依赖企业最重要的资产:数据。企业需要在更短的时间内处理更多的数据,更快地对外部市场环境和客户需求做出反应,以提升业务运营效率和竞争力。内存计算技术非常适合于构建实时企业这一目标。

云计算的本质是共享的基础设施、共享的服务,云计算使得传统的孤岛式系统建设转向基于共享资源池的建设模式。在集中整合的环境下,应用需要处理更多的数据和并发访问,因此底层架构需要具备更强的性能和可扩展性。可扩展性不仅意味着当工作负载变化时可以提供足够的存储、网络和计算能力,同时还必须保证相应的服务水准,包括性能和高可用性。大数据是另一个主要驱动力。大数据的三个特征:数据量大、产生速度快和类型多样决定了新型的大数据应用不仅需要处理传统的企业内部数据,还需要应对来自移动端、社交媒体、传感器等多种数据源的海量数据,同时必须快速处理这些数据,以支持实时预警监控、实时辅助决策等需求。这无疑对整个系统架构的性能和可扩展性提出了更高的要求。

无论是公有云还是私有云,大多数应用的运行都依赖于关系型数据库。而数据库恰恰是应用架构层级中最难扩展的部分。传统的数据库扩展方法包括集群、复制和分片。数据库集群技术的典型代表是Oracle RAC,通过为一个数据库配置多个实例实现可扩展性,每一个实例都可以读写数据。集群技术由于需要共享存储,并且写数据时需要加锁来同步内存缓存中的数据,因此集群的扩展性是有限的,并且在配置和管理上更加复杂。复制技术通过提供一个或多个数据副本来实现业务分离和读写分离,通常副本是只读的,可用于开发测试、数据备份、分析报表等只读应用。复制的问题在于主从数据库之间可能存在数据差异,并非完全一致。另外由于从数据库通常为只读,因此对于需要可写的应用并不能扩展。另一个常用的扩展方法是分片,分片即将一个大数据库拆分为多个小数据库,拆分可以依据业务规则,如按区域、按时间范围,或根据技术规则,如哈希值等。相对于集群和复制,分片具有最佳的可扩展性,但管理维护也最为复杂。分片要求应用能感知数据位置,这通常需要在代码中嵌入路由逻辑或添加新的路由应用来重定向访问路径。当系统扩展时,应用需要能适应分片拓扑的变化,并需要考虑数据的重新分布和迁移。对于一些主数据和参照数据,需要复制到每一个分片中,出于性能考虑,通常采用异步复制,这可能会出现数据一致性的问题。跨多库的聚合操作通常执行效率不高,实现更为困难。相当于单一数据库,分片系统的高可用保护更为复杂,需要为每一个分片实现单独保护。

通过内存计算技术可以提高整个数据库架构的可扩展性,目前可以采用两种方式。第一种是使用独立内存数据库直接替代传统关系型数据库,这类新型数据库性能上优于传统磁盘数据库,功能上与传统关系型数据库类似,支持SQL处理,支持事务和分析混合负载,支持集群与复制等功能。但总地来说,成熟的产品还较少。另一种方式是在应用层和数据库层间添加新的内存层,应用层仍保持无状态,而将状态存放于内存层。新的内存层通常为分布式架构,具有良好的可扩展性。内存层自动加载数据库中的数据并将更新自动持久化到后端数据库。对于应用,内存层可保证性能和数据库层的最终持久。利用内存的性能,可提升应用的响应时间和减轻后端数据库的压力。

除了可扩展性的提升,内存计算还极大简化了整个应用软件的架构。传统架构中事务处理和分析处理是分离的,不仅需要复杂的数据抽取、转换和加载,并且需要通过构建立方体或物化视图来加速分析。这种分离的架构不仅带来了数据冗余,并且可能导致数据不一致,维护和更改也比较困难。内存计算通过将所有数据置于内存中,可统一满足不同特征的工作负载,去除了架构中冗余的层次,保证了性能和数据一致性,相应的应用逻辑和硬件架构更加简单,运维更方便,整体拥有成本更加节省,IT可以更快速地满足不断变化的业务需求,促进业务敏捷和业务创新。