⑴ 各位使用的分布式文件存儲,有哪些產品使用體驗更好一些
我覺得XSKY星辰天合的XGFS文件存儲軟體不錯,這個軟體只需要三個全快閃記憶體元數據高可用節點,就可以高效保存和處理 100 億文件規模的數據。可以靈活擴展,滿足公司不斷增長的業務對性能和容量的需求。
⑵ 大繁至簡,首度揭秘阿里雲飛天洛神系統
摘此塵好要: 洛神是阿里雲飛天中負責虛擬網路的系統,她為阿里雲客戶提供了豐富的網路產品,如VPC、SLB等。同時,她也是ECS,RDS,OSS,NAS等100多個雲產品的網路基礎設施。她還支撐了阿里巴巴集團和螞蟻金服集團眾多業務,如電商、支付、物流等。
「最好的網路就像神一樣,無處不在,又感知不到她的存在 …… 大繁至簡,這是我們努力的方向。」 – 阿里雲網路高級技術專家 孫成浩
2018杭州·雲棲大會的主會場上,阿里雲產品總監何雲飛介紹了阿里雲自主研發的雲操作系統飛天的全面升級版飛天2.0。作為飛天2.0核心組成部分之一,洛神首次向外界揭開了她神秘的面紗。在隨後的未來網路技術專場上,阿里雲網路高級技術專家孫成浩對飛天洛神進行了更為詳細的闡述。本文是首次對飛天洛神的概念、演進、架構、特點等方面進行系統化的解讀。
什麼是飛天洛神
從物理網路到用戶感知到的網路之間存在一個虛擬網路層。在阿里雲,我們給這套虛擬網路系統起了個名字,叫做洛神。洛神是阿里雲飛天中負責虛擬網路的系統,她為阿里雲客戶提供了豐富的網路產品,如VPC、SLB等。同時,她也是ECS,RDS,OSS,NAS等100多個雲產品的網路基礎設施。她還支撐了阿里巴巴集團和螞蟻金服集團眾多業務,如電商、支付、物流等。在全球范圍內,洛神服務著百行百業超過百萬的用戶。在雙十一、世界盃、春運等互聯網流量的尖峰時刻,為每一個消費者的流暢網路體驗而默默保駕護航。
很多人都知道阿里雲有一個飛天(Apsara)系統,系統中各組件是用各種神的名字命名的,包括盤古,伏羲,女媧,神農等,其中盤古是分布式文件系統,伏羲是分布式調度系統。為什麼叫虛擬網路系統叫洛神呢?在古代,河運是非常重要的交通手段,就好比今天的網路一樣。因此,在給虛擬網路系統起名的時候,我們就起了一個河神的名字,叫洛神。
飛天洛神的架構
洛神是阿里雲的分布式操作系統飛天的一部分。在飛天的基礎架構裡面,最上層是各種雲產品,包括大家熟悉的雲產品RDS,ECS,VPC,SLB等等,支撐這些是飛天的3個基礎組件,包括存儲系統盤古,資源管理伏羲和網路管理洛神。也就是說,洛神除了支撐了阿里雲的網路雲產品之外,另外一個重要的角色就是支撐了其他雲產品的網路基礎設施。
講到洛神的技術架構,洛神系統由3大模塊組成
– 數據平面,控制平面和管理平面。
數據平面負責雲網路中數據包的處理,它就如同物理世界中的網線和路由交換設備,把數據包高效率低延遲的從發送端送到目的地。類似的,洛神數據平面也包含各種不同角森鉛色的組件,包括支持各種不同類型計算形態的虛擬交換機,用於數據中心互連的DCN網關,用於雲網路連接公網的internet網關,用於雲上雲下互連的混合雲網關,提供負載均衡能力的負載均衡網關和提供端接入能力的智能接入網關。為了提高這些組件的轉發性能,洛神不僅使用了軟轉發的技術,而且也對軟硬體結合甚至純硬體的技術進兄余行了廣泛應用。
控制平面則控制如何處理數據包,他是洛神的業務大腦。從技術上看,洛神的控制平面是一個層次性的分布式控制系統,最底層的設備控制器主要負責控制和管理數據平面的各種組件,同時在每個區域存在一個虛擬網路控制器,在全局存在一個全球路由控制器。區域的虛擬網路控制器則負責本區域的雲網路的管理與調度, 全局路由控制器則負責協調調度各個區域的資源形成一張全球的雲網路。基於虛擬網路控制器和全局路由控制器之上的則是NFV控制器,完成虛擬網路高級功能例如VPN等產品的編排和抽象。
洛神的管理平面是網路運維和運營的中樞,它管理著海量的網元以及用戶,這里的海量指的是千萬級虛擬機和百萬級網元。為了能做到這一點,洛神的管理平台是基於大數據以及機器學習技術實現的,它對網路運行當中產生的海量數據進行實時/離線計算,數據建模,來驅動網路資源的提前規劃,網路系統的日常維護以及網路產品的智能運營。整個管理平麵包括了一套高性能,分布式的數據分析系統,由它分析出來的數據提供給智能運維和智能運營系統,完成資源規劃,網路建設,系統變更,實時監控,故障逃逸,產品運營等整個網路產品生命周期的工作。最終達到排無人值守的網路變更,先於用戶的問題發現,高效簡單的故障逃逸以及豐富全面的產品及用戶運營的效果。
飛天洛神的技術演進之路
洛神能夠成為飛天的四大支柱之一,不是一天煉成的。洛神的演進經歷了四個階段。
首先是經典網路階段,在這個階段,網路只有一個概念,就是公網帶寬。經典網路階段的問題是用戶無法自定義網路拓撲,這樣使得用戶無法完成雲上雲下的混合雲聯通。為了解決這個問題,洛神進入了VPC階段,VPC階段里,洛神在每個地域虛擬了數百萬張網路,並且用戶可以完全自定義這張網路。隨著網路規模越來越大,洛神也從區域網路進入到全球網路的階段,在這個階段,洛神主要解決如何更好的管理超大規模網路的問題,雲企業網和雲連接網構成了第三代洛神的兩個主要特性。
滿足了主要的客戶的需求之後,我們開始思考如何進一步提升用戶體驗。用戶對網路的核心訴求是什麼?其實,客戶的最大訴求是網路足夠強健可靠,不要發生問題。就像使用水和電一樣,用戶是不需要了解發電站和泵站在哪裡的。因此,洛神希望網路對用戶是無感知的,又是無處不在的。洛神的發展,是一個從0到1,到100,再回到0的演進過程,大繁至簡,這是我們在研發下一代洛神中努力的方向,這也是我們首先在業界提出Networkless理念背後的思考。
飛天洛神的特點
洛神的關鍵特點,包含安全,彈性和可靠,這3個特性也是洛神達到最終Networkless狀態的關鍵特徵。
安全是基本盤,因為overlay技術把網路邏輯的隔離掉,用戶的網路之前完全不會互通。並且洛神中還包含了各種加密服務可以給到用戶,打造更深層次的的安全。彈性有兩個數字,一個是秒級的轉發性能的彈性,洛神支持從1MB到1TB在一秒內完成彈性,另一個是規模的彈性,洛神的單網路支持10w台計算節點的規模。這樣,洛神既可以支持小到虛擬web主機這樣的服務,也可以支持打到雙11零點這樣的海量峰值流量。談到可靠性,我們參考年平均故障時間這個參數,洛神引發的單實例故障時間只有50ms,這個故障時間是極其短的。
關鍵設計
接下來我們詳細分析下洛神彈性和可靠性的關鍵設計。洛神系統的數據面,本身就是一台巨大的交換機。大家都知道,交換機的轉發晶元對數據包的處理,都是pipeline的,硬體處理永遠不會停下來,那洛神的數據面也是如此。從一個數據包進入洛神系統開始,到出去洛神系統的整個過程,經歷了洛神系統裡面的各個組件,都是不會被打斷的,這樣只處理一件事情的數據面,一定是高效的。洛神的數據麵包含了軟硬體結合的轉發技術和架構。此外,洛神系統的網路永遠不會因為維護而中斷,這意味著,洛神裡面的所有組件,都支持熱升級。
在可靠性角度上看,多機房容災是高可用的基礎。當阿里雲的某一個數據中心雲機房開始部署的時候,洛神系統在物理設施部署完成之後會首先進行部署。這個時候,機房裡面有計算集群,網關和控制平台。計算集群上面有我們的虛擬交換機組件。對於數據面和控制面的關鍵結點都是集群部署的,單台服務結點的問題不會對用戶產生任何的影響。當vm的宿主機出現宕機等嚴重問題的時候,可以在機房范圍內進行遷移,遷移本身也不會對vm的網路屬性和連通性產生任何的影響。每個雲機房裡面都會部署集群的網關和控制器結點,而且隨著機房的增多,會自動在雲機房裡面形成環形的備份關系。當一個新的機房建設起來,洛神系統部署之後,會自動加入到這個備份鏈裡面。這樣,當某一個機房的關鍵結點由於異常出現問題的時候,都可以自動在秒級切換到備份機房,由備份機房的洛神系統來提供服務。這種多層次容災機制,保證用戶可以在很快的時間內恢復業務。
除了多機房容災之外,如何快速發現bug和快速恢復,是可靠性的另一個關鍵點。為了解決這個問題,洛神首先設計了基於流的染色系統。如果把洛神系統看成一個整體的交換機,那麼從特性上來看,洛神系統是一個支持流跟蹤的交換機,具有各種豐富的策略。洛神系統的下面是物理網路的設備和交換機,通過洛神系統的流標記的能力和設定的策略,可以同時在物理網路和虛擬網路裡面具備流的染色,特定報文的鏡像,采樣,跟蹤等的能力。這些動作產生的日誌,都會通過採集後做實時計算,如果流量有異常,會產生報警和日誌給到管理員,部分報警可以觸發故障的自動處理和恢復。還有一部分數據經過計算處理,會產生數據報表和用戶畫像,也可以給到用戶一張炫酷的大屏。這個本質上就是數據化的能力。
結束語
飛天洛神的使命是讓網路更簡單。大家都知道AWS提出了Serverless的概念,和Serverless類似,洛神以Networkless的理念作為設計目標,我們希望用戶不再去關心網路拓撲,網路帶寬,網路地址這些專業技術,讓用戶感知不到網路的存在。Networkless首先是通過不斷的提高彈性和網路的可靠性來達到的,除此之外的關鍵特性就是NAAS化,讓用戶只關心網路通,而不需要去關心網路各種組件。
⑶ 塊存儲、文件存儲、對象存儲這三者的本質差別是什麼
一、概念及區別
針對不同的應用場景,選擇的分布式存儲方案也會不同,因此有了對象存儲、塊存儲、文件系統存儲。這三者的主要區別在於它們的存儲介面:
1. 對象存儲:
也就是通常意義的鍵值存儲,其介面就是簡單的GET,PUT,DEL和其他擴展,
2. 塊存儲:
這種介面通常以QEMU Driver或者Kernel Mole的方式存在,這種介面需要實現Linux的BlockDevice的介面或者QEMU提供的BlockDriver介面,如Sheepdog,AWS的EBS,青雲的雲硬碟和阿里雲的盤古系統,還有Ceph的RBD(RBD是Ceph面向塊存儲的介面)
3. 文件存儲:
通常意義是支持POSIX介面,它跟傳統的文件系統如Ext4是一個類型的,但區別在於分布式存儲提供了並行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲的介面),但是有時候又會把GFS,HDFS這種非POSIX介面的類文件存儲介面歸入此類。
二、IO特點
按照這三種介面和其應用場景,很容易了解這三種類型的IO特點,括弧里代表了它在非分布式情況下的對應:1. 對象存儲(鍵值資料庫):
介面簡單,一個對象我們可以看成一個文件,只能全寫全讀,通常以大文件為主,要求足夠的IO帶寬。
2. 塊存儲(硬碟):
它的IO特點與傳統的硬碟是一致的,一個硬碟應該是能面向通用需求的,即能應付大文件讀寫,也能處理好小文件讀寫。但是硬碟的特點是容量大,熱點明顯。因此塊存儲主要可以應付熱點問題。另外,塊存儲要求的延遲是最低的。
3. 文件存儲(文件系統):
支持文件存儲的介面的系統設計跟傳統本地文件系統如Ext4這種的特點和難點是一致的,它比塊存儲具有更豐富的介面,需要考慮目錄、文件屬性等支持,實現一個支持並行化的文件存儲應該是最困難的。但像HDFS、GFS這種自己定義標準的系統,可以通過根據實現來定義介面,會容易一點。
因此,這三種介面分別以非分布式情況下的鍵值資料庫、硬碟和文件系統的IO特點來對應即可。至於冷熱、快慢、大小文件而言更接近於業務。但是因為存儲系統是通用化實現,通常來說,需要盡量滿足各種需求,而介面定義已經一定意義上就砍去了一些需求,如對象存儲會以冷存儲更多,大文件為主。
⑷ 世界上第一個操作系統是如何編寫的
人家就問第一個操作系統是怎麼做出來的,樓下一堆人都沒說到點子上。
這個問題就像是沒有生產機器,那第一台機器是怎麼生產出來的。
第一台計算機,或者稱之為打孔計算機,破譯機。它的作用就是讀0和1的不同排列組合,通過這些組合來解譯不同的意思。比如 0010代表什麼意思,1101代表什麼意思。這些是一開始就設定好了的,就像是中國古代的算盤一樣,上面的運算元代表5,下面的運算元代表1是一個道理。
好了,開始就設定好這個解碼功能後,這台破譯機就可以讀信息了,它通過什麼讀呢?那時候沒有數據,沒有數字信號,只有模擬信號,它們就讀打孔紙。就是在紙上寫,然後打出一個一個孔,像卡紙一樣。設備就讀這個孔的排列,根據不同的排列去找這個排列代表了什麼,然後給出答案。這就是最初的計算機原理,非常簡單,它就是一個密碼解釋器,或者說是簡單的編譯器。
那時候就是用來算加減法等一些計算,它就是一個大型的計算器。
後來發展的復雜一些了,也就是增加了更多的0和1的組合來豐富機器的解釋庫,來計算更復雜的公式。
這時候你要問了,這些0和1的解釋庫是存在哪裡的?這就是為什麼以前的計算機房間那麼大個。它們是通過電子管的開和關來代表了0和1,通過電路給電子管通電,比如說那張紙打的孔,有一個像探頭一樣的東西,探測到那裡有一個孔,或者沒有孔,就給出電信號來控制不同的電子管組合的通路和斷路,最後給出結果。
比如我用紙戳一個1+1=?,我就戳一個(0000 0000 0000 0001)代表1(00001 001000 ....)代表+ (0000 0000 0000 0001)代表1,然後給機器讀,機器讀出來後,就會根據電子管的通斷組合,最後將結果反饋回來。一開始是用亮了多少盞燈來表示計算結果,有了顯示器後,才把它變成了顯示畫面。
顯示畫面其實也是有一個庫的,比如0001,你就給我顯示1,00010,你就給我顯示2,它會找對應的庫,這個庫一開始就用不同的電路
搭建做好,無非就是不同的電路通斷,電壓,電流等各種奇怪的組合來完成 。它自身有一套神奇的檢測機制,這個就不說了,我也說不清楚。
那麼回到最開始的問題,世界上第一個操作系統是怎麼出現的?就是用手在紙上寫出來的。
一開始不能算是系統,比如我要算一個公式,a /b +1+a+5*b,舉個例子,這個公式我要經常用,我不可能每次都要去戳很多紙,所以我只需要先做一個模板,然後留出一個空白,需要的時候,把a和b戳出來就可以了,這樣就很方便了。
後來這些公式越來越復雜,甚至是出現了不同的計算,比如說, 如果a<100,那麼就執行xxxx,如果a>100,就執行xxxx。然後這個模板就越做越大,需要戳的紙也越來越長。
好傢伙,後來實在戳不過來了,十個手指都戳破了,甚至計算機也運行不過來了,更復雜的運算根本做不了。不行,不能這樣下去了。
後來就開始有人研究了,電子技術的發展越來越高科技,電子管也做得越來越小,最後用集成電路來控制開關,但是其實原理都是一樣的。可以運算的公式和能力也越來越強。其實還是不同的電子管組合成不同的開關,你以為這個組合就是幾個電子組的組合嗎?不,已經達到上億,上千億個電子管的組合了,這也是集成電路的優勢。
一開始是用紙來保存信息,但是前面說了,紙已經不夠用了,就開始出現了軟盤,光碟。光碟上的凹凸點,代表了0和1,其實就是存儲的介質發生了變化,後面發明了磁碟,發明了光碟,甚至是軟盤、機械硬碟,SSD等不同的儲存介質,這些其實就是保存的方式不同而已,其實它們保存的數據還是和打孔紙一樣,就是0和1的數據,只是相比紙而言,保存得更多,更方便,也更容易被機器讀取。
這時候保存的介質發生了變化 ,那麼讀取這些數據的那個探頭也發生了變化,變成了像軟盤的磁頭,光碟的激光頭等。
當這種保存的介質從紙變成了硬碟後,就會出現一個問題,一開始寫這些孔的時候,是用筆和給紙戳一個窟窿來讓機器識別,現在要怎麼把0和1這種數據寫到磁碟里呢?這里就發明了鍵盤了,最初的鍵盤當然和現在不一樣,但是原理是一樣的。還是按一個鍵,給一個電信號,磁頭收到了電信號,會判斷是0還是1,如果是0,就是反磁,如果是1就是正磁。一開始的鍵盤,就是只有幾個鍵,1鍵和0鍵。
後來有人覺得整天打0和1太麻煩了,如果我要打a這個符號,我就要按(0000000000000000),按這么多下,我的手都要變成一指禪了,於是就發明更復雜的鍵盤,比如我要打a,b,c,d,我就一開始就設定好,我打a,就直接發送一串機器碼(0000000000000000),我要打b就發送一串機器碼(0000000000000001),類似這樣的。其實也是給鍵盤做好一個約定,我一開始就把一些特定的,經常使用到的符號或其他有代表性的字母、數字,把它們對應的0和1組合的機器碼先做成一個表格,存到鍵盤的識別庫里,我按哪一個字元,你就給我發送哪一個字元對應的機器碼就可以了,這樣我就不用從早到晚按0和1這兩個鍵,按個沒完。這么一設定,我就不用記太多的機器碼組合了,一開始就把這些組合給分門別類。
這樣發展到這里,鍵盤的雛形就出來了,也為匯編的發展埋下了伏筆。匯編其實就是最接近或者它就是機器碼的一種組合語言,機器是可以直接識別出來。
前面說了,為了執行不同的公式和復雜的計算,就出現了這同的模板,只需要修改模板上的參數,就可以重復執行這些模板。
現在這些板從紙上存到了軟盤上,現在就更方便了。以前用紙的時候,用過一次,紙就沒用了,現在軟盤上的數據一直在,我只需要用磁頭把原來填的數據擦掉,重新寫個新的參數就可以了。你可以理解成當時在紙上我用鉛筆寫參數,用過一次,用橡皮擦給擦掉重復寫。但是紙是需要打孔的,打了孔,橡破擦也沒用,已經是一個孔了,你也補不上,所以那紙就廢掉了。
但是軟盤不一樣,軟盤是可以重復寫的。可以把磁消掉重新在那個位置寫一個新的參數,這樣就可以重復利用了。
後來這些模板越做越復雜,最後慢慢的發展成了一個小型的,有自己一些獨立功能的計算系統,這可以理解為,它有了系統的一些特性,但是還不算系統。
後來這些模板更強大了,有人覺得,因為需要更加強大的功能,一般的模板已經沒辦法滿足了,而且通過這種最原始的abcd來拼湊這些公式、模板,太累了。於是就有人開始寫中間解釋器。
怎麼理解呢?前面說了,一開始大家都是寫1和0組合,覺得太累了,於是把1和0的不同組合做成了一個庫,我只需要輸入1+1,abcd這種鍵盤上約定好的字母,鍵盤就發送對應的1和0組合給機器,機器就可以直接識別了。
現在需求越來越復雜,發現光打這些abcd,需要打越來越多的代碼,發現和之前打1和0一樣累了,怎麼辦呢?於是就有人打算再創一個中間庫,把這些abcd,1,2,3等組合做成一個庫,不同的組合代碼不同的意思,這就是從機器向交互語言的發展了初期了。
這個庫一開始還是用abcd等最初的那個鍵盤庫打上去的,當然做的也很累,但是只要這個庫完善好了,後面要繼續發展更高級的交互語言就簡單多了,以後所有交互語言寫出來的東西,都通過這個庫翻譯成機器語言庫,機器語言庫就可以識別了。
於是有了交互語言庫,大家就不用打太多的字元來拼湊成不同的模板了,因為交互語言庫有了不同的單片語合成更加有意義符號,人一看就懂,不需要那些零零散散的字母,沒有任何意義在裡面,還需要死記硬背。
這就有點像是古代的文言文,你一聽不知道他在說什麼,然後去查一下文言文字典,這樣你才能知道他在說什麼。
現在你可以用白話言語來交流了,這樣就更輕鬆了,你可以直接和他對話。
至於機器聽不聽的懂你說的意思,這個不要緊,有解釋庫,你把解釋庫做好了,你說的每一句話會自動翻譯成機器語言,就可以了。
隨著語言的越來越強大,現在就可以寫出更加復雜的模板了,後來顯示器的發展越來越強大,讓這些模板出現了更豐富的畫面,其實它顯示什麼東西,也還是會有一個庫的,只要約定好,我返回的這串代碼代表了什麼東西,你就顯示什麼東西就可以了。甚至後來有了圖片。
其實圖片的顯示也有自己的一個約定,就是我返回什麼代碼,你就解析成什麼顏色點,然後不同的代碼組合,就會現出一大串的顏色點組合在一起,就變成了有顏色的圖片和畫面。其實文字也是圖片的一種,就是一種圖信號。
回到模板上來,後來慢慢的,這些模板越來越強大,甚至有人開始動起心思,開始給這些模板加皮膚,加各種好看或者神奇的功能,讓它更加好用,於是最初始的系統就這么慢慢的發展起來了。
其實系統它不是突然就有的,是在整個機器的發展的過程中,慢慢的累積到一定程度後,順應發展而來的。
這些模板也是從最簡單的公式模板慢慢發展成了現在有了自己的界面,有了自己的獨立運算功能和各種娛樂功能等強大的系統。
最初的系統,也就是這些模板的誕生,其實是很辛苦的,它們需要有一定的積累,一些基礎的識別庫的完善,這些都是需要最初的那代人,一開始就約定好,然後慢慢地完善起來,然後高級的語言和系統才能通過這些庫來和機器交流。