1. 程式人生 > >對話王璞:談分散式系統在企業落地的挑戰

對話王璞:談分散式系統在企業落地的挑戰

王璞,數人云CEO及創始人,為美國George Mason大學計算機博士,擅長分散式計算、大規模機器學習、海量資料處理。曾擔任 Google 廣告部門資料平臺構架師,負責管理每秒訪問量全球最高的架構平臺。數人云技術團隊具備豐富的網際網路應用架構經驗,大型分散式系統經驗,特別是 PaaS 領域的經驗。

分散式的概念提出是基於什麼樣的背景,主要幫助使用者在資料中心建設中解決什麼樣的問題和痛點

分散式計算的概念大概七十年代就提出了。分散式計算本質上解決的是,突破單臺物理伺服器計算能力極限,通過鬆散耦合將多臺物理伺服器組成一個叢集,提供更大的計算能力。分散式計算研究如何把需要非常巨大計算能力才能解決的問題分解成許多小的部分,分配給多臺計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。

雲端計算也是分散式計算技術的一種,它最基本的概念,是將巨大的計算處理程式分拆成無數個小的子程式,再將這些程式分配給龐大的計算機網路系統經搜尋、計算分析之後將處理結果回傳給使用者。

Google是應用分散式計算最成功的典範,把分散式計算髮揚光大,網際網路公司之後形成的分散式計算技術,稱之為雲端計算技術。

分散式技術經歷了什麼樣的發展過程,目前的應用現狀,以及面臨的挑戰

在過去的20多年間出現了大量分散式計算技術,如中介軟體技術、移動Agent技術、P2P技術、web服務技術和網格技術等等。Web服務和網格計算是網際網路上進行大規模分散式計算的兩大關鍵技術。主要解決分散式計算的系統管理和資源共享問題。

網格計算通過把網際網路上分散在各處的硬體、軟體、資訊資源連線為一個整體,使人們能夠利用分散的資源,完成大規模、複雜的計算和資料處理。新一代的分散式計算技術是Google這樣的網際網路公司把分散式技術發揚光大之後的雲端計算技術。

從技術本身來講,分散式技術目前發展已經相對成熟。尤其Google這樣的網際網路公司把分散式計算可能碰到的技術問題已經解決的差不多。但目前企業級客戶應用的還不多,用的不太好。分散式計算目前的挑戰是進一步降低使用門檻,讓企業級客戶也能很好地用起來。

分散式系統相比傳統的集中式儲存,有哪些主要的特點和優勢?

分散式儲存,是分散式計算技術裡的一個方面。簡單說就是,將資料分散儲存到多個數據儲存器上,目前多借鑑Google的經驗,在眾多伺服器上搭建一個分散式檔案系統,再在這個分散式檔案系統上實現相關的資料儲存業務,甚至是二級儲存業務。

分散式儲存的好處是,可擴充套件性和穩定性很好。一臺伺服器儲存資料有限,多臺伺服器組成叢集。分散式儲存系統通過叢集方式擴充套件到幾百甚至幾千臺叢集規模來解決系統擴充套件能力, 通過軟體層面對單機伺服器的硬體容錯能力大大提升了整體叢集的容錯能力和穩定性。

分散式儲存,目前主要是網際網路公司在用,傳統企業掌握的比較弱,尤其是分散式軟體儲存系統。

在設計分散式系統時,考慮的關鍵因素有哪些?

可擴充套件性和容錯。可擴充套件性,隨著伺服器不停增加,叢集規模不停增加。分散式系統對硬體要求不高,目前雲端計算主流應用的是廉價的X86伺服器,不能做到高可靠。分散式系統有很好的容錯能力,允許硬體發生故障。

分散式系統常見的事務處理機制及其優缺點

分散式系統做事務處理比較難。如果一個事務分佈到多臺伺服器上,或者在分散式並行的環境下,事務之間可能會有衝突。為保障系統的可用性、可靠性以及效能,在分散式系統中,往往會設定資料冗餘,即對資料進行復制。當一個數據庫的副本被破環以後,那麼系統只需要轉換到其他資料副本就能繼續執行下去。當訪問單一伺服器管理的資料程序數不斷增加,系統就需要對伺服器的數量進行擴充,此時,對伺服器進行復制,隨後讓它們分擔工作負荷,就可以提高效能。但同時,如何保障多個數據節點之間資料的一致以及如何處理分散式事務,將成為一個複雜的話題

常見的事務處理機制有:

Master-Slave 複製、Master-Master 多主複製、兩階段提交(Two-phase commit,2PC)、三階段提交(Three-phase commit ,3PC)、Paxos演算法等等。

分散式要遵循ACID四個原則,即A原子性、C一致性、I隔離性、D永續性。在涉及分散式環境時,這些原則都提高了難度。

傳統事務性系統偏單點,不好擴充套件,有很多事務需要處理。分散式處理能力顯著增加。

在實際的企業環境中,設計分散式系統時對於CAP理論是如何應用的?(分散式系統中事務處理的技術

為了保障效能和可靠性,將資料複製多份,分佈到多個節點上,這就帶來了一個難點,如何保持各個部分資料的一致性。CAP理論不可同時兼得這三種特徵,也就是說選擇了AP,就必須犧牲掉A。

  • 一致性(Consistency):所有節點同一時間看到是相同的資料;
  • 可用性(Availability):不管是否成功,確保每一個請求都能接收到響應;
  • 分割槽容錯性(Partition tolerance):系統任意分割槽後,在網路故障時,仍能操作

擴充套件到分散式儲存後,受限於分散式 C(一致性)A(可用性)P(分割槽容忍性)理論,幾乎不可能滿足完整的事務特性。 各種分散式儲存服務實現都對單機儲存的事務特性作了權衡取捨,滿足特定的服務場景需求。

分散式儲存系統是基於網路互聯的,除了基本的磁碟訪問效能開銷,還多了網路效能開銷。 原本由磁陣控制程式負責的資料在磁碟中的分佈、負載均衡策略和一致性保障, 在分散式儲存中都需要軟體在整個機器叢集層面去考慮,複雜度大大提高。

目前分散式技術(系統)在哪個行業應用比較成熟或者比較廣泛?為什麼?

目前主要是網際網路行業在應用,這主要跟Google的推動息息相關。Google做網際網路搜尋業務起家,業務量非常大,搜尋要儲存資料很多,同時請求很多。一開始Google買不起高階的大型機、小型機,用廉價的X86 PC伺服器組成叢集。但同時,Google證明了新一代分散式計算技術,即雲端計算技術,可以處理大規模的計算請求。這是Google經過長時間探索形成的一個成熟的應用。

傳統行業對分散式系統的應用還很少,業務量沒那麼大,主要靠高階硬體來保證可靠性穩定性以及處理事務的機制。隨著傳統企業很多業務上雲,很多傳統IT的做法無法帶來網際網路業務帶來的挑戰,比如流量的集中爆發,業務的快速迭代,敏捷的能力等等,將推動分散式系統和技術的採用。

很多技術人員對於超融合和分散式的概念的認識不是很清晰,超融合與分散式在架構上,以及計算資源和儲存資源的管理上,有哪些主要的區別嗎

超融合本質上是分散式系統的一種設計方式,分散式系統計算資源的一種設計方式。Google在早期資料中心都是X86伺服器,當時的做法是儘可能降低對硬體伺服器的要求,用廉價的PC伺服器,普通的硬碟。Google更多的做法是,Google軟體能力很強,設計軟體上的可擴充套件性,比如資料中心擴容,把Google各種分散式軟體系統裝上就行,比如內部檔案系統、任務排程系統等等。

超融合其實是對企業級客戶更有意義。傳統企業的資料中心IT規劃都是按照計算單元、網路單元、儲存單元,擴容的時候相對痛苦。超融合是說把計算、儲存和網路都融合在一起。一個機架變成一個最小的資料中心計算單元,既有計算單元,又有網路單元、儲存單元。這樣,擴容時,擴個機架就好,這樣就做到了資料中心計算能力的平行擴充套件。

超融合是分散式計算資源的設計架構,而不是應用程式的設計架構。網際網路公司很多基礎的應用排程,計算能力排程,儲存,網際網路公司是拿軟體自行實現的,不會用到超融合技術。

分散式系統相比較傳統集中式系統,對於企業的資料中心管理有哪些優勢,存在哪些困難,一般企業中如何處理這些問題?

分散式系統弱化了對硬體的管理,強化軟體的管理。對企業資料中心帶來很大的挑戰,傳統企業資料中心是面向資源管理,管理高階的硬體。比如資料中心的運維管理是面向資源管理,傳統軟體在部署時,都是面向靜態的管理模式。一個伺服器上部署哪些應用都是固定的。現在分散式系統後,對硬體管理弱化,對軟體管理極度強化。比如,軟體必須是分散式,排程都是它來排程。對於分散式系統,困難在於,企業相應的軟體的能力要跟得上。企業的分散式系統管理,雲上的排程,都是分散式排程。

分散式系統在開發效率上造成的問題和解決思路

分散式系統本質上會提升開發效率,有很強的容錯能力和可擴充套件性。在開發上增量迭代。微服務對整個系統的影響都是非常區域性和有限的。分散式系統每次上線,做增量的上線,只需要修改一小部分,保證對外提供的服務是可用的,而不會造成停服務中心。這是可擴充套件性方面的優點。

分散式系統在開發上帶來的問題是,對開發的難度加大了。網際網路公司有專門的架構師團隊,解決分散式系統底層的基礎架構,比如在什麼樣的開發架構下開發分散式應用。開發架構解決分散式系統常見的一些問題,比如互相通訊的問題,冗餘的問題,容錯的問題。這不是分散式系統做應用開發要解決的,而是要提供應用的分散式開發框架來解決這些問題。目前,網際網路公司內部都有一套相對成熟的分散式系統的開發框架,以及基於這個開發框架開發出來的應用,一系列測試的流程,和管理的平臺工具等等。

對企業客戶來講,單純實現分散式開發,基於某個開源框架實現分散式開發還遠遠不夠。還需要自動化分散式系統的測試流程,分散式系統線上執行時管理的一些工具平臺建設起來。

數人云的分散式解決方案和產品介紹

數人云基於微服務開發框架,打造了一整套端到端的解決方案。給企業客戶提供最主流開發框架Spring Cloud,企業客戶在做開發時,可以基於Spring cloud做Java的開發應用。但是,Spring Cloud開發框架,僅僅幫助企業解決了一部分問題。本身還有很多缺失,比如自動化測試,執行時管理能力也比較弱。灰度釋出時,系統更新保證不停服不停機等都還比較弱。

數人云EAMS產品體系,能夠給客戶提供包括開發框架、周邊配套工具鏈,比如服務註冊、服務發現、API閘道器、負載均衡、服務治理、配置中心、監控管理等一整套微服務化體系。幫助客戶降低微服務架構的使用門檻。企業使用者在做SpringCloud做開發時,可以少考慮未來程式執行時管理的一些問題,進而進一步降低企業客戶上雲的門檻。

分散式技術的未來方向

分散式技術的未來方向肯定朝著更加自動化,成熟易用穩定的方向發展。Spring Cloud是微服務應用的開發框架,k8S是容器自動化的排程平臺,這都是有代表性的一些開源技術。

分散式儲存,處理事務性的技術等目前來講都相對較新。未來這些技術會更加成熟穩定,企業的使用門檻大大降低。