一、經(jīng)典微服務(wù)架構(gòu)的特點(diǎn)以及問題
經(jīng)典的微服務(wù)架構(gòu)一般包含兩個(gè)部分:API網(wǎng)關(guān),一組微服務(wù)。API網(wǎng)關(guān)是唯一的請(qǐng)求入口,它還要負(fù)責(zé)負(fù)載均衡,路由編排,失效切換等工作。
經(jīng)典的微服務(wù)架構(gòu)圖(來源網(wǎng)絡(luò)):

關(guān)于經(jīng)典微服務(wù)架構(gòu)的文章很多,這里重點(diǎn)想分享一些我們實(shí)踐經(jīng)典微服務(wù)架構(gòu)的一些問題:
“笨重”的API網(wǎng)關(guān),由于它要負(fù)責(zé)各種核心功能,不能靈活擴(kuò)展,比如負(fù)載均衡策略,也許每個(gè)微服務(wù)類型需求都不一樣,它很難靈活變更;隨著對(duì)接的微服務(wù)越來越多,每個(gè)API網(wǎng)關(guān)也集成大量的功能。
API網(wǎng)關(guān)自身需要高可用保證,經(jīng)典架構(gòu)并不提供,隨著后端接的微服務(wù)越來越多,也會(huì)造成很多穩(wěn)定性問題,它與微服務(wù)也需要兩套運(yùn)維辦法,給運(yùn)維帶來額外成本。
服務(wù)注冊(cè)與發(fā)現(xiàn)還是傳統(tǒng)模式,不能級(jí)聯(lián)代理,長連接也有限制,不能很好解決跨大網(wǎng)段,跨機(jī)房,跨IDC中心的問題。
心跳機(jī)制比較單一,只是從連接層面考慮,沒有上下文以及服務(wù)本身的監(jiān)控,需要依賴第三方實(shí)現(xiàn)。
失效切換機(jī)制單一,只能是聯(lián)通性檢查,對(duì)業(yè)務(wù)異常無感知,意味著不能根據(jù)業(yè)務(wù)異常切換。
沒有自動(dòng)高效的重試機(jī)制,需要考慮對(duì)API網(wǎng)關(guān)的改造。
幾乎沒有隔離機(jī)制,需要采用第三方技術(shù)解決。
微服務(wù)實(shí)現(xiàn)沒有統(tǒng)一的技術(shù)棧支持,還處于原則規(guī)定階段。
服務(wù)編排依靠人工,沒有動(dòng)態(tài)編排能力。
整體看來,經(jīng)典微服務(wù)架構(gòu)還不夠“聰明和智能”,于是我們?cè)O(shè)計(jì)并著手研發(fā)新一代微服務(wù)計(jì)算平臺(tái),希望能夠讓其充分發(fā)揮微服務(wù)架構(gòu)的優(yōu)勢(shì)和特性。
二、微服務(wù)計(jì)算平臺(tái)的設(shè)計(jì)思想與抽象模型
1
“微智能”的設(shè)計(jì)思想
“微智能”這個(gè)概念起源于智能家居,是目前智能硬件領(lǐng)域的一股創(chuàng)新思想。在提到“智能”這個(gè)詞,通常是相對(duì)人而言,智能家居通過“智”的體現(xiàn),更好的服務(wù)人的生活。于是,我們就思考是否系統(tǒng)或者服務(wù)也能體現(xiàn)“智”,如果與微服務(wù)相結(jié)合,讓其更加“聰明”的工作?
先來看看微智能的設(shè)計(jì)思想:

1)自動(dòng)發(fā)現(xiàn): 即真實(shí)的反映現(xiàn)實(shí)世界,盡可能利用“自動(dòng)化”手段捕獲現(xiàn)實(shí)情況并提取有效”信息”。微服務(wù)實(shí)際上對(duì)原有的單體系統(tǒng)或”重”服務(wù)進(jìn)行了拆分,意味著服務(wù)種類以及服務(wù)實(shí)例個(gè)數(shù)會(huì)成倍增加,依靠人工整理或編排的手段變得笨重滯后。自動(dòng)發(fā)現(xiàn)實(shí)現(xiàn)了微服務(wù)生命周期管理初始環(huán)節(jié)的自動(dòng)化。
2)自我維護(hù): 即形成“閉環(huán)”反饋回路,將“輸入”或“中間”或“結(jié)果”信息再反饋到系統(tǒng)中,合并成新的“輸入”或“中間”或“結(jié)果”信息。真實(shí)世界的信息變化很快,為了盡量趨近真實(shí),需要不停的迭代。微服務(wù)架構(gòu)除了更多的服務(wù)實(shí)例個(gè)數(shù)(規(guī)模增長),也意味著更加“多變復(fù)雜”的服務(wù)更迭(變更頻率增長),自我維護(hù)實(shí)現(xiàn)了微服務(wù)生命周期管理更迭的自動(dòng)化。
3)自動(dòng)適應(yīng)(適配): 自動(dòng)適應(yīng)拓展了自動(dòng)發(fā)現(xiàn)+自我維護(hù)的思想外延,是“智”的體現(xiàn)。根據(jù)自動(dòng)發(fā)現(xiàn)的信息適配相應(yīng)的處理(初次適應(yīng));根據(jù)自我維護(hù)的反饋,不斷調(diào)整(迭代適應(yīng))。比如服務(wù)降級(jí)的閥值,其實(shí)不同時(shí)間不同資源使用情況下這個(gè)閥值是動(dòng)態(tài)變化的,在數(shù)百服務(wù)實(shí)例的級(jí)別都已無法依靠人工來進(jìn)行調(diào)整,而需要每個(gè)服務(wù)實(shí)例依據(jù)上下文的環(huán)境以及歷史狀態(tài)的分析自主的調(diào)節(jié)。
所以微智能設(shè)計(jì)思想的三個(gè)核心原則正是構(gòu)建“智”的微服務(wù)計(jì)算平臺(tái)的基礎(chǔ)指導(dǎo)思想。
2
“擬社會(huì)化”的分布式設(shè)計(jì)
有了微智能的思想,我們還需要重新認(rèn)識(shí)“服務(wù)”。什么是微服務(wù),社群里有很多文章都分享了相關(guān)的內(nèi)容。我們理解服務(wù)的“微”體現(xiàn)在:
細(xì)粒度的服務(wù)能力: 某個(gè)服務(wù)實(shí)例只完成一種或某幾種業(yè)務(wù),或說只具備某一種或幾種能力。