設(shè)計(jì)有狀態(tài)的云原生網(wǎng)絡(luò)應(yīng)用程序時(shí)最容易被忽視的 9 個(gè)問(wèn)題
原文出自:CNCF (云原生基金會(huì))Blog
原文作者:W. Watson
在設(shè)計(jì)有狀態(tài)的云原生應(yīng)用程序,尤其是有狀態(tài)的云原生網(wǎng)絡(luò)應(yīng)用程序時(shí),必須確定哪種數(shù)據(jù)模型與系統(tǒng)的功能需求相匹配。當(dāng)涉及到數(shù)據(jù)時(shí),電信和網(wǎng)絡(luò)空間中的詞匯經(jīng)常會(huì)混淆(例如,有像 tcp/ip 這樣的有狀態(tài)協(xié)議和像保存在數(shù)據(jù)庫(kù)中的有狀態(tài)數(shù)據(jù))。當(dāng)這些概念與云原生的非功能性需求(例如彈性和可用性)相結(jié)合時(shí),混淆會(huì)更加嚴(yán)重。電信領(lǐng)域非常難以駕馭,因?yàn)樾枨笸ǔT?RFP 中而不是在迭代敏捷開發(fā)周期中列出。以下九個(gè)問(wèn)題在考慮云原生狀態(tài)時(shí)經(jīng)常被忽略,所以我們特意通過(guò)本文提出來(lái)。

正確性
在談?wù)撚袪顟B(tài)的應(yīng)用程序時(shí),正確性開始發(fā)揮作用。傳統(tǒng)上,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS) 處理數(shù)據(jù)的正確性問(wèn)題,但由于電信網(wǎng)絡(luò)組件的低延遲 (1 ms) 要求,一些 RDBMS 可能無(wú)法勝任該任務(wù)。
1) 您的系統(tǒng)必須得有多安全?
云原生系統(tǒng)和傳統(tǒng)應(yīng)用程序之間的差異可以描述為安全性和活性之間的差異。安全性與正確性有關(guān),因?yàn)樗柚沽瞬幌Ml(fā)生的事情。換句話說(shuō),它對(duì)系統(tǒng)施加了約束。活躍度是系統(tǒng)返回到所需狀態(tài)的能力。云原生系統(tǒng)選擇頻譜的活性方面,也稱為反脆弱性,而不是安全性。
2)您需要強(qiáng)一致性嗎?
有一些問(wèn)題,通常是在金融領(lǐng)域,需要強(qiáng)一致性。一個(gè)具體的例子,雙重支出的問(wèn)題,或者確保資源沒(méi)有被使用兩次。
3)您能容忍寫入偏差數(shù)據(jù)嗎?
當(dāng)不需要強(qiáng)一致性時(shí),放松對(duì)正確性的約束通常可以提高其他屬性,例如性能。寫入偏差是指數(shù)據(jù)基于過(guò)時(shí)前提的決定寫入數(shù)據(jù)。這有時(shí)是可以容忍的,因?yàn)閿?shù)據(jù)可以在寫入后修復(fù)。
4)您如何解決偏差數(shù)據(jù)?
允許寫入偏差的數(shù)據(jù)應(yīng)基于寫入偏差的解決方案是否對(duì)您的模塊足夠好。例如,對(duì)于有時(shí)會(huì)亂序接收數(shù)據(jù)包的電話呼叫,丟棄數(shù)據(jù)包的解決方案(即首先寫入獲勝)通常是可以容忍的。對(duì)于同時(shí)添加了許多商品的購(gòu)物車,但收到的寫入亂序或延遲,將商品原樣合并到購(gòu)物車中的解決方案(例如,使用無(wú)沖突復(fù)制數(shù)據(jù)類型的解決方案)收到的也往往是可以忍受的。
表現(xiàn)
電信領(lǐng)域的網(wǎng)絡(luò)應(yīng)用程序必須具備性能。一個(gè)常見的基本要求是網(wǎng)絡(luò)應(yīng)用程序必須是“l(fā)ine speed”,這意味著任何軟件都不應(yīng)干擾網(wǎng)卡的速度,此時(shí)網(wǎng)卡的速度可能為 400G。這對(duì)系統(tǒng)的瓶頸提出了很高的要求。
5) 系統(tǒng)的延遲敏感部分是否可以按任何順序應(yīng)用更新,例如增量?
可以按任何順序應(yīng)用的延遲敏感數(shù)據(jù)通??梢酝ㄟ^(guò)合并解決方案來(lái)解決,例如無(wú)沖突復(fù)制數(shù)據(jù)類型 (CRDT)。資源的遞增和遞減就是這樣的例子。
6)您的數(shù)據(jù)寫入量應(yīng)該有多大?
使用寫入友好的數(shù)據(jù)模型(例如僅附加數(shù)據(jù)存儲(chǔ))可帶來(lái)大量寫入數(shù)據(jù)的延遲優(yōu)勢(shì)。如果您的數(shù)據(jù)模型支持,重讀數(shù)據(jù)可以從使用列數(shù)據(jù)庫(kù)中獲得延遲優(yōu)勢(shì)。
7) 您的延遲應(yīng)該要多少?
對(duì)于網(wǎng)絡(luò)應(yīng)用程序(尤其是嚴(yán)重依賴的網(wǎng)絡(luò)組件),通常需要控制 1 毫秒延遲或以微秒為單位測(cè)量的延遲。這在傳統(tǒng) DBMS 系統(tǒng)中很少需要。因此,在設(shè)計(jì)這些系統(tǒng)時(shí),您確實(shí)需要詢問(wèn)系統(tǒng)是否需要 1ms 的延遲響應(yīng)時(shí)間。99%的延遲要求是什么?您有什么硬能力來(lái)保障維持這個(gè)延遲要求?
8) 用戶是分布式狀態(tài)嗎?
地理分布式狀態(tài)是挑戰(zhàn)也是機(jī)遇。挑戰(zhàn)來(lái)自尋找和實(shí)施足夠智能的地理復(fù)制和分區(qū)。機(jī)會(huì)來(lái)自于數(shù)據(jù)接近應(yīng)用程序所帶來(lái)的延遲減少。
9) 您的系統(tǒng)必須有多安全?
如果受感染的節(jié)點(diǎn)沒(méi)有容錯(cuò)能力,它可能會(huì)對(duì)您的共識(shí)算法造成嚴(yán)重破壞。如果受感染的節(jié)點(diǎn)請(qǐng)求成為Admin并繼續(xù)采取破壞性行動(dòng),它將使您的系統(tǒng)崩潰。
結(jié)論
如果您正在設(shè)計(jì)或準(zhǔn)備在市場(chǎng)上購(gòu)買有狀態(tài)的云原生系統(tǒng),尤其是有狀態(tài)的云原生網(wǎng)絡(luò)應(yīng)用程序,您最好問(wèn)一問(wèn)這些問(wèn)題。最終,云原生系統(tǒng)的設(shè)計(jì)將根據(jù)您的答案,發(fā)生很大的偏差。
-----------------
如您的企業(yè)正打算做云原生轉(zhuǎn)型,希望下面的資料能對(duì)您有所幫助,復(fù)制跳轉(zhuǎn)鏈接,免費(fèi)獲取>>
https://www.cloudtogo.cn/whitepaper/203.html?B=9
