完全獨立的部署結(jié)構(gòu): 每個服務(wù)實例都能獨立部署
服務(wù)能力可以編排: 不同的服務(wù)實例之間需要協(xié)作才能完成“更大”的業(yè)務(wù)
更多同類型實例: 業(yè)務(wù)種類決定了服務(wù)種類,而業(yè)務(wù)負載的大小決定了某種服務(wù)類型的實例數(shù)量,當然這可能也意味著更加穩(wěn)定的服務(wù)輸出。
這里引入一個很有意思的思考:社會是由人(個體)構(gòu)成的相互協(xié)作的群體,每個人都可能具備幾種技能,并使用這些技能參與到社會分工協(xié)作中去。具備同種技能的人可以一起協(xié)作來提高生產(chǎn)效率和提供可靠性高的生產(chǎn)輸出;具備不同技能的人可以在某一件事情上進行分工協(xié)作,形成生產(chǎn)流水線。
其實可以發(fā)現(xiàn)微服務(wù)的特性跟人類社會的運作方式很像。服務(wù)實例就是個體,服務(wù)能力就是技能,允許服務(wù)實例具備幾種服務(wù)能力,具備相同服務(wù)能力的實例可以看做同類型的實例,多個同類型實例構(gòu)成的集群可以實現(xiàn)負載均衡和高可用,不同類型實例可以被編排在一起完成業(yè)務(wù)流程。我們把這種分布式設(shè)計稱為“擬社會化”。
“擬社會化”分布式設(shè)計抽象圖:

“擬社會化”分布式設(shè)計的特點:
服務(wù)計算節(jié)點與服務(wù)能力之間沒有必然聯(lián)系, 這是與傳統(tǒng)分布式設(shè)計的重要區(qū)別。 服務(wù)計算節(jié)點是運行資源的載體,服務(wù)能力是業(yè)務(wù)邏輯的載體。
服務(wù)計算節(jié)點允許多個服務(wù)能力。
服務(wù)能力有兩種狀態(tài):激活(可以使用),非激活(存在但不可用)。
服務(wù)能力是獨立的,可裝配的。
服務(wù)集群實際是服務(wù)能力的集群, 這也是區(qū)別傳統(tǒng)單體架構(gòu)集群或SOA服務(wù)集群的關(guān)鍵。
服務(wù)的協(xié)作過程實際是服務(wù)能力的協(xié)作過程,而不是服務(wù)計算節(jié)點的協(xié)作過程。
由于協(xié)作過程因為服務(wù)能力的可變性,使得可以動態(tài)定義服務(wù)能力集群,即軟件定義服務(wù)集群(SDSC)。
這里可能有個疑問:為什么允許某個服務(wù)計算節(jié)點有多個服務(wù)能力,這是不是一種“倒退”,不符合微服務(wù)的原則?其實主要有兩個方面的原因:
資源使用方面: 在實際實施過程中,難以保證每個服務(wù)能力都能獨享服務(wù)計算節(jié)點,而且事實上如此實施會過于極端了。微服務(wù)的服務(wù)實例數(shù)量會比傳統(tǒng)架構(gòu)的增長幾倍甚至幾十倍,難以依靠單純增加資源投入的方式來滿足部署需求。
服務(wù)編排的需要: 這是更重要的一點,服務(wù)輸出是體現(xiàn)在服務(wù)能力上(再次強調(diào)不是服務(wù)計算節(jié)點),這也是“微”的體現(xiàn)。由于服務(wù)能力可以激活也可以“休眠”,那么某個復(fù)合能力節(jié)點就具備了服務(wù)能力輸出的多樣可能性。比如某個服務(wù)計算節(jié)點可能在一段時間屬于某個服務(wù)能力集群,在另一段時間屬于另外一個服務(wù)能力集群,通過這種方式實現(xiàn)計算資源的最大化利用。
這里舉兩個例子對“擬社會化”分布式設(shè)計的應(yīng)用加以說明。
實踐實例一: 短信系統(tǒng)是常見的高并發(fā)系統(tǒng),在互聯(lián)網(wǎng)環(huán)境下可能因為各種營銷活動引起Peaktime,常規(guī)的做法是增加資源,但現(xiàn)實是資源池是有限的,而且多數(shù)時候Peaktime會波及整個營銷活動鏈條的系統(tǒng),這些系統(tǒng)都需要增加資源,很快資源池就分光了。在“擬社會化”的分布式設(shè)計下,可以通過服務(wù)能力的快速切換,把一些業(yè)務(wù)休眠或在當前時間段體量小的服務(wù)能力的計算資源向Peaktime的服務(wù)能力集中,在Peaktime過去以后,又能快速的恢復(fù)原集群。同時,可以發(fā)現(xiàn)另一個特性的體現(xiàn):軟件定義集群。這個特性會在以后的分享專題中專門說明。

實踐實例二: 在P2P業(yè)務(wù)中,線下簽約通常是白天進行而晚上無業(yè)務(wù),而簽約數(shù)據(jù)的統(tǒng)計工作是T+1的模式,是在晚上進行。傳統(tǒng)方式是部署兩個完全獨立的系統(tǒng),而“擬社會化”的分布式系統(tǒng)通過復(fù)合能力節(jié)點,以服務(wù)能力切換的方式實現(xiàn)同一套計算資源的復(fù)用。

3
計算節(jié)點抽象模型