網易蜂巢的原理是什麼?通俗的舉例說明
組成網易蜂巢的技術可分為4大塊
- 容器技術
- 編排技術
- IaaS技術
- PaaS技術
這每一塊技術論原理其實都有許多很好的公開資料可以參考,所以沒有多少神秘的東西,這裡就只簡單介紹一下。
容器技術基於當前流行的開源項目 Docker,一個很好的類比是集裝箱的概念,一個容器是一個完整的軟體運行環境,打包了操作系統、庫、運行時環境、業務代碼,這使得容器作為一個整體一旦構建完成後可隨處運行,在網易蜂巢中交付給用戶的最小單位就是容器。這裡有一個問題容器和虛擬機的區別是什麼,在技術上當然有很多區別,例如容器只是利用資源隔離加名稱空間這樣的技術在操作系統層面做了虛擬化,與宿主機共享內核空間這是與虛擬機顯著不同的,但個人認為這並不是最重要的,關鍵在於容器提供了一種像代碼一樣描述運行環境的手段,構成環境的每一個零件都在開發者掌控之中,運行環境可像代碼一樣做版本控制,這也使得基於 Docker 開發可獲得一個最大的好處—環境的一致性。
容器蜂巢提供的計算資源的最小單位,而要實現一個可水平擴展的產品服務端架構,則需要引入集群的概念,在網易蜂巢中稱之為」服務」,集群的運維如發布、回滾、擴容、縮容以及集群的成員管理需要引入編排服務來實現,網易蜂巢的編排服務基於開源項目 kubernetes,編排服務將受控的資源抽象為三個層次,容器(軟體及運行環境),Pod(相關聯的容器的組合,相互間通信無需跨網路,例如應用伺服器和本地緩存)容納一個或多個容器,Node(提供計算、網路、存儲的資源節點)容納一個或多個 Pod。
前面提到需要 Node 來提供資源,管理資源的即為 IaaS 服務,IaaS 服務提供的資源可以是虛擬機、容器,但 IaaS 服務要確保計算能力(CPU,內存),網路IO,磁碟 IO 按需分配、並保障計算、IO 能力是穩定供給的,也就是需要保障 QoS。IaaS服務的技術基礎是虛擬化技術,包括計算、網路、存儲的虛擬化技術,計算的虛擬化無論在硬體或軟體層面都相對成熟,而在網路、存儲的虛擬化上網易蜂巢的選擇是軟體定義的技術,我們僅僅依賴通用的硬體與x86伺服器來實現虛擬化,軟體定義帶來的好處是我們可以針對業務需求在網路、存儲的控制層面做靈活的定製,網易蜂巢簡單平坦的私有網路便是得益於軟體定義網路的實現。
而真正開發一個產品隨著產品規模的不同還需要一些基礎 PaaS服務的支持,例如資料庫服務、緩存服務、對象存儲服務、搜索服務、負載均衡服務、DDos防禦服務等等,網易蜂巢中目前集成了負載均衡服務與關係資料庫服務(其他 PaaS服務後續會陸續上線),這些基礎服務的實現與容器沒有直接聯繫,其中負載均衡服務、DDos 防禦服務比較特殊位於流量的入口對業務透明,其他的PaaS 服務我們在蜂巢中傾向於將其抽象成backing service 的概念,對用戶來說只暴露一個 url及提供相應的管理工具,用戶無需關心 url 背後是怎樣一個服務集群,集群的成員是什麼,集群是基於什麼實現的。
雖說雲計算平台的技術原理大同小異,但真正在設計實現層面要面對的是極高的工程複雜度,這才是雲計算技術真正充滿了挑戰和創新的地方,我們也挺樂意在這方面和大家多多分享的。
最後還是盛情邀請大家來試用一下網易蜂巢,感受下docker容器服務的樂趣先看圖。
嗯,
樓上樓下看起來都像網易蜂巢的廣告啊……嗯,提問者也有這樣的嫌疑。
嗯,是的,你們成功了。
睡不著刷到這題我也跑去看了一下,然後花了一塊錢領了三十塊優惠券,然後創建了一個Ubuntu主機。單核512內存,10GSSD,100M公網帶寬。按時間收費,限流量,一個月算下來大概29塊。如果不限流量,這價錢很划算了。然後,總體看來,其實也沒撒。
這裡蜂巢說的容器,看起來也是各種服務的封裝。如看得到的MySQL,PHP環境……
這種東西的環境搭建並不高深,繼續深入運維開發也不是非常難的事情。別的功能回頭體驗一下再說吧……吐槽一下:這麼軟的文硬生生被你們砸了,真心看不下。你們是技術轉宣傳還是產品轉推廣?唉。算了,要不送我一年,我試用一下然後給你們用專欄寫硬廣?歡迎私信。好用是好用,就是感覺好貴。
不錯啊,最近一直在看openstack、docker方面的書,有機會去用一下網易蜂巢
最近無易中看到docker相關知識,進一步了解學習中,期待試用網易蜂巢。
推薦閱讀:
※VAGRANT 和 Docker的使用場景和區別?
※Docker 有什麼優勢?
※在雲環境中的應用部署方式上,Docker會不會取代KVM、Xen之類的虛擬機技術?
※docker在web開發中得使用流程是怎樣的?
※DaoCloud是一家什麼樣的公司?