雲計算下PAAS的解析一 PaaS是Platform-as-a-Service的縮寫,意思是平臺即服務。 把伺服器平臺作為一種服務提供的商業模式。通過網路進行程式提供的服務稱之為SaaS(Software as a Service),而雲計算時代相應的伺服器平臺或者開發環境作為服務進行提供就成為了P... ...
雲計算下PAAS的解析一
PaaS是Platform-as-a-Service的縮寫,意思是平臺即服務。 把伺服器平臺作為一種服務提供的商業模式。通過網路進行程式提供的服務稱之為SaaS(Software as a Service),而雲計算時代相應的伺服器平臺或者開發環境作為服務進行提供就成為了PaaS(Platform as a Service)。所謂PaaS實際上是指將軟體研發的平臺(計世資訊定義為業務基礎平臺)作為一種服務,以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。
IaaS(Infrastructure as a Service),即基礎設施即服務。
與分散式系統的關係?
Paas架構模型
核心實現-配置管理優先
核心實現-服務發現和註冊
核心實現-資源分配和調度
核心實現-向外的和向內的彈性
核心實現-緩存本地化與分散式化的折中
核心實現-流式日誌
核心實現-編譯時依賴和運行時依賴
核心實現-多租戶資源隔離
雲的特點是資源池化,甚至為每個用戶開闢他自己獨有的應用資源空間,而與其他應用隔離起來。我們
稱之為“多租戶機制”,比如k8s的namespace就是實現了這種隔離機制.
如何實現哪?
1)對於Iaas,VM是資源隔離的非常好的手段,但是比較重。
2)LXC實現了OS級別的資源隔離,並演化成類似Docker這種隔離手段。但是依然是本地隔離手段。
3)需要結合1-2的本地級隔離手段,在Paas上層的資源分配機制上進行處理,資源分配時將各個資源
匯聚成一個隔離的組並掛接或者註冊到一個App的“名下”,這些都需要配置和元數據管理的支持。
以後再分配資源時,其他App將不會獲得當前App的資源,並且當前資源如果崩潰,也不會影響到
其他應用。
4)網路也可以進行隔離,比如Vxlan,或者劃分專有網路:計算網路、存儲網路、管理網路等等
核心實現-全鏈路跟蹤和分析系統
核心實現-鏈路優化
將監控集群狀態的心跳與集群命令下發合併,優化通信線路的負載。
核心實現-部署自動化-系統層面
核心實現-部署自動化-應用層面
1.部署時涉及編排的問題,也就是服務應該以何種狀態部署哪一個容器或者節點上,以及與其他節點的關係
策略:相親性和反相親性。
2.部署時還涉及版本管理、配置管理、持續發佈和持續集成的問題,用於更好的走完生產的最後一公裡。
但是在開發應用期間是建議頻繁地在測試環境部署驗證的,可以儘快發現問題並演練部署策略和程式
核心實現-不可忽視的本地治理
1.整體由部分組成,部分的效能最大化就是整體效能的最大化的重要因素之一,整體效能還取決於各個組件的整合和協作方式的設計以及實現。首先實現本地合理的治理,是必須實現的事情。
2.RPC的效能、伺服器線程以及IO的處理方式、埋點的透明化、本地監控、本地緩存、本地調用調度(節點管理器),本地升級策略等等都是要關註的點。
3.生命周期管理:節點管理器必須實現對服務實例的生命周期管理,並與集群管理器緊密結合,在節點服務失敗或者崩潰時可以試圖重新恢復和拉起服務進程或者通知上層集群管理器重新調度。
核心實現-監控閉環
移植遺留系
1.以上的內容,說明瞭Paas的三個核心內容:開發設施自動化、運維自動化和運行時環境自動化。
2.但是這樣的情況直接導致了遺留系統遷移的困難,因為老時代的系統往往很“重”,一開始就被鎖定在厚重的鎧甲中,另外一個更加讓人為難的就是釋放鎧甲必須修改應用代碼,這就涉及業務、功能重構! 這也是很多企業實施Paas很艱難的原因!
3.具體的一些情況:
A:系統服務之間使用獨立密碼庫授權通信,難以使得自動化手段開通策略,實現自動擴容和伸縮。
B:老應用代碼依賴於應用伺服器的Api,比如很老的系統使用EJB架構。使得適應新的Paas變得非常困難!
C:上Paas的動因也在於老系統面臨的環境從內部走向外部了,但是之前架構師設計系統時是按由里往外的思路進行的,比如重點放在交易模塊上(因為此時線下活動占主流),因為業務的發展,對系統的要求越來越高,要適應互聯網環境的要求,比如互聯網上查詢的量要遠遠大於交易的量,正好和原來的思路相反,是從外向里的,這造成應用架構的極大不同,那麼就要求調整到分而治之的架構,那麼必然要求要進行調整和重構。
D:….......
那麼就沒有很好的辦法儘量減少這些麻煩嗎?因為麻煩意味著風險和成本
移植遺留系統-解決思路
1.總的方向就是向自動化、自省化、彈性化等努力。
2.我們可以通過回答以下的問題來決定如何調整您的系統:
A:本地應用不要依賴於本地的存儲來持久化數據(可以臨時性的,但是給系統帶來風險),日誌變成流匯聚到分散式日誌系統中,如果非要使用存儲,請使用類似HDFS來保存,您的系統是否依賴於本地存儲哪?
B:如果應用上傳文件,那麼這些文件應該如何存儲?請參考問題一。
C:集群中多實例的配置文件是否完全與底層OS解耦,配置文件是否不依賴於主機名和Ip?(可以採用環境變數來解決)
D:應用是否存在需要很長時間處理的任務類型?(儘量非同步化的方式解決)
E:集群中實例是否採用了獨立安全授權的方式組建?(需要拆除)
F:集群中是否使用了硬體負載均衡設備?(需要撤除)
G:需要把服務無狀態化,您的App到底有多少部分需要依賴狀態?
H:您如果拆分業務系統,是按業務視角還是用戶視角?(建議採用業務視角,因為熱點根本無法預測)
I:業務拆分的原則是:識別基礎核心業務能力、業務核心能力、上層業務能力等
應用架構:CQRS
微服務是什麼?
在分散式、雲等基礎設施支持下,從SOA演變而來的、具備明確的事務上下邊界的、鬆散耦合的、
可以並行開發、簡單開發、簡單或自動運維的、相互協作形成有機整體併為外部應用提供自省治理的
、不間斷的、高性能的服務系統。
前面提到互聯網的分而治之的策略,大規模的分散式服務化系統在穩健的服務治理、彈性拓展、容災
以及開發周期能力支持下變得可管理、開跟蹤、高性能、高生命力。服務化的基礎是基礎設施的穩定力!
只要有一個堅如磐石的基礎設施,服務化就是非常可行的決策!
套娃-軟體架構之殤
1.在介紹核心實現的部分中,提到配置必須先行的道理,就是要保證內環境和外環境的一致性。
2.Docker雖然可以保證內部小環境的一致性,諸如CoreOS之類可以保證OS級別的版本一致性,但是Paas
由於是分散式系統,它的各個組成組件也需要一致性保證,否則很難保證服務質量和延續性。
可以採用冗餘服務+滾動式升級的辦法解決這個難題。
不要把焦點僅僅放在Docker上!
最近一年來,看到Docker幾乎瀰漫在各種系統中了,但是Docker解決了App內部環境一致性、解決了傳統Paas彈性拓展和容災時效的問題\基準鏡像分發等等,但是從架構上看過去,
它本身並不能解決App生產的其他大部分問題,所以當您僅僅關註Docker的話,那就失去了Paas的能力,K8s、Swarm、Mesos等解決了一部分自動化問題,但是還不完整,只是算是Mini Paas。
微服務化與Docker的關係
微服務是活在Tomcat或者Docker裡面並沒有本質區別,之所以業界喜歡採用Docker作為微服務的設計期和運行時基礎,是因為它有著諸多好的有點,比如環境一致性可以簡化配置管理、簡化Paas
生命周期管理的難度等等,但是本質來講,微服務和Docker並無強關係,只是Docker的諸多方便之處,更加適合而已,所以採用Docker的系統未必是微服務,微服務構建的系統也未必是Docker構成。
Paas的未來
經濟的發展、業務的發展所導致工作量的增加將促進PaaS得到採用。
• IaaS提供商將往堆棧的上層移動,涵蓋PaaS IT,大量的中間件被雲化。
• 公共PaaS將贏得中小企業市場,因為它提供了開箱即用的基礎設施。
• 公共服務將把大企業市場讓給私有PaaS。
• 開源PaaS平臺將蓬勃發展,形成助推的作用。
• 開源PaaS平臺將通過流行的Linux發行版來提供,進一步簡化Paas的管理複雜度。
• 專有的PaaS將開始如同開源產品,也體現出業界標準化的意願。
• PaaS相容性?更像是PaaS衝突性,由於各個廠家為了在競爭中取勝,也會更多的在自己的特殊性上下功夫,造成標準的不統一的局面,但是在市場的驅動力下,標準遲早會統一起來。
• Paas變成一種生產互聯網產品的工廠,逐漸成為標配,並融合在日常的基礎設施中。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
希望對您軟體項目開發,運維管理,系統架構與研發管理體系, 信息安全等有幫助。 其它您可能感興趣的文章:
雲計算參考架構幾例
微服務與Docker介紹
互聯網直播平臺架構案例一
高可用架構案例一
某互聯網公司廣告平臺技術架構
某大型電商雲平臺實踐
雲計算參考架構幾例
移動應用App測試與質量管理一
全面的軟體測試
著名ERP廠商的SSO單點登錄解決方案介紹一
軟體項目風險管理介紹
企業項目化管理介紹
智能企業與信息化之一
由企業家基本素質想到的
敏捷軟體質量保證的方法與實踐
構建高效的研發與自動化運維
IT運維監控解決方案介紹
IT持續集成之質量管理
人才公司環境與企業文化
企業績效管理系統之平衡記分卡
企業文化、團隊文化與知識共用
高效能的團隊建設
餐飲連鎖公司IT信息化解決方案一
如有想瞭解更多軟體研發 , 系統 IT集成 , 企業信息化,項目管理,企業管理 等資訊,請關註我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog。