區(qū)塊鏈?zhǔn)菢?gòu)建耦合信任系統(tǒng)的最佳選擇
耦合的四個(gè)方面
我們構(gòu)建的系統(tǒng)會(huì)發(fā)生變化。一個(gè)積極使用的系統(tǒng)會(huì)必須跟上不斷變化的世界。體系結(jié)構(gòu)的主要目標(biāo)是構(gòu)建能夠簡(jiǎn)化此更改過(guò)程的系統(tǒng)。
為了緩和這種變化,我們分而治之。我們將系統(tǒng)分解為松耦合的部分,以便盡可能獨(dú)立地開(kāi)發(fā)、分析、理解和更改每個(gè)部分。模塊、函數(shù)、對(duì)象、組件、服務(wù)和微服務(wù)都是將系統(tǒng)分成這些獨(dú)立部分的例子。
我們希望將耦合系統(tǒng)減少為多個(gè)部分。然而,不同的部分必須協(xié)同工作。因此,完全解耦一個(gè)系統(tǒng)是不可能的。所以我們努力實(shí)現(xiàn)松耦合。其程度可以從四個(gè)方面來(lái)衡量(自主性越強(qiáng)越好):
1. 時(shí)間自主性——它允許一個(gè)成員在不可預(yù)測(cè)的時(shí)間點(diǎn)做出反應(yīng)。例如,因?yàn)榻M成部分會(huì)意識(shí)到工作量的改變;或者它崩潰了就必須恢復(fù),等等。
2. 引用自治——請(qǐng)求不會(huì)發(fā)送到特定的組件。例如,因?yàn)槎鄠€(gè)組件實(shí)現(xiàn)了重疊的功能;或者因?yàn)榘惭b了新版本的組件實(shí)現(xiàn)了某一功能,等等。
3. 格式自治——它允許信息的發(fā)送方和接收方不必事先就信息的確切語(yǔ)法達(dá)成一致。例如,由于不同版本的發(fā)送者或接收者產(chǎn)生或期望不同種類的信息;或者因?yàn)槭褂昧瞬煌男畔⒈硎荆–SV vs 。 JSON,…)等等
4. 平臺(tái)自治——它允許不同的技術(shù)實(shí)現(xiàn)交互組件。例如,因?yàn)槌煞质窃诓煌臅r(shí)間點(diǎn)開(kāi)發(fā)的,當(dāng)時(shí)的技術(shù)很流行;或成分是基于最適合其用途的技術(shù)而開(kāi)發(fā)的,等等。
在本文中,我們認(rèn)為信任也可以看作是耦合的另一種形式,即耦合的第五個(gè)方面。
理解信任
分布式系統(tǒng)的組成部分通過(guò)一個(gè)潛在的不可信網(wǎng)絡(luò)進(jìn)行通信。因此,每一次這樣的通信都是不可信的。交流可能發(fā)生在信任建立之前:每個(gè)參與者可能在收到另一個(gè)參與者的消息后決定是否信任對(duì)方。每個(gè)參與者之間的信任是根據(jù)需要建立的。
“信任”是什么?《牛津詞典》將信任定義為“對(duì)某人或某事的可靠性、真實(shí)性或能力的堅(jiān)定信念”?!霸谙到y(tǒng)中,堅(jiān)定地相信系統(tǒng)、子系統(tǒng)或系統(tǒng)中的參與者將根據(jù)其/他/她的角色行事。
信任基于經(jīng)過(guò)身份驗(yàn)證的標(biāo)識(shí)。這種身份是授權(quán)的基礎(chǔ);授權(quán)是廣義上的授權(quán),例如授權(quán)借記我的賬戶并將相應(yīng)的錢(qián)寄給其他人。授權(quán)包括一個(gè)強(qiáng)有力的假設(shè),即被授權(quán)的主體將按照既定的規(guī)則行事,例如,在基金轉(zhuǎn)讓中,借記的金額和貸記的金額是相同的。
我們的大多數(shù)系統(tǒng)通過(guò)帶外方式建立信任。在某些情況下,設(shè)計(jì)人員確保系統(tǒng)中的每個(gè)人都被防火墻的使用所信任。在其他情況下,DevOps人員將憑據(jù)配置為使用。在第二種情況下,不是每個(gè)人都是可信的,但是已經(jīng)建立了一些信任鏈接。值得注意的是,憑證并不代表已建立的信任,而是傳遞信任的機(jī)制。信任是在共享憑據(jù)時(shí)建立的。
第五個(gè)耦合
今天的企業(yè)集成解決方案假設(shè)系統(tǒng)中已經(jīng)有一組具有正確憑證的參與者。一旦他們進(jìn)入系統(tǒng),他們就可以廣泛地訪問(wèn)系統(tǒng),并且他們的信任水平基本上保持不變。通過(guò)假設(shè)這種“受信任的參與者”,得到的集成解決方案非常靈活:人們可以交換、演進(jìn)、添加組件,而不必?fù)?dān)心信任。因此,我們可以說(shuō)信任是松耦合的“隱藏”自治方面。因?yàn)閰⑴c者之間的信任已經(jīng)建立,我們認(rèn)為他們是耦合的。例如,他們不能在互動(dòng)過(guò)程中改變他們的信任行為。
今天的集成解決方案在某種意義上大多是“封閉的”,即交互的組成部分是預(yù)先知道的。因此,信任不是顯式的關(guān)注,而是隱式的假設(shè)(否則不會(huì)向系統(tǒng)添加組件)。必須顯式處理其他自治方面,例如必須添加中介以采用新組件的格式要求。
相反,在“開(kāi)放”環(huán)境中,信任不能是隱式的,它必須顯式地折疊進(jìn)來(lái),以支持在向系統(tǒng)添加未知的新組件時(shí)的靈活性。我們可以設(shè)想不假定信任關(guān)系的系統(tǒng),并將信任作為操作的一部分來(lái)建立。例如,像區(qū)塊鏈這樣的技術(shù)使實(shí)現(xiàn)這樣的用例成為可能。使用分散化的標(biāo)識(shí),系統(tǒng)可以在不需要人工參與的情況下作為事務(wù)的一部分驗(yàn)證用戶的某些屬性。
一個(gè)例子
讓我們舉個(gè)例子。如果你考慮一家銀行來(lái)作為系統(tǒng)的一部分,你需要通過(guò)一個(gè)注冊(cè)流程,他們會(huì)收集你的信息,得到你的簽名,檢查你的文件。在這些檢查之后,如果您通過(guò)了,信任就建立起來(lái)了,您就可以參與系統(tǒng)了。但是,只要涉及到軟件系統(tǒng),信任就由一個(gè)獨(dú)立的過(guò)程而不是系統(tǒng)來(lái)建立。我們認(rèn)為,在這種情況下,參與者是由預(yù)先建立的信任所耦合的。由于需要復(fù)雜的脫機(jī)進(jìn)程,耦合通常很昂貴。
相反,與“區(qū)塊鏈可驗(yàn)證索賠”這樣的系統(tǒng)相比,該系統(tǒng)可以與不可信的個(gè)人交互,并按需建立信任。此外,系統(tǒng)可以根據(jù)可能的信任級(jí)別提供不同級(jí)別的功能。在這種情況下,信任是一個(gè)動(dòng)態(tài)實(shí)體,而不是預(yù)先在系統(tǒng)中建立的靜態(tài)條目。例如,如果參與者沒(méi)有償還貸款,這可能是一個(gè)信號(hào),表明他的信任水平應(yīng)該調(diào)整。
結(jié)論
總之,我們認(rèn)為信任也是一個(gè)耦合維度。在這個(gè)維度中具有自治權(quán)的系統(tǒng)可以與不受信任的方一起工作,并隨著時(shí)間發(fā)展信任。