免费特黄视频_国产精品久久久av_久久香蕉网_国产精彩视频_中文二区_国产成人一区

二維碼
企資網(wǎng)

掃一掃關(guān)注

當前位置: 首頁 » 企資快訊 » 匯總 » 正文

通俗易懂_即時通訊初學者入門_WhatsApp

放大字體  縮小字體 發(fā)布日期:2021-09-23 11:41:50    作者:沙海萍    瀏覽次數(shù):11
導讀

譯自Codin Gurukul經(jīng)OpenIM技術(shù)人員整理修訂后發(fā)布。寫在前面Open-IM是由前微信技術(shù)可能打造的開源的即時通訊組件。Open-IM包括IM服務(wù)端和客戶端SDK,實現(xiàn)了高性能、輕量級、易擴展等重要特性。開發(fā)者通過集成Open-I

譯自Codin Gurukul經(jīng)OpenIM技術(shù)人員整理修訂后發(fā)布。

寫在前面

Open-IM是由前微信技術(shù)可能打造的開源的即時通訊組件。Open-IM包括IM服務(wù)端和客戶端SDK,實現(xiàn)了高性能、輕量級、易擴展等重要特性。開發(fā)者通過集成Open-IM組件,并私有化部署服務(wù)端,可以將即時通訊、實時網(wǎng)絡(luò)能力快速集成到自身應(yīng)用中,并確保業(yè)務(wù)數(shù)據(jù)的安全性和私密性。

了解更多來自互聯(lián)網(wǎng)文章:

【OpenIM來自互聯(lián)網(wǎng)】開源OpenIM:輕量、高效、實時、可靠、低成本的消息模型

【OpenIM來自互聯(lián)網(wǎng)】C/C++調(diào)用golang函數(shù),golang回調(diào)C/C++函數(shù)

【OpenIM來自互聯(lián)網(wǎng)】簡單輕松入門 一文講解WebRTC實現(xiàn)1對1音視頻通信原理

【OpenIM擴展】OpenIM服務(wù)發(fā)現(xiàn)和負載均衡golang插件:gRPC接入etcdv3

【開源OpenIM】高性能、可伸縮、易擴展的即時通訊架構(gòu)

實時消息現(xiàn)在是我們?nèi)粘I钪斜夭豢缮俚囊徊糠帧5牵阌袥]有想過“WhatsApp”或其他實時消息應(yīng)用程序是如何工作的?

在本文中,我們將探討whatsapp或任何通用實時消息應(yīng)用程序背后的高級工程和系統(tǒng)架構(gòu)。

在深入研究之前,讓我們先了解“通訊是如何工作的?

當兩個客戶機(A和B)想要相互通信或發(fā)送消息時,他們首先知道對方的地址(可能是IP、MAC或任何自定義的唯一標識),然后通過網(wǎng)絡(luò)彼此交換消息,在這種情況下是INTERNET。這個就是所謂的p2p通信了。

但是,如果網(wǎng)絡(luò)非常龐大,客戶數(shù)量達到數(shù)百萬或數(shù)十億,該怎么辦?

在一個非常大的網(wǎng)絡(luò)中,很難知道每個客戶機的地址,在這種情況下,為了使這個系統(tǒng)更加健壯和高可用性,我們需要在客戶機之間安裝一個名為“服務(wù)器”的組件。此服務(wù)器的任務(wù)是協(xié)調(diào)連接到它的所有客戶端,中轉(zhuǎn)雙方之間的消息。

服務(wù)器引入后。所有客戶端都與服務(wù)器連接,而不是彼此連接,這樣成了中心化的通訊架構(gòu)

在這種情況下,當一個客戶機(a)想要向其他客戶機(D)發(fā)送消息時,它首先將消息發(fā)送到服務(wù)器,服務(wù)器知道其他客戶機(D)的地址,然后將消息轉(zhuǎn)發(fā)給其他客戶機(D),反之亦然。

這是通信體系結(jié)構(gòu)的概述。讓我們設(shè)計一個實時消息傳遞系統(tǒng)的實際系統(tǒng)設(shè)計。

但在設(shè)計任何產(chǎn)品之前,了解以下要求非常重要:

  1. 用戶群:了解應(yīng)用程序的使用規(guī)模非常重要。
  2. 所需功能

那么,讓我們列出whatsapp中需要包含的一些功能:

1). 發(fā)消息

2). 多媒體支持

3). Last Seen

4). 消息加密

5). 音頻/視頻通話

根據(jù)應(yīng)用程序需求設(shè)計系統(tǒng)

根據(jù)應(yīng)用程序需求設(shè)計系統(tǒng)

根據(jù)用戶群,我們需要多臺服務(wù)器來處理如此多的流量,因此我們放置了多臺服務(wù)器,而不是一臺服務(wù)器,這就是集群的概念

但問題是,客戶端將連接到哪個服務(wù)器,因為有多個服務(wù)器,并且客戶端不能隨機連接到任何服務(wù)器。為了克服這個問題,我們在客戶端和服務(wù)器之間引入了負載均衡。

在實現(xiàn)了多個服務(wù)器和負載平衡器之后,我們的系統(tǒng)架構(gòu)能夠處理大量用戶。現(xiàn)在,當客戶機想要連接到服務(wù)器時,連接請求首先命中負載平衡器,然后負載平衡器根據(jù)各個服務(wù)器上的負載等各種參數(shù)將連接重定向到服務(wù)器。

但我們的應(yīng)用程序也需要一些存儲機制來保存一些任意狀態(tài)或數(shù)據(jù),為了滿足這一要求,我們還添加了可供所有服務(wù)器訪問的數(shù)據(jù)庫。

但是,使用什么樣的連接呢?

通常,這種系統(tǒng)使用雙工連接或雙向連接。由于消息也可以從服務(wù)器生成,因此需要雙向通信

在繼續(xù)之前,讓我們先了解不同的連接場景以及應(yīng)用程序的工作方式。

  1. 當發(fā)送方連接到服務(wù)器而不是接收方時。

在這種情況下,當接收方未連接到服務(wù)器時,消息存儲在數(shù)據(jù)庫中,當接收方連接到服務(wù)器時,消息從數(shù)據(jù)庫中提取并轉(zhuǎn)發(fā)給接收方,這個就是離線消息的作用。

2.當發(fā)送方未連接到服務(wù)器時。

在這種情況下,當發(fā)送方未連接到服務(wù)器時,發(fā)送方發(fā)送的消息將保存在設(shè)備本地存儲中(可能是SQLite或基于平臺的任何其他內(nèi)容)。當發(fā)送者聯(lián)機或連接到服務(wù)時,消息將從本地存儲中提取并發(fā)送到服務(wù)器。這個就是本地存儲的作用。

3.當兩個客戶端都連接到服務(wù)器時:

在這種情況下,當兩個客戶端都連接到服務(wù)器時,發(fā)送方發(fā)送消息,服務(wù)器將該消息轉(zhuǎn)發(fā)給接收方,而不將消息存儲到數(shù)據(jù)庫或設(shè)備本地存儲器。

需要知道的一件事是,連接總是由客戶機啟動的,因為服務(wù)器不知道客戶機的地址,但客戶機知道服務(wù)器的地址。

發(fā)送、交付和查看三個狀態(tài)

發(fā)送:當我們發(fā)送一條消息,而該消息被Whatsapp服務(wù)器接收時。

已傳遞:當消息從Whatsapp服務(wù)器傳遞到接收方時。

已查看:當信息被接收者看到/打開時。

為了合并所有這些狀態(tài)更改,每條消息都有一個唯一的,用于標識每條消息以及來自各種事件(已發(fā)送/已交付/已查看)的確認。

當客戶端連接到服務(wù)器時,Whatsapp服務(wù)器內(nèi)部會發(fā)生什么?

當客戶端連接到WhatsApp服務(wù)器時,將針對該客戶端創(chuàng)建一個進程(或線程)。此流程負責處理與該客戶機相關(guān)的所有操作。

每個進程都有一個隊列(以淺綠色突出顯示),作為該進程的緩沖區(qū)。創(chuàng)建流程后,將在數(shù)據(jù)庫中創(chuàng)建一個表,以維護P(流程)和關(guān)聯(lián)客戶機的記錄。

Last Seen是怎么回事?

這個特性的實現(xiàn)非常簡單和直接,它只需要維護一個帶有客戶機和時間戳的記錄。

我們在智能手機中打開Whatsapp時,我們的應(yīng)用程序每5秒向服務(wù)器發(fā)送一個脈沖,并且隨著每個脈沖蕞后一次出現(xiàn),表中的時間會更新。當客戶端斷開連接時,記錄中存在上次看到的時間,該時間由關(guān)閉應(yīng)用程序之前發(fā)送的蕞后一個脈沖更新。

媒體共享是如何運作的?

對于共享,我們不使用用于發(fā)送文本消息的連接,因為它是一個非常輕量級的連接,無法處理這么多負載。

相反,WhatsApp使用不同的服務(wù)器(如HTTP)來共享媒體。

當我們共享一個媒體時,它會通過不同的連接上傳到HTTP服務(wù)器,成功上傳后,HTTP服務(wù)器會返回一個與該媒體相關(guān)聯(lián)的哈希值或唯一,該哈希值會發(fā)送到WhatsApp服務(wù)器。在接收方端,同樣的事情以相反的方式工作,接收方接收哈希值,然后從與該哈希值關(guān)聯(lián)的HTTP服務(wù)器下載媒體。

電話服務(wù)也以與媒體服務(wù)相同的方式工作,為此,我們還使用不同的服務(wù)器,并使用不同類型的連接(如套接字等)進行實時通信。

OpenIM github開源地址:

github/OpenIMSDK/Open-IM-Server

OpenIM官網(wǎng) :特別rentsoft

OpenIM官方論壇:forum.rentsoft

我們致力于通過開源模式,為全球企業(yè)/開發(fā)者提供簡單、易用、高效的IM服務(wù)和實時音視頻通訊能力,幫助開發(fā)者降低項目的開發(fā)成本,并讓開發(fā)者掌控業(yè)務(wù)的核心數(shù)據(jù)。

IM作為核心業(yè)務(wù)數(shù)據(jù),安全的重要性毋庸置疑,OpenIM開源以及私有化部署讓企業(yè)能更放心使用。

如今IM云服務(wù)商收費高企,如何讓企業(yè)低成本、安全、可靠接入IM服務(wù),是OpenIM的歷史使命,也是我們前進的方向。

如您有技術(shù)上面的高見請到我們的論壇聯(lián)系溝通,用戶也可與我們的技術(shù)人員探討使用方面的難題以及見解



 
(文/沙海萍)
免責聲明
本文僅代表作發(fā)布者:沙海萍個人觀點,本站未對其內(nèi)容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔相應(yīng)責任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

粵ICP備16078936號

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

主站蜘蛛池模板: 国产ts人妖一区二区三区 | 中文字幕99 | 波多野结衣精品 | 欧美1页| 黄视频免费观看 | 亚洲人成一区二区三区性色 | 日韩高清国产一区在线 | www日韩| 欧美激情在线观看一区二区三区 | 亚洲精品日韩视频 | 综合久久av | 欧美日韩视频在线第一区 | 日韩成人中文字幕 | 国产精品毛片av | 久久久噜噜噜www成人网 | 免费视频一区二区 | 国产日韩欧美一区二区 | 亚洲最新网址 | 亚洲精品中文在线 | 国产精品久久久久无码av | 日日摸夜夜爽人人添av | 99视频久 | 亚洲男人天堂 | 爱高潮www亚洲精品 中文字幕免费视频 | 国产ts人妖另类 | 欧美操操操| 日韩精品在线观看视频 | 成年人在线观看视频 | 日韩在线精品视频 | 天堂色网| 99精品久久 | 亚洲一区影院 | 午夜在线观看视频 | 精品国产一区二区三区日日嗨 | 亚洲品质自拍视频网站 | 天天干成人网 | 国产精品自拍视频网站 | 国产一区二区三区在线看 | 欧美一卡二卡在线观看 | 亚洲日本成人 | 精产国产伦理一二三区 |