一、什么是PAAS平臺(tái)
PaaS(Platform-as-a-Service:平臺(tái)即服務(wù))全稱:(Platformasaservice)中文:平臺(tái)即服務(wù)所謂PaaS實(shí)際上是指將軟件研發(fā)的平臺(tái)(計(jì)世資訊定義為業(yè)務(wù)基礎(chǔ)平臺(tái))作為一種服務(wù),以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應(yīng)用。但是,PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開(kāi)發(fā)速度。在2007年國(guó)內(nèi)外SaaS廠商先后推出自己的PAAS平臺(tái)。PAAS之所以能夠推進(jìn)SaaS的發(fā)展,主要在于它能夠提供企業(yè)進(jìn)行定制化研發(fā)的中間件平臺(tái),同時(shí)涵蓋數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器等。PAAS可以提高在Web平臺(tái)上利用的資源數(shù)量。例如,可通過(guò)遠(yuǎn)程Web服務(wù)使用數(shù)據(jù)即服務(wù)(Data-as-a-Service:數(shù)據(jù)即服務(wù)),還可以使用可視化的API。用戶或者廠商基于PaaS平臺(tái)可以快速開(kāi)發(fā)自己所需要的應(yīng)用和產(chǎn)品。同時(shí),PaaS平臺(tái)開(kāi)發(fā)的應(yīng)用能更好地搭建基于SOA架構(gòu)的企業(yè)應(yīng)用。
二、PAAS的特點(diǎn)
PaaS能將現(xiàn)有各種業(yè)務(wù)能力進(jìn)行整合,具體可以歸類(lèi)為應(yīng)用服務(wù)器、業(yè)務(wù)能力接入、業(yè)務(wù)引擎、業(yè)務(wù)開(kāi)放平臺(tái),向下根據(jù)業(yè)務(wù)能力需要測(cè)算基礎(chǔ)服務(wù)能力,通過(guò)IaaS提供的API調(diào)用硬件資源,向上提供業(yè)務(wù)調(diào)度中心服務(wù),實(shí)時(shí)監(jiān)控平臺(tái)的各種資源,并將這些資源通過(guò)API開(kāi)放給SaaS用戶。PaaS主要具備以下三個(gè)特點(diǎn):
(1)平臺(tái)即服務(wù):PaaS所提供的服務(wù)與其他的服務(wù)最根本的區(qū)別是PaaS提供的是一個(gè)基礎(chǔ)平臺(tái),而不是某種應(yīng)用。在傳統(tǒng)的觀念中,平臺(tái)是向外提供服務(wù)的基礎(chǔ)。一般來(lái)說(shuō),平臺(tái)作為應(yīng)用系統(tǒng)部署的基礎(chǔ),是由應(yīng)用服務(wù)提供商搭建和維護(hù)的,而PaaS顛覆了這種概念,由專(zhuān)門(mén)的平臺(tái)服務(wù)提供商搭建和運(yùn)營(yíng)該基礎(chǔ)平臺(tái),并將該平臺(tái)以服務(wù)的方式提供給應(yīng)用系統(tǒng)運(yùn)營(yíng)商;
(2)平臺(tái)及服務(wù):PaaS運(yùn)營(yíng)商所需提供的服務(wù),不僅僅是單純的基礎(chǔ)平臺(tái),而且包括針對(duì)該平臺(tái)的技術(shù)支持服務(wù),甚至針對(duì)該平臺(tái)而進(jìn)行的應(yīng)用系統(tǒng)開(kāi)發(fā)、優(yōu)化等服務(wù)。PaaS的運(yùn)營(yíng)商最了解他們所運(yùn)營(yíng)的基礎(chǔ)平臺(tái),所以由PaaS運(yùn)營(yíng)商所提出的對(duì)應(yīng)用系統(tǒng)優(yōu)化和改進(jìn)的建議也非常重要。而在新應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程中,PaaS運(yùn)營(yíng)商的技術(shù)咨詢和支持團(tuán)隊(duì)的介入,也是保證應(yīng)用系統(tǒng)在以后的運(yùn)營(yíng)中得以長(zhǎng)期、穩(wěn)定運(yùn)行的重要因素;
(3)平臺(tái)及服務(wù):PaaS運(yùn)營(yíng)商對(duì)外提供的服務(wù)不同于其他的服務(wù),這種服務(wù)的背后是強(qiáng)大而穩(wěn)定的基礎(chǔ)運(yùn)營(yíng)平臺(tái),以及專(zhuān)業(yè)的技術(shù)支持隊(duì)伍。這種“平臺(tái)級(jí)”服務(wù)能夠保證支撐SaaS或其他軟件服務(wù)提供商各種應(yīng)用系統(tǒng)長(zhǎng)時(shí)間、穩(wěn)定的運(yùn)行。PaaS的實(shí)質(zhì)是將互聯(lián)網(wǎng)的資源服務(wù)化為可編程接口,為第三方開(kāi)發(fā)者提供有商業(yè)價(jià)值的資源和服務(wù)平臺(tái)。有了PaaS平臺(tái)的支撐,云計(jì)算[1]的開(kāi)發(fā)者就獲得了大量的可編程元素,這些可編程元素有具體的業(yè)務(wù)邏輯,這就為開(kāi)發(fā)帶來(lái)了極大的方便,不但提高了開(kāi)發(fā)效率,還節(jié)約了開(kāi)發(fā)成本。有了PaaS平臺(tái)的支持,WEB應(yīng)用的開(kāi)發(fā)變得更加敏捷,能夠快速響應(yīng)用戶需求的開(kāi)發(fā)能力,也為最終用戶帶來(lái)了實(shí)實(shí)在在的利益。
三、PAAS平臺(tái)發(fā)展前景
云計(jì)算相對(duì)來(lái)說(shuō)仍然還不成熟,新服務(wù)和功能會(huì)一直出現(xiàn)。云開(kāi)發(fā)平臺(tái)和PaaS也會(huì)在新的功能登場(chǎng)時(shí)不斷演變。然而,由于用戶社區(qū)對(duì)開(kāi)源軟件的影響很深,因此無(wú)法保證新功能會(huì)以足夠快的速度出現(xiàn)以滿足你的開(kāi)發(fā)需求。
雖然每個(gè)PaaS產(chǎn)品都有著類(lèi)似的功能,但具備這些功能的速度卻有所不同。例如,Pivotal的開(kāi)源PaaS產(chǎn)品CloudFoundry以其對(duì)語(yǔ)言的支持,服務(wù)整合,以及與其它如Chef,Puppet,Jenkins和NoSQL這樣的開(kāi)源工具的集成著稱。然而,CloudFoundry上只提供初步的容器支持,用戶界面主要靠命令行,支持?jǐn)?shù)量有限的軟件部署商業(yè)模式以及在應(yīng)用的性能指標(biāo)衡量上偏弱。
監(jiān)控一個(gè)平臺(tái)的發(fā)展路線圖然后再作出決定。那些發(fā)展緩慢或者正在經(jīng)歷某種艱難的發(fā)展模式的平臺(tái)可能會(huì)為你的應(yīng)用開(kāi)發(fā)團(tuán)隊(duì)和你的業(yè)務(wù)帶來(lái)問(wèn)題。
四、paas邏輯架構(gòu)圖
paas邏輯架構(gòu)圖:
用友PaaS體系包括開(kāi)發(fā)部署平臺(tái)、運(yùn)營(yíng)平臺(tái)、運(yùn)行平臺(tái)三大平臺(tái),輔以各種應(yīng)用支撐和公共服務(wù),全面高效地實(shí)現(xiàn)了企業(yè)應(yīng)用所需的云平臺(tái)環(huán)境。
PaaS架構(gòu)比較
大致來(lái)看,PaaS的實(shí)現(xiàn)分為兩種:以虛擬機(jī)為基礎(chǔ)或是以容器為基礎(chǔ)。前者的代表是AWS,后者的代表則是GAE, CloudFoundry和Heroku。前文已經(jīng)提到,AWS是基于虛擬機(jī)技術(shù)來(lái)打造自己的PaaS平臺(tái),其架構(gòu)模式大致如下圖所示:
具體而言,AWS基于如下構(gòu)件打造了Beanstalk:首先是負(fù)載均衡層(ELB),該層需要將用戶的請(qǐng)求投射到對(duì)應(yīng)的服務(wù)器實(shí)例,同時(shí),負(fù)載均衡層還需要。當(dāng)應(yīng)用實(shí)例出現(xiàn)擴(kuò)容時(shí),需要?jiǎng)討B(tài)將調(diào)整的服務(wù)器實(shí)例注冊(cè)到對(duì)應(yīng)的域名上,以完成分流;中間是Web服務(wù)器層,目前ElasticBean支持Java、Python和PHP等多種編程語(yǔ)言,盡量為編程人員提供多樣性的選擇,開(kāi)放性基本是所有PaaS平臺(tái)的標(biāo)配。在服務(wù)后端,Beanstalk基本依托于AWS本身的服務(wù)生態(tài)系統(tǒng)為應(yīng)用提供服務(wù),比如RDS、S3、DynamoDB等。
CloudFoundry等平臺(tái)則是基于容器技術(shù)打造。相比于虛擬機(jī),容器帶來(lái)的系統(tǒng)開(kāi)銷(xiāo)非常低,如果一臺(tái)虛擬機(jī)的操作系統(tǒng)需要占用2G的內(nèi)存,則7個(gè)虛擬機(jī)所組成的集群只是操作系統(tǒng)就需要14G的內(nèi)存占用?;谌萜鞯募夹g(shù)如果一臺(tái)16G的裸機(jī)除去2G的操作系統(tǒng)開(kāi)銷(xiāo),還能夠部署7個(gè)容器進(jìn)程。所以,從經(jīng)濟(jì)性來(lái)說(shuō),容器的技術(shù)遠(yuǎn)遠(yuǎn)好于虛擬機(jī)。另外一個(gè)比較的標(biāo)準(zhǔn)是性能,容器的性能相對(duì)而言更好一些,具體的比較參數(shù)可以參見(jiàn)IBM研究院剛剛出的報(bào)告。但是,從安全性和隔離型來(lái)說(shuō),虛擬機(jī)是遠(yuǎn)遠(yuǎn)好于容器的。
CloudFoundry的架構(gòu)設(shè)計(jì)如下圖所示。首先,CF也提供了一個(gè)路由模塊(Router),該模塊基本是基于ngnix打造,只是在ngnix技術(shù)上提供了動(dòng)態(tài)注冊(cè)的功能。在部署時(shí),由于CF會(huì)同時(shí)部署非常多的應(yīng)用實(shí)例,所以需要一個(gè)router集群來(lái)滿足應(yīng)用的需要;其次,CF的應(yīng)用容器基于自己開(kāi)發(fā)的warden技術(shù),warden也是基于LXC技術(shù),但是使用c和ruby作了一層簡(jiǎn)單的封裝。Docker的大熱讓CloudFoundry很糾結(jié);第三,CF使用service broker來(lái)集成各種資源服務(wù),如mongo、mysql、rabbitmq和redis等。最后,CF使用消息總線NATS/GNATS來(lái)完成應(yīng)用之間的通訊。
其他基于容器的PaaS平臺(tái)(如Heroku、OpenShift、DotCloud)的平臺(tái)架構(gòu)和上面所描述的模式基本一致,我在附件中提供了若干鏈接,大家如果有興趣可以仔細(xì)研究。
PaaS的參考架構(gòu)模式
根據(jù)上面討論的兩種架構(gòu)模式,我們可以看到PaaS平臺(tái)的實(shí)現(xiàn)基本需要如下的構(gòu)件:
1.路由模塊:該模塊的基本功能是將終端用戶請(qǐng)求路由到對(duì)應(yīng)的服務(wù)器實(shí)例,并提供應(yīng)用動(dòng)態(tài)注冊(cè)等功能。目前絕大多數(shù)的實(shí)現(xiàn)是基于ngnix,同時(shí)也需要使用簡(jiǎn)單的lua腳本完成應(yīng)用注冊(cè)和路由查詢等基本功能;
2.服務(wù)管理模塊:該模塊會(huì)為開(kāi)發(fā)人員和運(yùn)維人員提供管理接口,其基本功能包括創(chuàng)建應(yīng)用實(shí)例、配置應(yīng)用運(yùn)行參數(shù)、啟停應(yīng)用、發(fā)布應(yīng)用程序、擴(kuò)容或縮容等。服務(wù)管理模塊也需要提供相應(yīng)的客戶端被用戶使用,如命令行或是用戶界面等;
3.應(yīng)用容器模塊:應(yīng)用容器是PaaS平臺(tái)的核心,其主要功能是管理應(yīng)用實(shí)例的生命周期,匯報(bào)應(yīng)用的運(yùn)行狀態(tài)等。目前來(lái)看,應(yīng)用容器可以基于虛擬機(jī)來(lái)實(shí)現(xiàn)(如AWS),也可以使用Linux容器技術(shù)來(lái)實(shí)現(xiàn),最早使用的是LXC,CloudFoundry使用的是自己的warden,同樣也是基于cgroup,現(xiàn)在最新的是docker;
4.應(yīng)用部署模塊:應(yīng)用部署模塊需要將應(yīng)用程序打包成為可直接部署的發(fā)布包。該模塊是實(shí)現(xiàn)PaaS平臺(tái)開(kāi)發(fā)性的關(guān)鍵。由于現(xiàn)有通用的PaaS平臺(tái)需要支持多種編程語(yǔ)言和框架,如Java, Python, Ruby和PHP等,當(dāng)應(yīng)用發(fā)布時(shí),PaaS平臺(tái)需要根據(jù)不同的編程語(yǔ)言將應(yīng)用打包成為通用的發(fā)布包,然后傳遞給容器模塊部署。應(yīng)用部署模塊是實(shí)現(xiàn)這一過(guò)程的關(guān)鍵,目前來(lái)看起源于Heroku的buildpack已經(jīng)被大家廣發(fā)接受;
5.塊存儲(chǔ)模塊:該模塊主要用于存儲(chǔ)應(yīng)用的發(fā)布包,需要保證程序包的長(zhǎng)久存儲(chǔ)和。目前AWS的Beanstalk直接使用S3,CF可以使用網(wǎng)絡(luò)文件系統(tǒng)NFS或是其他任何分布式文件存儲(chǔ)系統(tǒng)(如HBase);
6.數(shù)據(jù)存儲(chǔ)模塊:該模塊需要保存應(yīng)用和服務(wù)的基本信息,可以基于任何現(xiàn)有的數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn),如MYSQL或是MONGODB等;
7.監(jiān)控模塊:該模塊的作用是持續(xù)監(jiān)控應(yīng)用的運(yùn)行狀態(tài),比如健康狀態(tài)(是否存活)、資源使用率(CPU、內(nèi)存、硬盤(pán)、網(wǎng)絡(luò)等)和可用性等。這些指標(biāo)會(huì)成為整個(gè)PaaS平臺(tái)運(yùn)維的關(guān)鍵,也為自動(dòng)彈性伸縮奠定基礎(chǔ);
8.用戶認(rèn)證模塊:該模塊需要保證應(yīng)用程序的安全性和隔離性,通常而言,公有云的提供商會(huì)使用OAuth等技術(shù)集成現(xiàn)有的用戶認(rèn)證服務(wù);
9.消息總線模塊:該模塊也是最重要的模塊,由于PaaS平臺(tái)所搭建的是一個(gè)大規(guī)模分布式環(huán)境,通常而言,規(guī)模在數(shù)百臺(tái)到上千臺(tái)的機(jī)器數(shù)量,所有模塊之間的通訊會(huì)變成一個(gè)核心的問(wèn)題。所以消息總線會(huì)變成系統(tǒng)之間通訊的基礎(chǔ),通常需要支持pub/sub模式。
-
paas平臺(tái)
+關(guān)注
關(guān)注
0文章
3瀏覽量
2100
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論