PaaS提供了基礎架構,軟件開發者可以在這個基礎架構之上建設新的應用,或者擴展已有的應用。Salesforce的Force.com、Google的App Engine和微軟的Azure(微軟云計算平臺)都采用了PaaS的模式。這些平臺允許公司創建個性化的應用,也允許獨立軟件廠商或者其他的第三方機構針對垂直細分行業創建新的解決方案。
PaaS為部署和運行應用系統提供所需的基礎設施資源和一個月基礎設施,應用開發人員無需關心應用的底層硬件和應用基礎設施,并且可以根據應用需求動態擴展應用系統所需的資源。完整的PaaS平臺應提供如下功能:
第一,分布式運行環境。
第二,多種類型的數據存儲,動態資源伸縮。
第三,應用全生命周期支持,提供第三方接入服務。
第四,提供開發SDK、IDE等加快應用的開發、測試和部署。
第五,監控、管理和計量:提供資源池、應用系統的管理和監控功能、精確計量應用鎖消耗的計算資源。
第六,提供應用托管、服務托管、應用服務器托管、虛擬機托管。
第七,提供連通性服務、整合服務、消息服務和流程服務等用于構建SOA架構風格的復合應用。
PaaS的難點與PaaS的特性密不可分,有多租戶支持、彈性伸縮、統一運維、系統自愈、細粒度資源計量、SLA保障等。這些基本也都是云計算的基本特點。多租戶彈性是PaaS區別于傳統應用平臺的本質特性,其實現方式也是用來區別各類PaaS的最重要標志之一,是PaaS的最核心特性之一。
PaaS的一個重要應用領域是大數據處理,而互聯網企業每天都在存儲海量的非結構化數據和結構化數據,這些數據需要在短時間內被處理,否則就會讓用戶體驗處于崩潰的邊緣。以前,數據規模很大,但是結構化數據居多,隨著社交網絡和移動互聯網應用的興起,非結構化數據在采集數據的占比越來越大,海量數據逐漸演變為以數據多樣性為主要特征之一的大數據。
PaaS層對數據庫的新要求
所謂大數據,即數據集的尺寸大、數據生成速度快、結構化和非結構化數據類型多、數據集蘊含的價值大。云計算的PaaS層對數據庫技術提出了新的要求,主要表現在以下幾個方面:
第一,海量數據處理。對類似搜索引擎和電信運營商級的經營分析系統這樣大型的應用而言,需要能夠處理PB級的數據,同時應對百萬級的流量。
第二,大規模集群管理。分布式應用可以更加簡單地部署、應用和管理。
第三,低延遲讀寫速度。快速的響應速度能夠極大地提高用戶的滿意度。
第四,建設及運營成本。云計算應用的基本要求是希望在硬件成本、軟件成本以及人力成本方面都有大幅度的降低。
近年來,大數據所蘊含的巨大價值被人們所認識并開發,Google、Facebook、Twitter等基于大數據分析的互聯網應用在業界取得巨大成功,分布式處理系統Hadoop在構建大數據處理平臺領域應用普及,已經成為事實標準。然而,當前的Hadoop系統主要基于MapReduce時應用的發展,比如實時搜索、實時交易系統、實時欺騙分析、實時監控、社交網絡等,都需要一個高度可擴展的流式計算解決方案。因此,2011年以來,流式成為業界應用的熱點技術,涌現了眾多成功的應用和開源系統實現,如yahoo!的S4系統、Twitter采用的Storm系統。
同時,為加快分布式處理系統的響應速度,2012年以來,內存計算成為業界應用的熱點技術。內存計算是指CPU直接從內存,而不是硬盤上讀取數據,并進行計算、分析,是對傳統的分布式數據處理方式的一種加速。內存計算作為未來數據計算和管理的支撐技術之一,在商務智能分析方面擁有巨大的應用潛力。
開源社區推出Memcached,它是一個開源的高性能、分布式的內存對象緩存系統,用于動態Web應用以減輕數據庫負載。當前,Memcached等基于分布式內存的數據存儲系統在Facebook等企業已經取得成功應用。
在大數據的存儲方面,弱化一致性的全球分布式數據庫系統和突出性能的NoSQL數據庫活動量廣泛應用。
為了保障數據庫操作的完整性和安全性,傳統數據庫理論將用戶改變數據庫狀態的一組操作定義為一個事務,并規定一個支持數據庫事務的數據庫關系系統(DataBase Mangement System,DBMS)必須保障一個事務操作的四項屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持續性(Durability)。
這四大屬性簡稱ACID屬性,與英文中“酸”的單詞字母相同。然而,當今的大型互聯網公司,如Amazon、Google和Yahoo!都為全世界的用戶提供服務,面對如此大規模的用戶群體和用戶地理分布范圍,單一的集中式數據庫架構是不現實的。因此,更好地響應世界各地用戶的訪問請求,Amazon等公司多采用全球地理分布的多數據庫聯邦架構,并將數據在多個數據庫之間冗余備份,這極大地提升了用戶體驗。
然而,2000年,美國加州伯克利大學計算機學院的Brewer教授提出了著名的CAP理論,明確指出在數據庫系統中,數據的一致性(Consistency)、可用性(Availability)和數據分區容錯(Partition Tolerance)屬性不能同時滿足,最多只能滿足兩項屬性。CAP理論在2002年被Seth Gilbert和Nancy Lynch等人通過嚴謹的計算理論方法證明是正確的。
對于Amazon和Yahoo!所采用的分布式數據庫系統而言,數據分區容錯屬性是天然屬性,因而數據被分區存儲而不可預計的網絡故障必然會導致數據分區錯誤。因此,依據CAP理論,對于地理分布的數據庫架構中,如果需要提供高可用性(Availability),就必須放松對數據庫事務的一致性(Consistency)。
因此,學術界提出了對于地理分布的數據庫架構的事務支持的新要求,即需要滿足三大屬性:基本可用性(Basically Available),即在任何情況下基本功能可用;柔性事物(Soft state),即允許冗余的數據狀態在某段時間內不同步;最終一致性(Eventual Consistency),即保障冗余的數據狀態能夠最終同步。
上述三大屬性簡稱BASE,與英文中“堿”的單詞字母相同。顯而易見,BASE屬性與ACID屬性是相反的。不同于ACID模型,BASE模型通過犧牲強一致性,獲得基本可用性和柔性狀態保障了系統的可用性和可靠性,并能夠使得數據的副本之間最終達成一致。BASE模型在早期的地理分布式數據庫系統中取得成功應用,典型系統如Amazon的Dynamo和Yahoo!的PNUTS。
NoSQL在大數據處理中取得成功
不僅如此,CAP理論、BASE模型也為當前互聯網領域非常流行的NoSQL(Not Only SQL)數據庫系統奠定了理論基礎,而NoSQL數據庫系統在新興互聯網企業如Facebook、Twitter等取得成功應用。
SQL(Structured Query Language)是面向關系型數據庫的結構化基礎語言,針對關系數據的功能設計。NoSQL面向非結構化數據存儲,其核心概念并不在數據如何被查詢,而是數據如何被存儲,即非關系數據庫。
但是NoSQL數據庫也可包含面向非結構化數據的查詢語言,如開源NoSQL數據庫系統Couchbase和SQLite使用的非結構數據查詢語言UnQL(Unstructured Data Query Language)。NoSQL數據庫主要面向簡單鍵值對(Key-Value)數據格式,采用列式存儲方式。另一方面,其放松了數據庫事務的嚴格一致性要求,因而能夠取得很好的訪問性能和近乎線性的擴展性,從而在大數據存儲領域取得了巨大成功。
NoSQL的興起也得益于開源社區的廣泛支持,當前應用廣泛的NoSQL數據庫不僅有Hadoop系統集成的Hbase數據庫,還有滿足極高讀寫性能需求的Key-Value數據庫,如Redis等;滿足海量存儲需求和訪問的面向文檔的數據庫:如MongoDB、CouchDB等;滿足高可擴展性和可用性的面向分布式計算的數據庫:Cassandra等。
開源軟件的普及推動技術普及和產業標準成熟,產業巨大需求也促使傳統數據庫廠商提供NoSQL數據庫產品和解決方案。
2012年12月,作為其云計算軟件基礎設施的一部分,Oracle發布了NoSQL數據庫產品Oracle NoSQL Database 2.0,標志著NoSQL數據庫已經成為大數據時代的數據處理的主流解決方案之一。
在信息技術融合應用的新時代,大數據就是像黃金一樣的新型經濟資產、像石油一樣的重要戰略資源。然而,大數據對處理和存儲能力的無限需求使得傳統的IT架構和技術力不從心,唯有云計算才能支撐上述需求,才能支撐面向大數據的價值發現,從而實現跨越式發展。
PaaS的核心價值是讓應用及業務更加敏捷、IT服務水平更高、并實現更高的資源利用率。在云產業鏈中,如同傳統的中間件所起的作用一樣,PaaS也將會是產業鏈的制高點。無論是在大型企業私有云中,還是在中小企業所關心的應用云中,PaaS都將起到核心的作用。