如何克服大規模應用程序的性能挑戰?
譯文【51CTO.com快譯】大規模(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
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】