『壹』 現在大家都在說的雲原生到底是什麼
雲原生是一個組合詞,可以拆分為「雲」和「原生」兩個詞,「雲」我們都知道,即在線網路,傳統的應用原本都跑在本地伺服器上,很有可能需要停機更新,且無法動態擴展,「雲」表示應用程序運行在分布式的雲環境中,可以頻繁變更,持續交付。
「原生」表示應用程序在設計前期就考慮到了雲平台的彈性和分布式特性,也就是為雲設計的。
可以簡單理解為:雲原生=微服務+DevOps+持續交付+容器化
| 微服務 |
即軟體架構,使用微服務架構可以將一個大型的應用程序按照功能模塊拆分成多個獨立自治的微服務,每個微服務僅僅實現一種功能,具有很明確的邊界。
帶來的好處有哪些?
1)服務的獨立部署
每個服務都是獨立的項目,可以獨立部署,不依賴於其他服務,耦合性低。
2)服務的快速啟動
拆分之後服務啟動的速度要比拆分之前快很多,因為依賴的庫少了,代碼量也少了。
3)更加適合敏捷開發。
敏捷開發以用戶的需求進化為核心,採用迭代、循序漸進的方法進行。服務拆分可以快速發布新版本,修改哪個服務只需要發布對應的服務即可,不用整體重新發布。
4)職責專一,由專門的團隊負責專門的服務。
業務發展迅速時,研發人員也會越來越多,每個團隊可以負責對應的業務線,服務的拆分有利於團隊之間的分工。
5)服務可以動態按需擴容
當某個服務的訪問量較大時,我們只需要將這個服務擴容即可。
6)代碼的復用
每個服務都提供REST API,所有的基礎服務都必須抽出來,很多的底層實現都可以以介面方式提供。
| 容器化 |
是雲原生的核心技術,它是一種相對於虛擬機來說更加輕量的虛擬化技術。能為我們提供一種可移植、可重用的方式來打包、分發和運行程序。
容器的基本思想就是將需要執行的所有軟體打包到一個可執行程序包。例如,將一個Java虛擬機、Tomcat伺服器以及應用程序本身打包進一個容器鏡像。用戶可以在基礎設施環境中使用這個容器鏡像啟動容器並運行應用程序。
而Docker是目前應用最為廣泛的容器引擎,容器化為微服務提供實施保障,起到應用隔離作用,K8S是容器編排系統,用於容器管理,容器間的負載均衡,Docker和K8s都採用Go編寫,(K8s全稱Kubernetes,由首字母K,結尾字母s以及中間的8個字母組成,所以簡稱為K8s)。
| DevOps |
是軟體開發人員和IT運維人員之間的合作過程,是一種工作環境、文化和實踐的集合,目標是高效地自動執行軟體交付和基礎架構更改流程。開發和運維人員通過持續不斷的溝通和協作,可以以一種標准化和自動化的方式快速、頻繁且可靠地交付應用。
| 持續交付 |
就是不誤時開發,不停機更新,是一種軟體開發方法,它利用自動化來加快新代碼的發布。在持續交付流程中,開發人員對應用所做的更改可通過自動化被推送至代碼存儲庫或容器鏡像倉庫。
『貳』 雲原生有哪些優勢
第一,極致彈性能力,以容器化方式運行的應用程序,其啟動和停止非常快,一般處在秒級或毫秒級。
第二,故障自愈、服務自治能力,採用容器編排框架,可以管理成千上萬的應用容器,當某個應用出現故障時,編排系統能夠及時發現並自動摘除問題應用,同時智能調度到有效資源上,保證了應用系統的穩定運行。
第三,大規模跨環境擴展能力,基於容器編排系統的PaaS平台,可以跨越部署到不同的環境中,包括不同的網路環境,不同的機房,不同的數據中心或不同的公有雲,利用聯邦集群的模式,可以讓應用在跨雲的環境中流轉,可以讓不同的雲環境作為資源補充,或者創建相同的應用到不同的數據中心,以此作為容災備份。
基於雲原生以上的幾個特點,在容器雲PaaS、DevOps、微服務治理、服務網格、API網關等等方面,時速雲做的還不錯,他們是一家全棧雲原生技術服務提供商,你可以了解一下。
『叄』 什麼是雲原生為啥這么火
一、雲原生是什麼?
雲原生是基於分布部署和統一運管的分布式雲 ,以容器、微服務、DevOps等技術為基礎建立的一套雲技術產品體系。
雲是相對於本地而言的,傳統的應用都是運行在本地機房的伺服器上,而雲的應用則是運行在雲端(如IAAS、PAAS、SAAS)。原生就是親生的、土生土長的意思,即應用一誕生就是基於雲的,可以直接在雲平台上運行或非常輕松的遷移到雲平台。我們可以這么來定義雲原生:是一種新型技術體系,是雲計算未來的發展方向。
雲原生應用要運行在雲平台, 那麼就必須要有雲的特點,比如彈性伸縮、分布式、快速部署、快速迭代、高效、持續。 這可不止是簡單的把原先在物理伺服器上的應用遷移到虛擬機里,不止是基礎設施和運行平台在雲上,應用架構、應用開發方式、應用部署方式、應用維護方式全都要做出改變。
二、雲原生的核心
雲原生的四大核心要素便是微服務技術、DevOps、持續交付、容器化。微服務技術使得應用原子化,所有的應用都可以獨立的部署、迭代。DevOps使得應用可以快速編譯、自動化測試、部署、發布、回滾,讓開發和運維一體化。持續交付讓應用可以頻繁發布、快速交付、快速反饋、降低發布風險。容器使得應用整體開發以容器為基礎,形成代碼組件復用、資源隔離。
微服務
微服務是一個獨立發布的應用服務,可以作為獨立組件升級、灰度或復用等,每個服務可以由專門的組織來單獨完成,依賴方只要定好輸入和輸出口即可完全開發,甚至整個團隊的組織架構更精簡,溝通成本低、效率高。
devOps
持續交付
敏捷開發要求持續交付,因為敏捷開發要求隨時有一個版本可以上到大群環境,所以要持續交付。持續交付目的的快速應對客戶的需求變化,要求發布非常頻繁,所以會存在多個版本同時提供服務的情況,因此需要支持灰度發布/金絲雀發布等。
容器化
Docker是軟體行業最受歡迎的軟體容器項目,Docker起到應用隔離作用,為微服務及其所需的所有配置、依賴關系和環境變數移動到全新、無差別的運行環境,移植性強。
三、雲原生的優勢
快速上線,雲開發可以在最短時間內上線。
專注業務邏輯
提高開發效率
雲開發模式提供API介面,通過API實現數據的存儲,文件的上傳等操作,大大提升開發效率。不需要學習新的語言,只需要掌握javascript就可以。
彈性伸縮
當性能要求不斷增加的時候,雲開發可以彈性擴展性能
『肆』 大數據的分布式資料庫的發展趨勢如何(分布式資料庫的優點)
現在大數據是一個十分火熱的技術,這也使得很多人都開始關注大數據的任何動態,因為大數據在某種程度上來說能夠影響我們的生活。在這篇文章中我們就給大家介紹一下大數據的分布式資料庫的發展趨勢,希望這篇文章能夠幫助大家更好理解大數據的分布式資料庫的發展趨勢。
其實不論是Hadoop還是分布式資料庫,技術體繫上兩者都已經向著計算存儲層分離的方式演進。對於Hadoop來說這一趨勢非常明顯,HDFS存儲與YARN調度計算的分離,使得計算與存儲均可以按需橫向擴展。而分布式資料庫近年來也在遵循類似的趨勢,很多資料庫已經將底層存儲與上層的SQL引擎進粗芹行剝離。傳統的XML資料庫、OO資料庫、與pre-RDBMS正在消亡;新興領域文檔類資料庫、圖資料庫、Table-Style資料庫與Multi-Model資料庫正在擴大自身影響;傳統關系型資料庫、列存儲資料庫、內存分析型資料庫正在考慮轉型。可以看到,從技術完整性與成熟度來看,Hadoop確實還處於相對早期的形態。直到今天,很多技術在很多企業應用中需要大量的手工調優才能夠勉強運行。同時,Hadoop的主要應用場景一直以來面向批處理分析型業務,傳統資料庫在線聯機處理部分不是其主要的發展方向。同時Hadoop技術由於開源生態體系過於龐大,同時參與改造的廠商太多,使得用戶很難完全熟悉整個體系,這一方面大大增加了開發的復雜度,提升了用戶使用的難度,另一方面則是各個廠商之間維護不同版本,使得產品的發展方向可能與開源版本差別逐漸加大。
而分布式資料庫領域經歷了幾十年的磨練,傳統RDBMS的MPP技術早已經爐火純青,在分類眾多的分布式資料庫中,其主要發展方向基本可以分為「分布式聯機資料庫」與「分布式分析型資料庫」兩種。對比Hadoop與分布式資料庫可以看出,Hadoop的產品發展方向定位,與分布式資料庫中列存儲數據戚棗庫相當重疊而在高並發聯機交易場景,在Hadoop中除了HBase能夠勉強沾邊以外,分布式資料庫則占據絕對的優勢。目前,從Hadoop行業的發展來看,很多廠商而是將其定位改變為數據科學與機器學習服務商。因此,從商業模式上看以Hadoop分銷的商業模式基本已經宣告結束,用戶已經體驗到維護整個Hadoop平台的困難而不願被強迫購買整個平台。大量用戶更願意把原來Hadoop的部件拆開靈活使用,為使用場景岩仔畢和結果買單,而非平台本身買單。另外一個細分市場——非結構化小文件存儲,一直以來都是對象存儲、塊存儲,與分布式文件系統的主戰場。如今,一些新一代資料庫也開始進入該領域,可以預見在未來的幾年中,小型非結構化文件存儲也可能成為具備多模數據處理能力的分布式資料庫的戰場之一。
我們在這篇文章中給大家介紹了很多有關大數據分布資料庫的發展前景,通過這篇文章我們不難發現資料庫的發展是一個極其重要的內容,只有搭建分布式資料庫,大數據才能夠更好地為我們服務。
『伍』 亞馬遜雲科技的雲存儲,最應該知道的有這三點
傳統存儲在以各種方式對接公有雲生態,公有雲的雲上服務類型也在不斷完善,作為企業信息化負責人要做的是更多地了解公有雲,然後,考慮如何充分利用公有雲的優勢。
本文通過介紹亞馬遜雲 科技 存儲服務的三個關鍵點,帶您認識雲存儲的現狀。
正文:
乘著互聯網產業的春風,雲存儲在過去近二十年走過了可遇不可求的發展歷程。也讓從90年代開始,就一直坐著冷板凳,負責數據歸檔的對象存儲,一躍成為整個互聯網數據的基石。
如今,絕大部分互聯網上可訪問的數據都靠對象存儲來存,偶爾曝出的數據泄露事件也大多都跟對象存儲有關,當然,問題不在於對象存儲本身。
從2006年,亞馬遜雲 科技 的對象存儲服務Amazon S3發布,到現在,算起來也有十六年的時間了,這也是亞馬遜雲 科技 推出的第一款雲服務。
從市場表現來看,Amazon S3是非常成功的,前兩年有人推測說,亞馬遜雲 科技 在存儲方面的營收規模非常大,甚至被稱作是全球最大的存儲公司,Amazon S3無疑是功勞最大的一個。
有人說,許多亞馬遜雲 科技 用戶使用的第一個產品就是Amazon S3對象存儲,在所有亞馬遜雲 科技 的用戶案例,在所有技術文檔里,Amazon S3的出鏡率都非常高。
雲上原生存儲Amazon S3的主線任務:不斷降低成本
如果亞馬遜雲 科技 的用戶沒用過Amazon S3,就好比去包子鋪吃飯沒點包子,光顧燒烤店沒吃烤串一樣,令人費解。
Amazon S3的易用性高、可用性高,開發者很喜歡,Amazon S3幾乎不丟數據的可靠性,穩定性也很高,運維管理人員很喜歡,Amazon S3在互聯網應用場景被普遍應用。
如今,Amazon S3上存著超過100萬億個對象,每秒需要處理上千百萬次請求。
Amazon S3一開始解決了可靠性和可用性以及安全方面的基本問題,性能也一直在提升,多年看下來,最大的工作重點就是不斷降低成本。
亞馬遜雲 科技 大中華區產品部總經理 陳曉建介紹稱,同樣存儲一份數據,如果2006年需要100塊錢,而在2022年就只需要大概15塊錢,16年間,Amazon S3的存儲成本降低了大約7倍。
2021年12月,亞馬遜雲 科技 宣布在全球九大區域,將Amazon S3 Standard In Frequent Access和Amazon S3 One Zone In Frequent Access的價格降低了31%。
Amazon S3存儲分了八個層級。
對於需要經常訪問的數據,首選標准版的Amazon S3,它具有毫秒級的訪問表現,而不太經常訪問的數據就選Amazon S3 Standard-IA上,相較於前者能節省大概40%的費用。
而對於那些很少訪問的數據,則可以選擇放在Amazon S3 Glacier DeepArcihve上,它的成本非常低,大約1美刀1個TB,但代價是,想把數據拿回來就得多等等,大概需要12到48個小時。
有人覺得這等的時間也太長了,於是,亞馬遜雲 科技 又推出了Amazon S3 Glacier Flexible Retrieval,只需要等上幾分鍾到幾小時。
就沒有一種,既可以便宜,訪問性能又高的存儲嗎?還真有。
這就是Amazon S3 Glacier Instant Retrieval,它是最新的一個存儲層級,拿回數據的速度是毫秒級的,成本與Amazon S3 Glacier相當,適合每季度才訪問一次、又需要毫秒級取回的海量數據。
另外,Amazon S3 One Zone-IA的成本也很低,顧名思義,數據只存在單個可用區上,而其他S3存儲的數據都在多個可用區上存著好幾分,相比之下,理論上丟數據的風險高了些。
最後,出於合規的要求,用戶有些數據不能上雲,亞馬遜雲 科技 可以提供Amazon Outposts,把雲的硬體放到了用戶的數據中心裡。使用Amazon S3 on Outposts,就像在雲上使用S3一樣。
總的來說,Amazon S3的存儲層級還是挺多的,但問題是,這給選型和管理也帶來了負擔。
為此,亞馬遜雲 科技 推出了Amazon S3 Intelligent-Tiering(智能分層),它會根據對象被訪問的次數在多個存儲層級間進行自動化遷移。
如果不能確定要選什麼或者存儲需求會變,那就選它,它不僅能解除選擇困難症,還能避免用戶自行管理數據分層的麻煩。
一家在東南亞和北美市場非常有影響力的互聯網公司,在亞馬遜雲 科技 上存放了大約幾十PB的數據,原本主要使用的是Amazon S3 Standard—IA,在使用Amazon S3智能分層後,沒有進行任何額外操作,就將存儲成本降低了62%。
亞馬遜雲 科技 最早在2018年就推出了Amazon S3智能分層功能,如今,Amazon S3智能分層已經涵蓋了Amazon S3家族的幾乎所有存儲類別,最多可節省68%的成本。
不僅如此,如今數據分層還拓展到文件存儲Amazon EFS,Amazon EFS提供四種文件存儲等級,數據分層能節省高達72%的存儲成本。
打通雲應用與傳統應用的隔閡:靠多種文件存儲
如果說,對象存儲是雲存儲的標配的話,那文件存儲就是雲存儲連接本地存儲的橋梁。
如今常見的應用分為兩類。
一類是雲原生的現代化應用,也就是在雲上開發的、充分利用雲架構優勢的應用,比如電商、 游戲 、社交媒體等平台。對應需要的存儲,大部分是對象存儲Amazon S3來滿足,少部分需要文件存儲Amazon EFS。
另一類是傳統企業應用,它誕生在公有雲之前,常見的有高性能計算、EDA、視頻渲染等場景,通常由本地的文件存儲系統,比如NAS來支撐的,為提升安全性和可靠性,通常都帶有快照、鏡像、遠程復制等功能特性。
這類工作負載並沒有根據雲架構的特點來設計,如果強行上雲,不僅需要調整應用本身,而且還可能出現兼容性的問題,為了避免此類問題,亞馬遜雲 科技 推出了FSx文件存儲家族。
從2018年開始,陸續推出了面向Windows環境的Amazon FSx for Windows,面向高性能計算場景的Amazon FSx for Lustre,面向大數據分析場景推出了Amazon FSx for OpenZFS。
金風慧能採用了亞馬遜雲 科技 構建HPC高性能計算系統,其中使用了Amazon FSx for Lustre共享存儲系統,不僅使氣象預測系統性能提升了10%,氣象計算時間縮短了1/3,還將成本降低了70%,運維復雜度也大大降低。
此外,還與知名存儲廠商NetApp合作推出了Amazon FSx for NetApp ONTAP,把NetApp的經典NAS文件存儲系統NetApp ONTAP放到了公有雲上。
NetApp在2015年就提出了Data Fabric的概念,大意就是想要實現數據在雲上和雲下的自由流動,是比較早積極擁抱混合雲的存儲廠商之一。
與一些存儲廠商的雲上託管服務不同,Amazon FSx for NetApp ONTAP沒有刪減任何功能,它是雲上唯一完整且全託管的NetApp ONTAP文件存儲系統,能夠無縫地跟企業本地的ONTAP系統對接,所以,用戶的IT系統不需要做任何改動,就能使用雲上服務。
2019年,NetApp與聯想成立合資公司——聯想凌拓,聯想凌拓在中國區提供相關服務,聯想凌拓產品管理與營銷高級總監林佑聲表示,從發布到現在,Amazon FSx for NetApp ONTAP得到了非常多客戶的認可,包括金融、醫療、石油以及高 科技 行業客戶。
嘉里物流原本是本地存儲NetApp ONTAP的用戶,隨著業務全球化發展,在數據擴容以及數據共享方面碰到的問題越來越多,通過使用亞馬遜雲 科技 提供的Amazon FSx for NetApp ONTAP,將數據從本地遷到雲上,解決了這些問題。
上雲之後,不僅可以使用原來NetApp ONTAP自帶的快照和備份等功能,同時,還可以使用亞馬遜雲 科技 遍布全球的數據中心,實現跨區域的災備。
補足數據保護方面的短板:Amazon Backup
一直以來,雲存儲被詬病的點還在於缺少數據災備功能,在如何維持業務連續性方面有一些爭議,而亞馬遜雲 科技 正在試著消除這一顧慮,這就是Amazon Backup。
由於缺少與業務價值的強關聯性,數據保護經常容易被忽視,同時,由於數據保護系統本身很復雜,合規的要求還特別多,實踐起來也特別麻煩,所以,數據保護的實踐相對落後。
可能也是基於這樣的考慮,亞馬遜雲 科技 的數據保護服務Amazon Backup才特別喜歡強調「一站式」「操作簡單」的特點,讓用戶知道,數據保護也沒有那麼麻煩。
於是我們看到,Amazon Backup能覆蓋旗下的幾乎所有存儲產品,包括塊存儲(Amazon EBS)、對象存儲、文件存儲、資料庫,以及計算和存儲網關等相關產品。
Amazon Backup的操作比較簡單,通過圖形的界面即可完成大部分操作,用戶還可以通過預設的策略進行自動化的備份,降低手動備份帶來的問題。
安全合規的問題讓許多用戶頭疼,Amazon Backup深度集成了亞馬遜雲 科技 自帶的KMS數據加密服務,整個備份操作許可權、數據訪問許可權都可以用IAM進行細顆粒度監控,滿足個人信息安全規范、信息安全等級保護等方面的合規要求。
Amazon Backup避免讓數據保護帶來太多的成本負擔,因此也用上了智能分層技術,用戶通過冷熱分層策略可以有效降低約75%的成本。
澳大利亞石油天然氣的供應商Santos要對Amazon EBS塊存儲做備份,原本都是用手動備份的方案,但隨著業務量的發展,備份的出錯率越來越高,成功率越來越低。
而在用了Amazon Backup後,平均備份任務用時和運營成本均有大幅降低,備份成功率到了100%,而且還完全做到企業數據合規。
結束語
確實如陳曉建所言,亞馬遜雲 科技 存儲服務已經成為IT行業的「水」和「電」,讓各行各業的業務都能從存儲服務中獲得價值。
亞馬遜雲 科技 的存儲服務類型和存儲的相關實踐都非常有代表性,而且,很多做法已經成了上雲的參考實踐,企業用戶應該多少了解亞馬遜雲 科技 的雲存儲,特別是有上雲打算的企業。
當然,上雲帶來的便捷和靈活,穩定性和安全性,以及對運維的解放都很吸引人。
還有顧慮?據我個人了解,亞馬遜雲 科技 非常在意企業在雲上的成功和成本節省,不僅會幫企業不斷優化。除此之外,市場上有一些專門的服務,幫助企業做規劃實施,讓你充分利用雲的優勢。
『陸』 從雲計算到雲原生:從概念到落地
雲計算最近幾年已經火得不行, 雲原生 (Cloud Native)這個概念又來了,如果上雲不「原生」,那就等於白上雲。究竟什麼是雲原生?雲原生有何優勢?怎麼從「不原生」一步一步做到雲原生?本文將給出切實可行的雲原生落地指南。
我們先從雲計算說起 。在雲計算普及之前,一個應用想要發布到互聯網,就需要企業自己先買幾台伺服器,找一個IDC機房,租幾個機架,把伺服器放進去。接下來就是裝Linux系統,部署應用。我們就假定用Java寫了Web應用,怎麼部署上去呢?先配置Tomcat伺服器,在把編譯好的war包上傳到伺服器,有用FTP的,安全意識高一點的會選SCP,然後配置Nginx、MySQL這些服務,最後一通調試,把應用跑起來,就算齊活。
這種物理機配合自搭網路環境、自搭Linux、自配環境的方式,有很多缺點,但最主要的問題有這么幾個:
解決方案是上雲 。上雲不能解決所有問題,但部分解決了前兩個問題:
但是如果僅僅滿足上雲,把物理機換成虛擬機,把物理網換成虛擬專用網(VPC),是遠遠不夠的。這些是計算資源和網路資源層面的簡化。應用方面,如果延續舊的一套開發、測試、部署流程,做不到快速迭代。
要做到快速迭代,敏捷開發,就需要DevOps,即開發運維由一個團隊負責,開發階段,就要把部署、運維的工作考慮進去,而不是發布一個war包或者jar包後扔給運維不管了。
重開發、輕部署,直接後果就是缺少自動化發布流程。想要把部署規范化,就需要整體考慮一系列問題。
還是以Java應用為例,如果是手動部署,那麼就上傳war包到伺服器,覆蓋原有的版本,重啟Tomcat,再測試。如果發現有嚴重問題要回滾怎麼辦?把老版本再傳一遍,然後重啟Tomcat。
手動部署,每次部署都是一次生死考驗,所以最好不要安排在半夜,以免手抖敲錯了命令,本來中斷10分鍾的服務,變成了災備恢復,中斷3天。
稍微靠譜一點的是寫腳本部署,但各家寫出來的腳本都有各家特色,不通用,不易維護,所以更好的方式是用成熟的部署方案,比如Ansible,把腳本標准化,比如做成藍綠發布,把伺服器分組,比如A、B兩組,先把流量切到B組,升級A組伺服器,有問題就回滾,沒問題了,再把流量切到A組,升級B組伺服器,最後,恢復正常流量,整個部署完成。
但是回滾這個事情,遠沒有那麼簡單。做過開發的同學都知道,升級新版本,一般要加配置,改配置,如果回滾到舊版本,忘了把配置改回去,那舊版本可能也不能正常工作。
上雲,除了物理變虛擬,簡化運維外,最重要的特點——彈性計算,一定要充分利用。
理論指導實踐,實踐完善理論。如果我們分析大多數基於互聯網的應用,可以看到,一個應用,通常用到的資源如下:
上雲後,雲服務商通常都提供託管的資料庫,以及大規模存儲系統(S3),可解決存儲資源問題。通過雲服務商提供的負載均衡(Load Balancer),也無需自行部署Nginx等網關,免去了運維的問題。各種標準的業務組件如Redis、Kafka等,均可直接租用雲服務商提供的資源。
我們重點討論計算資源,也就是雲上的虛擬機資源。對於應用來說,可以設計成有狀態和無狀態兩種。一個應用在一台虛擬機內跑著,如果有本地文件的修改,它就是有狀態的。有狀態的應用既不利於擴展,也不利於部署。反過來,如果一個應用在運行期數據總是存在資料庫或者緩存集群,本地文件無任何修改,它就是無狀態的。
無狀態的應用對應的虛擬機實際上就是不變的計算資源。這里的「不變」非常重要,它是指,一台虛擬機通過一個固定的鏡像(預先內置好必要的支持環境,如JRE等)啟動後,部署一個應用(對應一個war包或者jar包),該虛擬機狀態就不再變化了,直接運行到銷毀。
有的同學會問:如果給這台虛擬機重新部署一個新的應用版本,它的狀態不就發生了變化?
確實如此。為了確保虛擬機的不變性,一旦啟動後部署了某個版本,就不允許再重新部署。這樣一來,對虛擬機這種計算資源來說,就具有了不變性。不變性意味著某個虛擬機上的應用版本是確定的,與之打包的配置文件是確定的,不存在今天是版本1,明天變成版本2,後天回滾到版本1的情況。
計算資源不變,能確保啟動一台虛擬機,對應發布的應用版本和配置是確定的且不變的,對於運維、排錯非常重要。
那麼如何在保持計算資源不變的前提下發布新版本?
我們以AWS的CodeDeploy服務為例,假設一組正在運行的某應用v1集群包含3台虛擬機:
現在,我們要把應用從v1升級到v2,絕不能直接把現有的3台虛擬機的應用直接升級,而是由CodeDeploy服務啟動3台新的一模一樣的虛擬機,只是部署的應用是v2。現在,一共有6台虛擬機,其中3台運行v1版本,另外3台運行v2版本,但此刻負載均衡控制的網路流量仍然導向v1集群,用戶感受不到任何變化:
v2集群部署成功後,做一些自動化冒煙測試和內網測試,如果有問題,直接銷毀,相當於本次部署失敗,但無需回滾。如果沒有問題,通過負載均衡把流量從v1集群切到v2,用戶可無感知地直接訪問v2版本:
穩定一段時間(例如15分鍾)後,銷毀v1集群。至此,整個升級完成。
上述的藍綠部署就是CodeDeploy的一種標准部署流程。CodeDeploy也支持灰度發布,適用於更大規模的應用。
把計算資源不可變應用到部署上,實際上是充分利用了彈性計算這個優勢,短時間創建和銷毀虛擬機,只有上雲才能做到,並且針對雲計算,把部署流程變得更加簡單可靠,每天發幾個版本甚至幾十、幾百個版本都變得可能,DevOps能落地,有點「雲原生」的味道了。
說到AWS的CodeDeploy,最早我使用AWS時,對於它的計費採用Reserved Instance預付模型感到很不理解,租用一台虛擬機,按國內阿里雲、騰訊雲包年包月預付享折扣不是更直觀嗎?如果僅僅把上雲變成租用虛擬機,那就完全喪失了彈性計算的優勢,相當於租用了一台虛擬機在裡面自己折騰。AWS的Reserved Instance計費並不綁定某一台虛擬機,而是一種規格的虛擬機。
我們還是舉例說明,如果我們有1台2v4G規格的虛擬機,並購買了1年的Reserved Instance,那麼,我隨時可以銷毀這台虛擬機,並重新創建一台同樣規格的新的虛擬機,Reserved Instance計費會自動匹配到新的虛擬機上,這樣才能實現計算資源不變,頻繁實施藍綠部署,真正把部署變成一種雲服務。最近阿里雲終於推出了節省計劃的付費模式,有點真正的雲計算的付費味道了,但是騰訊雲、華為雲還停留在包年包月和按量付費這兩種原始租賃模型。
講了這么多自動化部署,實際上一個指導思想就是如何充分利用雲的彈性計算資源。從充分利用雲的彈性資源為出發點,設計一整套開發、部署、測試的流程,就是雲原生。彈性資源利用得越充分,雲原生的「濃度」就越高,就越容易實施小步快跑的快速迭代。
那麼虛擬機是不是彈性最好的計算資源呢?從應用的角度看,顯然容器是一種比虛擬機更具彈性,更加抽象,也更容易部署的計算資源。
容器和虛擬機相比,它實際上是一種資源隔離的進程,運行在容器中的應用比獨佔一個虛擬機消耗的資源更少,啟動速度更快。此外,容器的鏡像包含了完整的運行時環境,部署的時候,無需考慮任何額外的組件,比其他任何部署方式都簡單。使用容器,開發部署流程就變成了開發,生成鏡像,推送至Docker Hub或雲服務商提供的Registry,直接啟動容器,整個過程大大簡化。
使用容器比使用CodeDeploy部署還要更加簡單,因為CodeDeploy需要在虛擬機鏡像中預置Agent,由於沒有統一的發布標准,還需要配置CodeDeploy,告訴它去哪拉取最新版本,這又涉及到一系列許可權配置。而容器作為標準的部署方案,連發布系統都以Registry對各個鏡像版本進行了有效管理,所以部署非常簡單。
容器作為一種彈性計算資源,也應遵循計算不變性,即不要給容器掛載可變的存儲卷。一組不變的容器集群才能更容易地升級。容器的運行方式本身就遵循了不變性原則,因為通過一個鏡像啟動一個容器,在運行過程中,是不可能換一個鏡像的。容器本身也強烈不建議應用寫入數據到文件系統,因為重啟後這些修改將全部丟失。
容器的啟動和銷毀非常容易,不過,容器的管理卻並不簡單。容器的管理涉及到創建、調度、彈性擴容、負載均衡、故障檢測等等,Kubernetes作為事實上的容器編排標准平台,已經成為各個雲服務商的標配。
如果要直接使用K8s,在雲環境中首先要有一組虛擬機資源作為底層資源,然後搭建K8s環境,定義好容器編排並啟動容器。雲服務商幾乎都提供託管的K8s服務,但直接管理K8s仍然需要非常熟悉K8s的工程師。
還有一種更簡單的使用容器的方式,即完全將底層虛擬機和K8s託管給雲服務商,企業客戶只需關心如何部署容器,底層的K8s和虛擬機對企業不可見或者無需關心。AWS的Elastic Container和阿里雲的彈性容器均為此類服務。對於中小規模的應用來說,計算資源直接使用容器,再配合雲服務商提供的負載均衡,託管的資料庫、消息系統、日誌系統等組件服務,應該是目前最「雲原生」的一種方案。
最後,我們總結一下雲原生的特點:
所謂雲原生,就是在上雲的過程中,充分發揮雲平台的彈性計算、彈性存儲的優勢,盡量把應用設計成適合雲計算的架構,把部署設計成簡單易用的流程,這樣才能實現業務快速上線,快速迭代。
雲原生是一個大方向,在上雲的過程中,逐步改造應用架構和部署流程,從手動往自動轉,逐步增加計算資源的彈性,就能把雲原生一步步落地。
『柒』 什麼是「雲原生存儲」產品有哪些特點有哪些商用的產品
1、雲原生存儲
雲原生存儲的概念來源於雲原生應用,指一個應用為了滿足雲原生特性的要求,其對存儲所要求的特性是雲原生存儲的特性,而滿足這些特性的存儲方案,可以稱其為傾向雲原生的存儲。能夠提供這類服務的產品,就是雲原生存儲產品。
2、雲原生存儲產品有哪些特點?
塊介面——優點:高可用、低延遲、單應用吞吐更高 缺點:容量彈縮弱、數據共享性差。
文件系統介面——優點:多負載共享數據、多負載吞吐更高 缺點:共享數據時,文件鎖性能差。
對象存儲介面——優點:高可用、大容量、多負載共享數據、多負載吞吐更高 缺點:時延高。
3、具體推薦要根據實際情況來定,不同的介面偏向不同的業務。