Sam Newman是一位獨(dú)立咨詢顧問,也是《Building Microservices》這本書的作者。他在倫敦舉行的Velocity大會(huì)上發(fā)表演講,討論了關(guān)于在一些同時(shí)依賴無服務(wù)器架構(gòu)和傳統(tǒng)基礎(chǔ)設(shè)施的混合系統(tǒng)中所面臨的挑戰(zhàn)。尤其是,Newman重點(diǎn)討論了無服務(wù)器架構(gòu)如何改變了我們關(guān)于系統(tǒng)彈性的概念,以及兩個(gè)體系同時(shí)存在于一個(gè)高負(fù)荷系統(tǒng)內(nèi)會(huì)發(fā)生怎樣的沖突。
系統(tǒng)彈性在傳統(tǒng)服務(wù)系統(tǒng)中依賴于狀態(tài)來控制(例如,在任何時(shí)間點(diǎn)用數(shù)據(jù)庫(kù)連接池,來及時(shí)調(diào)節(jié)和控制訪問數(shù)據(jù)庫(kù)的請(qǐng)求數(shù)量)。在這種系統(tǒng)中,系統(tǒng)穩(wěn)定性通過控制輸入負(fù)載并把這些負(fù)載均衡到多個(gè)系統(tǒng)實(shí)例中來維持。但是,在短暫的函數(shù)(lambdas)中沒有地方來存儲(chǔ)這些控制狀態(tài),因此在函數(shù)隨著負(fù)載自動(dòng)擴(kuò)展與后端數(shù)據(jù)庫(kù)擴(kuò)展之間需要一個(gè)平衡機(jī)制。
自動(dòng)擴(kuò)展的云數(shù)據(jù)庫(kù),例如亞馬遜的DynamoDB或者谷歌的Bigtable,很適合無服務(wù)器架構(gòu)。但是Newman指出,大多數(shù)系統(tǒng)依賴傳統(tǒng)數(shù)據(jù)庫(kù),因此簡(jiǎn)單地在一個(gè)遺留的系統(tǒng)中嫁接無服務(wù)器函數(shù)可能會(huì)導(dǎo)致嚴(yán)重的后果。Newman強(qiáng)調(diào),即便是作為無服務(wù)器架構(gòu)典范之一的Bustle也面臨過許多前所未有的挑戰(zhàn)。盡管他們特意給任意一個(gè)Redis節(jié)點(diǎn)設(shè)置了一個(gè)1000 lambda連接數(shù)的限制(可以處理10倍那個(gè)數(shù)量的連接),但是他們?nèi)匀话l(fā)現(xiàn)一些失效的節(jié)點(diǎn),因?yàn)閾?jù)傳聞?wù)f,lambda函數(shù)似乎在連接停止后也會(huì)保持連接存活長(zhǎng)達(dá)3分鐘。Bustle的工程師不得不深入研究Redis內(nèi)部工作機(jī)制來修復(fù)這個(gè)問題(強(qiáng)制這些僵尸連接更快地超時(shí))。Newman說,這也突出了無服務(wù)器架構(gòu)系統(tǒng)與非無服務(wù)器架構(gòu)系統(tǒng)在處理負(fù)載和系統(tǒng)彈性的方式上的不協(xié)調(diào)。
Newman提到的另一個(gè)挑戰(zhàn)是,通常被用在微服務(wù)中來處理失敗的下游服務(wù),能夠有效降低負(fù)載從而讓整個(gè)系統(tǒng)更具彈性的斷路器(circuit breakers),是依賴于維護(hù)跨多個(gè)請(qǐng)求的狀態(tài)來實(shí)現(xiàn)的。例如,一旦下游服務(wù)恢復(fù)穩(wěn)定,斷路器就能夠自我關(guān)閉。
Newman講到,服務(wù)網(wǎng)格(service meshes),例如Istio或者Linkerd,也許能夠幫助解決這些問題。它們可以作為持久化的狀態(tài)代理,而這些狀態(tài)能夠協(xié)調(diào)微服務(wù)函數(shù)間的負(fù)載。
最后,從安全角度來看,函數(shù)是運(yùn)行在容器中的,因此很容易受到攻擊,因?yàn)橐粋€(gè)容器可以侵入到另一個(gè)運(yùn)行在同一臺(tái)主機(jī)上的容器。但是,如果函數(shù)運(yùn)行所在的容器存活的時(shí)間很短,這種攻擊就會(huì)變得很困難,因?yàn)椴荒茉诤瘮?shù)結(jié)束后進(jìn)行攻擊。諸如Guy Podjarny等安全專家警告說,無論如何,無服務(wù)器架構(gòu)都將安全隱患轉(zhuǎn)移到了應(yīng)用層級(jí)別,并且如果沒有正確的安全措施,一長(zhǎng)串的函數(shù)鏈調(diào)用很可能會(huì)受到攻擊。
Newman也提到了許多人在選擇一家FaaS(Function-as-a-Service)供應(yīng)商時(shí)所關(guān)心的問題,而這些問題也涵蓋在最新的InfoQ eMag中。將討論內(nèi)容從如何鎖定一家供應(yīng)商,轉(zhuǎn)變?yōu)槔斫猓ㄒ约敖邮埽┟總€(gè)FaaS實(shí)現(xiàn)在提高運(yùn)行速度(負(fù)載越少速度越快)和遷移成本(跨FaaS供應(yīng)商的工具集越相似,成本就越少)之間的權(quán)衡,是解決這個(gè)問題的關(guān)鍵。
查看英文原文:Serverless Challenges in Hybrid Environments