1. 一篇文章理解啥叫IP分布式網路
本系列文章主要是為了聊聊網路新技術話題,比如SDN和Segment Routing等新技術。在進入主題之前,我覺得有必要先簡單聊下IP網路中的分布式和集中式概念,為後面的技術介紹做個框架性和方向性的鋪墊。
本文雖然是技術性主題文章,但是為了便於理解,會盡量少涉及專業技術術語,盡力進行技術的通俗化解釋。
我們常說IP轉發是盡力而為的(Best Effort),網路新手往往被這句話搞得摸不著頭腦。啥叫盡力而為,表示轉發很費力不盡力不行嗎?還是只做甩手掌櫃簡單扔出去就完了?其實IP轉發的盡力而為就是IP轉發的依據只看目的地址,有路由條目就轉發,沒有路由條目就丟棄,沒有任何控制、確認和保障的手段,簡簡單單不跟你來任何花樣的套路!最重要的是,盡力而為的核心在於 各個網路設備的轉發行為是獨立決策的 ,怎麼轉發只看自己的表項,任何鄰居都沒資格也沒辦法指導其他的設備該怎麼轉發。
所以在純分布式的網路中,再牛逼高端的設備也做不到教育和控制其他設備的轉發行為。教育和控製做不到,只能搞點指手畫腳的小動作,比如偷偷在路由條目上做點手腳--某些路由我不告訴你,或者我只告訴你我想告訴你的路由來間接達到部分控制的目的。但是本質上還是各個設備獨立決策和轉發。
所以網路工程師看到這里能想明白為啥干大型網路項目累成狗了嗎? 項目中真要是有100台網路設備,那對不起,這100台設備你挨個一個都不能少,一個一個上配置,一個一個跑路由協議,一個一個建立自己獨立的路由轉發表項。為啥非要這么干? 本質原因就是IP網路本身就是一套分布式的系統,要的就是各個節點獨立決策和自主轉發。
我們在生活中假如要評判一個東西是否好用,重要標准就是能否能做到一鍵啥啥啥。而一個體量比較大的東西想要做到一鍵啥啥啥,本質上就是通過核心下發指令,其他邊緣和末節按照指令統一行動就完了。而如果系統中的每個節點都是自主的,都各行其是,那麼系統越大,協調各個節點統一行動的難度和成本就會成指數級增加。
恰恰IP網路中每個節點都有自己獨立的決策和行動能力,沒有一個公認的核心,所以分布式IP網路在一個普通用戶的角度看來,就是一個難用且「反人性」的「產品」
說到這里,得簡單交代一下IP網路為什麼要搞成一個我們現在看來這么「反人性」的東西。
IP技術是美國國防部在上世紀70年代搞出來的技術,本來就是美國人使用的一套軍事區域網,設計之處的要義就是要成為一個百足蜈蚣一樣的系統:必須要是分布式的,任何節點遭受攻擊都要能保證其他節點可以正常運作。有一種誇張的說法是,即使某個重要節點遭受核武器打擊仍然能做到整體網路的正常運行。請問在這個要求下,不搞分布式而去弄一套集中式,一旦控制中心被炸了整個網路不就全部嗝屁了? 所以IP網路從出生之日起就帶著強烈的去中心化的分布式屬性 。
在這種核心設計思想下,分布式網路存活率和安全性是提高了,但是現在隨著IP網路技術在全世界一統天下的局面,在大型網路中,不管是維護工程師還是用戶,對於網路的調整都有一種本能的抗拒。只要網路還沒崩潰,對於網路問題的容忍能力也培養出了老僧禪定的定力和境界!大家心照不宣的默契是:網路建設好了以後,能不同,就千萬別動!動一下需要涉及協調和調整的方面之多實在是讓人痛苦萬分,但有疏忽就會釀成重大事故。
了解了這個背景,我想大家就能對所謂IP網路的分布式就有了一個直觀和透徹的理解了!
當然,現在也有很多設備自動化配置的技術,比如簡單開局、自動配置、 SDN的網路自動化 ( 這里說的是SDN中的網路自動化 , 不是真正的純SDN ) ,但是這些都只是在設備配置上省功夫,對IP的分布式本質沒有任何的改變,換言之網路設備獨立決策和自主轉發的分布式行為沒有任何改變!
為了更加充分理解分布式網路的行為和後續引入集中式網路產生的思想源頭 ,我們把IP網路比作一個帝國,那麼這個帝國其實是沒有中央的,只有滿地的諸侯,各地不管是決策還是執行的權力都歸於諸侯。假如從帝國北部發一鏢貨到帝國南部需要穿過整個帝國,那不好意思,沿途的諸侯必須要一個個挨個打點好(路由控制層互通),必須讓他們所有人都針對這一鏢貨物達成放行和轉發方向的一致性(生成轉發表項)。小帝國還好說,打點就打點吧,反正全國就那幾個諸侯。但是如果帝國疆域無比廣闊呢?比如一個全國性的運營商或是一個全球性的互聯網廠商?他們如果需要調整一個業務,涉及到需要處理的設備和協議可以說想想就讓人頭疼。
所以看到這里,我們應該就能理解分布式網路下大型用戶的痛苦了! 為啥現在集中式網路技術思想越演越烈,用一句話來說就是:天下網路苦分布式久矣!
所謂時勢造英雄,繞開硬體限制用軟體技術實現網路控制層集中化的SDN思想就開始出現了。SDN從出現開始就註定是一個顛覆者的角色,因為它和其他集中式網路技術的核心使命就是要在這個混亂的IP帝國中立出一個中央,將各地諸侯的控制層即決策權收歸中央,只保留其執行權即依令轉發的權力或者說能力。 也就是要將IP網路從去中心化的分布式改造為中心化的集中式網路,打造一個上下同慾望,如臂使指的鼎盛王朝!
至於怎麼在分布式IP帝國創建中心化網路,樹立中央和施策削藩,將IP控制層決策能力收歸中央實現其美好願景,咱們下回分解!
2. 微服務架構的分布式事務問題如何處理
分布式系統架構中,分布式事務問題是一個繞不過去的挑戰。而微服務架構的流行,讓分布式事問題日益突出!
下面我們以電商購物支付流程中,在各大參與者系統中可能會遇到分布式事務問題的場景進行詳細的分析!
3. 分布式系統的分布式系統的缺點
盡管分布式系統有許多優點,但也有缺點。本節就將指出其中的一些缺點。我們前面已經提到了最棘手的問題:軟體。就目前的最新技術發展水平,我們在設計、實現及使用分布式系統上都沒有太多的經驗。什麼樣的操作系統、程序設計語言和應用適合這一系統呢?用戶對分布式系統中分布式處理又應該了解多少呢?系統應當做多少而用戶又應當做多少呢?專家們的觀點不一(這並不是因為專家們與眾不同,而是因為對於分布式系統他們也很少涉及)。隨著更多的研究的進行,這些問題將會逐漸減少。但是我們不應該低估這個問題。
第二個潛在的問題是通信網路。由於它會損失信息,所以就需要專門的軟體進行恢復。同時,網路還會產生過載。當網路負載趨於飽和時,必須對它進行改造替換或加入另外一個網路擴容。在這兩種情況下,一個或多個建築中的某些部分必須花費很高的費用進行重新布線,或者更換網路介面板(例如用光纖)。一旦系統依賴於網路,那麼網路的信息丟失或飽和將會抵消我們通過建立分布式系統所獲得的大部分優勢。
最後,上面我們作為優點來描述的數據易於共享性也是具有兩面性的。如果人們能夠很方便地存取整個系統中的數據,那麼他們同樣也能很方便地存取與他們無關的數據。換句話說,我們經常要考慮系統的安全性問題。通常,對必須絕對保密的數據,使用一個專用的、不與其它任何機器相連的孤立的個人計算機進行存儲的方法更可取。而且這個計算機被保存在一個上鎖的十分安全的房間中,與這台計算相配套的所有軟盤都存放在這個房間中的一個保險箱中。分布式系統的缺點如表1-3所示。 項目 描述 軟體 分布式系統開發的軟體還很少 網路 網路可能飽和和引起其它的問題 安全 容易造成對保密數據的訪問 表 1-3. 分布式系統的缺點
盡管存在這些潛在的問題,許多人還是認為分布式系統的優點多於缺點,並且普遍認為分布式系統在未來幾年中會越來越重要。實際上,在幾年之內許多機構會將他們的大多數計算機連接到大型分布式系統中,為用戶提供更好、更廉價和更方便的服務。而在十年之後,中型或大型商業或其它機構中可能將不再存在一台孤立的計算機了。