欧美,精品,综合,亚洲,好吊妞视频免新费观看,免费观看三级吃奶,一级a片女人自慰免费看

您當(dāng)前的位置是:  首頁(yè) > 資訊 > 市場(chǎng) >
 首頁(yè) > 資訊 > 市場(chǎng) >

深度 | Web 3.0時(shí)代去中心化IM 的挑戰(zhàn)與思考

2023-02-06 16:22:44   作者:   來(lái)源:   評(píng)論:0  點(diǎn)擊:


b51e3bafd817970648f5d19967fd09f7.jpg

  前言

  Web3.0時(shí)代的重要特點(diǎn):

  1、數(shù)據(jù)主權(quán)

  用戶(hù)將擁有自己的數(shù)據(jù)主權(quán),用戶(hù)所創(chuàng)造的數(shù)字內(nèi)容,所有權(quán)和控制權(quán)都?xì)w屬于用戶(hù),用戶(hù)所創(chuàng)造的價(jià)值可以由用戶(hù)自主支配。對(duì)于IM業(yè)務(wù),就是用戶(hù)的好友列表,聊天消息等數(shù)據(jù)屬于用戶(hù),不屬于任何商業(yè)機(jī)構(gòu)。

  2、去中心化

  這個(gè)業(yè)務(wù)網(wǎng)絡(luò)不被任何人和組織所控制,任何人和組織都可以參與這個(gè)網(wǎng)絡(luò),隨時(shí)都可以加入和退出,為全網(wǎng)用戶(hù)提供服務(wù)。用戶(hù)不屬于任何組織,組織是服務(wù)提供者不是用戶(hù)的擁有者。

  基于以上Web3.0兩個(gè)特點(diǎn),可以推導(dǎo)出Web3.0對(duì)IM的技術(shù)需求:

  1.、動(dòng)態(tài)網(wǎng)絡(luò):網(wǎng)絡(luò)服務(wù)節(jié)點(diǎn)是動(dòng)態(tài)的,全球任何一個(gè)地方的節(jié)點(diǎn)都可以隨時(shí)加入和退出網(wǎng)絡(luò),任何節(jié)點(diǎn)的崩潰和退出都不影響網(wǎng)路正常運(yùn)作。

  2.、數(shù)據(jù)安全:用戶(hù)數(shù)據(jù)必須是加密的,聊天消息要支持端到端加密安全,服務(wù)節(jié)點(diǎn)只做存儲(chǔ)與轉(zhuǎn)發(fā),無(wú)法查看聊天消息和好友列表等數(shù)據(jù)內(nèi)容。

  這些需求對(duì)技術(shù)架構(gòu)和實(shí)現(xiàn)具有非常大的挑戰(zhàn)。

  第2點(diǎn)需求意味著需要支持動(dòng)態(tài)擴(kuò)容和索容。大家都知道,傳統(tǒng)web2.0技術(shù)是基于中心化的,服務(wù)器規(guī)格統(tǒng)一,性能都比較好,服務(wù)器之間的網(wǎng)絡(luò)延遲極小一般在1毫秒以下,集群出口帶寬可達(dá)到千兆甚至萬(wàn)兆。即使是在這么好的條件下,動(dòng)態(tài)平滑地?cái)U(kuò)容和縮容,服務(wù)平穩(wěn)運(yùn)行都不是一件容易的事情。在去中心化環(huán)境中,參與網(wǎng)絡(luò)的節(jié)點(diǎn)的性能,配置,可靠性,網(wǎng)絡(luò)帶寬等參差不齊,機(jī)器隨時(shí)都可能關(guān)機(jī),網(wǎng)絡(luò)隨時(shí)都可能斷開(kāi),甚至還可能存在一些惡意節(jié)點(diǎn),發(fā)送惡意數(shù)據(jù)影響網(wǎng)絡(luò)正常運(yùn)行。這些因素都是在設(shè)計(jì)和實(shí)現(xiàn)去中心化IM所要面對(duì)和考慮的,當(dāng)然從另一個(gè)角度來(lái)看,如果這些問(wèn)題都能得到解決,解決方案也可能反過(guò)來(lái)應(yīng)用到中心化服務(wù)架構(gòu)中,增強(qiáng)中心化服務(wù)的穩(wěn)定性和魯棒性。

  在傳統(tǒng)web2.0技術(shù)架構(gòu)中,異地多活是一座高峰,是高可用服務(wù)架構(gòu)的極致追求。從某種程度上來(lái)說(shuō),異地多活已經(jīng)接近去中心化架構(gòu),所以我們先來(lái)重溫一下異地多活架構(gòu),看看有哪些方面可以借鑒的。

6fb5dd10fcfd30034fbd3b7553daed0d.jpg

圖片引用自 《搞懂異地多活,看這篇就夠了》

  異地多活的思路和關(guān)鍵點(diǎn):

  • 提供一個(gè)路由層,對(duì)用戶(hù)按地域或哈希把用戶(hù)分配到某個(gè)機(jī)房

  • 同一個(gè)用戶(hù)的相關(guān)請(qǐng)求,只在一個(gè)機(jī)房?jī)?nèi)完成所有業(yè)務(wù)「閉環(huán)」,不再出現(xiàn)「跨機(jī)房」訪(fǎng)問(wèn)

  • 機(jī)房之間互為熱備份,每個(gè)機(jī)房都保存所有用戶(hù)全量數(shù)據(jù)

  • 當(dāng)某個(gè)機(jī)房發(fā)生災(zāi)難時(shí),備份機(jī)房的從庫(kù)升級(jí)成主庫(kù),并在路由層切換用戶(hù)到備份機(jī)房

  異地多活的思路對(duì)于去中心化架構(gòu)是非常具有借鑒意義的,可以把機(jī)房看成是一個(gè)節(jié)點(diǎn),當(dāng)無(wú)數(shù)個(gè)機(jī)房(節(jié)點(diǎn))組成一個(gè)網(wǎng)絡(luò)時(shí),異地多活架構(gòu)就泛化成了去中心化架構(gòu)。

  當(dāng)然量變引發(fā)質(zhì)變,當(dāng)節(jié)點(diǎn)足夠多時(shí),傳統(tǒng)的異地多活技術(shù)已經(jīng)不能直接適用于去中心化架構(gòu),必須經(jīng)過(guò)改進(jìn)和改造才能為去中心化架構(gòu)所采用。去中心化架構(gòu)是另一座更高的山峰。

  路由網(wǎng)絡(luò)

  路由網(wǎng)絡(luò)的作用類(lèi)似于異地多活中的路由層,提供了資源和服務(wù)發(fā)現(xiàn)(discovery)的服務(wù)。比如對(duì)于用戶(hù)張三,我們需要知道當(dāng)前服務(wù)張三的節(jié)點(diǎn)到底在哪里。一個(gè)直觀(guān)的方案,是一個(gè)一個(gè)節(jié)點(diǎn)地問(wèn)(查找),效率低下。在去中心化架構(gòu)中,常用的路由發(fā)現(xiàn)技術(shù)是Gossip協(xié)議和Kademlia網(wǎng)絡(luò)。

  Gossip協(xié)議

  Gossip協(xié)議的靈感來(lái)自于“好事不出門(mén)壞事傳千里”,“辦公室里的流言蜚語(yǔ)很快就傳遍全公司”。比如張三連接的節(jié)點(diǎn)1隨機(jī)向臨近節(jié)點(diǎn)廣播“張三在節(jié)點(diǎn)1上”, 臨近節(jié)點(diǎn)再隨機(jī)向它的臨近節(jié)點(diǎn)廣播,即一傳十,十傳百,消息很快傳遍全網(wǎng),所有節(jié)點(diǎn)都知道“張三在節(jié)點(diǎn)1上”。反過(guò)來(lái),如果節(jié)點(diǎn)2不知道張三在哪里,它可以向全網(wǎng)詢(xún)問(wèn)“張三在哪里”,在傳播的過(guò)程中,如果有節(jié)點(diǎn)指知道張三的地址,立即向節(jié)點(diǎn)2返回張三地址,結(jié)束查詢(xún)過(guò)程。Gossip不是一個(gè)新的東西,大家熟知的redis集群采用了Gossip協(xié)議。

90142a51911b1aed33a912f7fdb31879.jpg

  Gossip的優(yōu)點(diǎn)是對(duì)網(wǎng)絡(luò)的連通性和穩(wěn)定性幾乎沒(méi)有任何要求,具有極強(qiáng)的魯棒性。缺點(diǎn)是網(wǎng)絡(luò)中的消息太多,而且有重復(fù)消息,增加了網(wǎng)絡(luò)傳輸壓力和節(jié)點(diǎn)的額外處理負(fù)載。

  Kademlia網(wǎng)絡(luò)

  Kademlia是一種分布式哈希表(DHT)技術(shù),被廣泛應(yīng)用于去中心化產(chǎn)品中,比如大家熟知的以太坊,磁力下載等。Kademlia 把成千上萬(wàn)個(gè)節(jié)點(diǎn)構(gòu)成一個(gè)自我組織的網(wǎng)絡(luò),用戶(hù)可以使用這個(gè)網(wǎng)絡(luò)快速查找定位到資源。關(guān)于Kademlia技術(shù)在網(wǎng)絡(luò)上能找到很多相關(guān)文章,但大多數(shù)都拘泥于細(xì)節(jié)中,這里簡(jiǎn)單介紹Kademlia的原理,能解決什么問(wèn)題,至于詳細(xì)原理請(qǐng)自行搜索其他文章。

7c472ea5221bfde5ee2d8f7c995fe0f1.jpg

  1. Kademlia網(wǎng)絡(luò)是一個(gè)索引網(wǎng)絡(luò),解決的是如何快速定位資源位置的問(wèn)題

  2. 每個(gè)資源都有唯一的哈希值

  3. 每個(gè)節(jié)點(diǎn)都有唯一的哈希值

  4. Node-900擁有一個(gè)資源,資源的哈希值是100

  5. Node-900 把資源發(fā)布到與資源哈希值最近的Node-100(距離等于0)

  6. Node-100的記錄了一條目錄,“哈希100的資源保存在Node-900上”

  7. Node-800 想要訪(fǎng)問(wèn)資源-100,通過(guò)哈希值找到Node-100,再根據(jù)目錄訪(fǎng)問(wèn)Node-900找到資源

  8. 目錄數(shù)據(jù)的高可用與冗余

  a. 資源擁有者Node-900發(fā)布到距離資源最近的k個(gè)節(jié)點(diǎn),比如 Node-99(距離為1),Node-100(距離為0),Node-102(距離為2)

  b. 同樣地,訪(fǎng)問(wèn)者訪(fǎng)問(wèn)距離資源最近的k個(gè)節(jié)點(diǎn)獲取目錄

  c. 因?yàn)榫W(wǎng)絡(luò)節(jié)點(diǎn)不斷地上線(xiàn)下線(xiàn),距離資源最近的k個(gè)節(jié)點(diǎn)集合會(huì)不斷變化,所以資源擁有者Node-900 要周期性地發(fā)布資源,比如Node-100下線(xiàn)后,k個(gè)節(jié)點(diǎn)集合變成 Node-99(距離為1),Node-102(距離為2),Node-103(距離為3)

  9. Kademlia的距離是邏輯距離,不是物理距離,兩個(gè)邏輯距離很近的節(jié)點(diǎn),物理上可能相隔很遠(yuǎn)。

  消息順序

  IM 的核心功能是消息收發(fā)。在中心化架構(gòu)中,所有上行消息通常都會(huì)歸攏到一個(gè)地方,所以消息先后順序由中心化來(lái)保證。但在去中心化架構(gòu)中,上行消息可能是從不同的節(jié)點(diǎn)過(guò)來(lái)的,接收消息順序可能會(huì)亂序。具體例子:

91f06075f71c8214370d1616ff05bbca.jpg

  C先收到B的消息,后收到A的消息,導(dǎo)致最終C的聊天記錄和A/B的不一樣。

  解決方案:

  • 時(shí)間戳

  每條消息都打上一個(gè)時(shí)間戳,在接收端根據(jù)時(shí)間戳排序。但是去中心化網(wǎng)絡(luò)中,節(jié)點(diǎn)間的時(shí)鐘不可能完全同步,仍然存在先后順序錯(cuò)亂的可能性。

  • 依賴(lài)消息

  每條消息都帶有依賴(lài)消息Id,表示當(dāng)前消息排在依賴(lài)消息之后?蛻(hù)端在收到一條消息后,先檢查其依賴(lài)消息是否都已經(jīng)收到并且上屏,如果沒(méi)有收到則先暫存消息,直到所有依賴(lài)消息上屏。此方案的缺點(diǎn)是增加客戶(hù)端處理消息的復(fù)雜度。

  端到端加密

  因?yàn)槿魏稳硕伎梢约尤肴ブ行幕疘M網(wǎng)絡(luò),任何節(jié)點(diǎn)都可能接觸到消息,所以為了隱私和安全,消息必須是端到端加密的。常用的端到端加密方案是Diffie–Hellman 密鑰交換協(xié)議(DH),可以使通訊雙方無(wú)需預(yù)先溝通,在不安全的網(wǎng)絡(luò)中即可確定一個(gè)“協(xié)商密鑰”,這個(gè)密鑰可以在后續(xù)的通訊中作為對(duì)稱(chēng)密鑰來(lái)加密消息內(nèi)容,這樣避免了雙方網(wǎng)上協(xié)商密鑰帶來(lái)的泄露風(fēng)險(xiǎn)。

9d946db6eaa758574992ac98ee216b0e.jpg

  從圖中可以看出在網(wǎng)絡(luò)上傳輸?shù)氖枪,真正用來(lái)加密的“對(duì)稱(chēng)密鑰S”是計(jì)算出來(lái)的,并沒(méi)有通過(guò)網(wǎng)絡(luò)傳輸,非常安全。但是如果所有消息都用同一個(gè)對(duì)稱(chēng)密鑰S,一旦S被破解得到則所有消息都會(huì)被破解。最好的辦法是每條消息都用不同的密鑰,即一消息一密鑰。

c10d67c96e364f23ca9c6ce351731808.jpg

• 通過(guò)密鑰函數(shù)計(jì)算得出消息密鑰

  • 密鑰函數(shù)通常為不可逆函數(shù),即知道輸出很難反向計(jì)算出輸入,比如大家熟知的哈希函數(shù)就是不可逆函數(shù)

  • 密鑰函數(shù)的輸出被分為鏈密鑰和消息密鑰兩部分,鏈密鑰作為下一次密鑰函數(shù)的輸入,消息密鑰用來(lái)加密消息

  • 重復(fù)這個(gè)過(guò)程,即鏈?zhǔn)椒磻?yīng)

  鏈?zhǔn)椒磻?yīng)生成的密鑰雖然很安全,但帶來(lái)一個(gè)新的問(wèn)題,即如何讀取歷史消息。讀取歷史消息通常是從某條消息開(kāi)始拉去n條消息。從上圖可以看出,要想得到“消息密鑰2”,必須從初始密鑰開(kāi)始計(jì)算2次才能得出,如果要得到“消息密鑰10000”,則要計(jì)算10000次才能得出,顯然這樣做的效率非常低下。

  推送

  推送是IM業(yè)務(wù)里比較重要的功能,在app退到后臺(tái)或者被殺死,仍然可以通知到客戶(hù)。在去中心化IM架構(gòu)中,因?yàn)橄⑹嵌说蕉思用艿,?jié)點(diǎn)在給app發(fā)送推送時(shí),只有提醒“您有一條新消息”,不會(huì)有消息內(nèi)容。這是在隱私保護(hù)與用戶(hù)體驗(yàn)之間的妥協(xié)與平衡。

  開(kāi)源現(xiàn)狀

  目前在開(kāi)源社區(qū)比較接近去中心化IM理念的產(chǎn)品matrix。

c7ee2ff6899f513ba7ec910ab0fe2425.jpg

  matrix的特性:

  • 每個(gè)用戶(hù)都有歸屬于一個(gè)Home Server,用戶(hù)名格式@user:domain,比如 @Alice:163.com , 跟e-mail郵箱名很類(lèi)似

  • Home Server之間采用聯(lián)邦式協(xié)議,Matrix網(wǎng)絡(luò)由分布在世界各地,由不同個(gè)人和組織運(yùn)營(yíng)的服務(wù)器組成,因此Matrix協(xié)議不容易被單個(gè)組織壟斷

  • 私聊和群聊是端到端加密的,所有聊天內(nèi)容加密存儲(chǔ)、加密傳輸。Home Server無(wú)法看到用戶(hù)的聊天內(nèi)容

  • 默認(rèn)使用HTTPS+JSON APIs作為傳輸協(xié)議

  • 可以通過(guò)Bridge與 Telegram, Discord, WhatsApp, Facebook, Hangouts, Signal 互通

  • 支持通過(guò)WebRTC進(jìn)行音視頻通話(huà)

  matrix的缺點(diǎn):

  -用戶(hù)ID(地址)成本高,因?yàn)?@Alice:matrix.com 帶有域名后綴,如果用戶(hù)想擁有永久Id,必須購(gòu)買(mǎi)域名。如果使用SP的域名,則用戶(hù)Id本身并不被用戶(hù)所擁有,這跟web3的理念是相違背的。

  - matrix是 https + json,優(yōu)點(diǎn)是容易理解,缺點(diǎn)是占用更多帶寬,并且在序列化和反序列化時(shí)會(huì)消耗更多的cpu。

  - Home Server之間是全連接(full mesh)方式,當(dāng)參與的Home Server比較多時(shí),比如有上千甚至上萬(wàn)個(gè)Home Server時(shí),Server之間的連接消耗會(huì)導(dǎo)致性能急劇下降。

  總的來(lái)說(shuō) matrix 更像是一個(gè)去中心化的e-mail,距離真正的去中心化還有一些差距。

  目前Web3的技術(shù)創(chuàng)新和變革也是風(fēng)起云涌,不斷有新的算法和架構(gòu)出現(xiàn)。環(huán)信作為國(guó)內(nèi)IM云服務(wù)的開(kāi)創(chuàng)者,在設(shè)計(jì)下一代IM技術(shù)架構(gòu)時(shí),也在積極借鑒和探索這些前沿技術(shù),為我們的客戶(hù)提供穩(wěn)定、可靠、專(zhuān)業(yè)、低成本高質(zhì)量的IM服務(wù),為客戶(hù)賦能和創(chuàng)造更多的價(jià)值。

【免責(zé)聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀(guān)點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

相關(guān)閱讀:

評(píng)論排行

專(zhuān)題

CTI論壇會(huì)員企業(yè)