雲計算下PAAS的解析一

来源:http://www.cnblogs.com/wintersun/archive/2016/12/03/6128300.html
-Advertisement-
Play Games

雲計算下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),即基礎設施即服務。

image

image

image

與分散式系統的關係?
image

Paas架構模型


image
image
image

核心實現-配置管理優先


image

核心實現-服務發現和註冊


image

核心實現-資源分配和調度

image

核心實現-向外的和向內的彈性


image

核心實現-緩存本地化與分散式化的折中


image

核心實現-流式日誌


image

核心實現-編譯時依賴和運行時依賴


image

核心實現-多租戶資源隔離

雲的特點是資源池化,甚至為每個用戶開闢他自己獨有的應用資源空間,而與其他應用隔離起來。我們
稱之為“多租戶機制”,比如k8s的namespace就是實現了這種隔離機制.
如何實現哪?
1)對於Iaas,VM是資源隔離的非常好的手段,但是比較重。
2)LXC實現了OS級別的資源隔離,並演化成類似Docker這種隔離手段。但是依然是本地隔離手段。
3)需要結合1-2的本地級隔離手段,在Paas上層的資源分配機制上進行處理,資源分配時將各個資源
匯聚成一個隔離的組並掛接或者註冊到一個App的“名下”,這些都需要配置和元數據管理的支持。
以後再分配資源時,其他App將不會獲得當前App的資源,並且當前資源如果崩潰,也不會影響到
其他應用。
4)網路也可以進行隔離,比如Vxlan,或者劃分專有網路:計算網路、存儲網路、管理網路等等
image

核心實現-全鏈路跟蹤和分析系統


image

核心實現-鏈路優化

將監控集群狀態的心跳與集群命令下發合併,優化通信線路的負載。

核心實現-部署自動化-系統層面

image

核心實現-部署自動化-應用層面

1.部署時涉及編排的問題,也就是服務應該以何種狀態部署哪一個容器或者節點上,以及與其他節點的關係
策略:相親性和反相親性。
2.部署時還涉及版本管理、配置管理、持續發佈和持續集成的問題,用於更好的走完生產的最後一公裡。
但是在開發應用期間是建議頻繁地在測試環境部署驗證的,可以儘快發現問題並演練部署策略和程式

image

核心實現-不可忽視的本地治理

1.整體由部分組成,部分的效能最大化就是整體效能的最大化的重要因素之一,整體效能還取決於各個組件的整合和協作方式的設計以及實現。首先實現本地合理的治理,是必須實現的事情。
2.RPC的效能、伺服器線程以及IO的處理方式、埋點的透明化、本地監控、本地緩存、本地調用調度(節點管理器),本地升級策略等等都是要關註的點。
3.生命周期管理:節點管理器必須實現對服務實例的生命周期管理,並與集群管理器緊密結合,在節點服務失敗或者崩潰時可以試圖重新恢復和拉起服務進程或者通知上層集群管理器重新調度。

核心實現-監控閉環
image
移植遺留系

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
image

微服務是什麼?

在分散式、雲等基礎設施支持下,從SOA演變而來的、具備明確的事務上下邊界的、鬆散耦合的、
可以並行開發、簡單開發、簡單或自動運維的、相互協作形成有機整體併為外部應用提供自省治理的
、不間斷的、高性能的服務系統。

image

前面提到互聯網的分而治之的策略,大規模的分散式服務化系統在穩健的服務治理、彈性拓展、容災
以及開發周期能力支持下變得可管理、開跟蹤、高性能、高生命力。服務化的基礎是基礎設施的穩定力!
只要有一個堅如磐石的基礎設施,服務化就是非常可行的決策!

套娃-軟體架構之殤

image

1.在介紹核心實現的部分中,提到配置必須先行的道理,就是要保證內環境和外環境的一致性。
2.Docker雖然可以保證內部小環境的一致性,諸如CoreOS之類可以保證OS級別的版本一致性,但是Paas
由於是分散式系統,它的各個組成組件也需要一致性保證,否則很難保證服務質量和延續性。
可以採用冗餘服務+滾動式升級的辦法解決這個難題。

不要把焦點僅僅放在Docker上!

最近一年來,看到Docker幾乎瀰漫在各種系統中了,但是Docker解決了App內部環境一致性、解決了傳統Paas彈性拓展和容災時效的問題\基準鏡像分發等等,但是從架構上看過去,
它本身並不能解決App生產的其他大部分問題,所以當您僅僅關註Docker的話,那就失去了Paas的能力,K8s、Swarm、Mesos等解決了一部分自動化問題,但是還不完整,只是算是Mini Paas。
image

微服務化與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集成 , 企業信息化,項目管理,企業管理 等資訊,請關註我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[1]

 


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文:http://www.cnblogs.com/imaker/p/6128049.html 所屬年份:2010.9;2012.3編寫函數fun,其功能是:根據以下公式求π的值(要求精度0.0005,即某項小於0.0005時停止迭代)。 程式運行後,若輸入精度0.0005,則程式應輸出為3.14… ...
  • 如下是作業,用python做一個ftp,主要利用socket。 server端在linux下運行,在client端可以執行shell命令(靜態的) 在client端輸入get xxx,即可下載。 在client端輸入put xxx,即可上傳。 server端: client端: ...
  • 1.簡化Java開發 Spring是一個開源框架,它的根本使命在於簡化java開發。為了降低java開發的複雜性,Spring採取了以下4種關鍵策略: 1.基於POJO的輕量級和最小侵入性編程; 有很多框架強迫應用繼承它們的類或實現它們的介面從而導致應用與框架綁死,而基於Spring構建的應用通常沒 ...
  • STL的pair,有兩個值,可以是不同的類型。 template struct pair; 註意,pair在頭文件utility中,不要include。(一個錯誤是 include ) 成員類型 first_type first的類型 second_type second的類型 成員變數 first... ...
  • 解釋如下: content 中需要被替換的就是{}中的參數,array數組中存放的是對應的要替換的參數;使用MessageFormat方法的時候,需要要將這些參數的個數匹配正確,並且數序要指定,否則匹配出錯。這樣就實現了參數的替換。很簡單,也很死板。 MessageFormat:出自java.tex ...
  • 在所有編程語言領域,我想字元串應該是地球上最常用的表達手段了吧。 在java的世界里,String是作為類出現的,核心的一個域就是一個char數組,內部就是通過維護一個不可變的char數組,來向外部輸出的。 這是jdk一段String類定義,首先類是final,表明類不可被繼承;核心域是privat ...
  • 1.package 的用途,解決了什麼問題 提供類的命名空間,解決類的命名衝突,類文件管理問題 2.使用舉例 2.1 自測代碼 (1) package 必須做為源文件的第一條非註釋語句 (2) 一個源文件只能有一個包 (3) 沒有顯示指定則處於預設包下 (4) 同包下可自由訪問 1 package ...
  • 前言 項目框架主要是spring,持久層框架沒有用mybtis,用的是spring 的jdbc; 業務需求:給應用添加領域(一個領域包含多個應用,一個應用可能屬於多個領域,一般而言一個應用只屬於一個領域),要求是給應用添加領域的時候,先將該應用已有的領域都刪除,之後再將選中的領域添加到資料庫; 為了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...