分享一套golang實(shí)現(xiàn)的 IM 系統(tǒng),一鍵部署服務(wù)端,客戶端SDK全平臺(tái)支持,可以替代IM云服務(wù)

      網(wǎng)友投稿 1039 2022-05-30

      開篇

      自互聯(lián)網(wǎng)誕生以來,即時(shí)通訊平臺(tái)就一直存在。從世界范圍來看,WhatsApp、Facebook、 微信、Telegram是領(lǐng)先的消息平臺(tái),用戶主要使用這些平臺(tái)與家人和朋友保持聯(lián)系。隨著互聯(lián)網(wǎng)的發(fā)展,人與人之間的溝通是剛需,無處不在,幾乎所有的APP都集成IM功能,從社交、游戲、到生活中的方方面面,打車、找房等。可以說IM作為一種通訊能力,已經(jīng)成為互聯(lián)網(wǎng)上的基礎(chǔ)設(shè)施,成為許多APP不可或缺的功能。現(xiàn)在絕大多數(shù)APP使用IM云服務(wù)商的SDK,方便接入的同時(shí),也帶來了幾個(gè)深層次的問題:(1)成本問題:企業(yè)每年額外支付上萬乃至數(shù)十萬的云服務(wù)費(fèi)用,是個(gè)不小的成本;(2)數(shù)據(jù)隱私問題:企業(yè)的用戶數(shù)據(jù)、聊天記錄等核心數(shù)據(jù)存儲(chǔ)在IM云服務(wù)商,如何保證數(shù)據(jù)的安全性是個(gè)極大挑戰(zhàn);(3)需求定制問題:IM需求多樣化,IM功能只能由IM云服務(wù)商通過SDK的形式提供給大家使用,對(duì)于一些定制化的需求,是否支持,什么時(shí)候?qū)崿F(xiàn),都是個(gè)未知數(shù);(4)云服務(wù)商綁架問題:一旦使用IM云服務(wù),形成捆綁關(guān)系,遷移成本高,受制于人。

      OpenIM采用和IM云服務(wù)相同的接口,提供服務(wù)端和客戶端SDK,讓開發(fā)者以免費(fèi)或低成本接入IMSDK,并私有化部署,完成IM功能接入。

      介紹

      OpenIM:由前微信技術(shù)專家打造的基于 Go 實(shí)現(xiàn)的即時(shí)通訊(IM)項(xiàng)目,從服務(wù)端到客戶端SDK開源即時(shí)通訊(IM)整體解決方案。開發(fā)文檔完善,代碼100%開源,支持Andorid、iOS原生開發(fā),支持Flutter、uni-app跨端開發(fā),支持小程序、React等所有主流web前端技術(shù)框架, PC支持Electron,可以輕松替代第三方IM云服務(wù)。

      后臺(tái)架構(gòu)

      服務(wù)端由接入層、邏輯層和存儲(chǔ)層組成,好處在于各個(gè)層次能夠依據(jù)業(yè)務(wù)特點(diǎn)專注于自己的事情,提高系統(tǒng)復(fù)用性,降低業(yè)務(wù)間的耦合。

      (1)接入層:消息通過 websocket 協(xié)議接入,其他通過 http/https 協(xié)議接入,消息是高頻及核心功能,通過雙協(xié)議路由,體現(xiàn)了輕重分離的設(shè)計(jì)思想。

      (2)邏輯層:通過 rpc 實(shí)現(xiàn)無狀態(tài)邏輯服務(wù),易于平行擴(kuò)展,消息通過 MQ 解耦。

      (3)存儲(chǔ)層:redis 存儲(chǔ) token 和 seq;mongodb 存儲(chǔ)離線消息,并定時(shí)刪除 14 天(可自行配置)前數(shù)據(jù);mysql 存儲(chǔ)全量歷史消息以及用戶相關(guān)資料。數(shù)據(jù)分層存儲(chǔ),充分利用不同存儲(chǔ)組件的特性。

      (4)Etcd:服務(wù)注冊(cè)和發(fā)現(xiàn)、以及分布式配置中心。

      分享一套golang實(shí)現(xiàn)的 IM 系統(tǒng),一鍵部署服務(wù)端,客戶端SDK全平臺(tái)支持,可以替代IM云服務(wù)

      消息流程

      Open-IM 消息模型采用經(jīng)典的收件箱模型,并通過全局 seq 做消息對(duì)齊,這里帶來架構(gòu)的簡化,體現(xiàn)了簡單美的架構(gòu)設(shè)計(jì)理念。很多開發(fā)者通過網(wǎng)絡(luò)文章,了解到收件箱模型的原理,也知道 seq 的概念,但如何在項(xiàng)目中做權(quán)衡和取舍,愛因斯坦曾經(jīng)說過“事情應(yīng)該力求簡單,不過不能過于簡單”,我們看到很多技術(shù)文章對(duì)收件箱模型和 seq 的濫用,要么系統(tǒng)設(shè)計(jì)復(fù)雜,要么過于簡單,最后的結(jié)果是系統(tǒng)不穩(wěn)定,消息可達(dá)率無法達(dá)到要求。以下我們簡單講解消息如何發(fā)送,系統(tǒng)如何簡單解耦,接收方如何實(shí)時(shí)收到消息,并如何利用 seq 做全局消息對(duì)齊,確保消息百分百可達(dá)。

      客戶端架構(gòu)

      客戶端 SDK 負(fù)責(zé)和 IM 服務(wù)端交互,本地?cái)?shù)據(jù)存儲(chǔ)和同步,消息、事件回調(diào)。開發(fā)者通過集成 SDK,自行開發(fā)聊天界面 UI,設(shè)置事件監(jiān)聽回調(diào)實(shí)現(xiàn)數(shù)據(jù)和 UI 對(duì)接。

      Open-IMSDK 分為三層:網(wǎng)絡(luò)層、邏輯層、存儲(chǔ)層。分層治理,各司其職,實(shí)現(xiàn)高效、穩(wěn)定、統(tǒng)一的客戶端架構(gòu)。

      SDK集成流程

      OpenIM SDK 集成非常簡單,由于開發(fā)者私有化部署,代碼、配置、數(shù)據(jù)都在自家服務(wù)器上,不用向云平臺(tái)申請(qǐng) AppKey 和 Secret,相比第三方 IM 云服務(wù),可見 OpenIM 更安全、可控、自由度更高。

      地址

      官方文檔地址:

      https://doc.rentsoft.cn/

      OpenIM github開源地址:

      https://github.com/OpenIMSDK/Open-IM-Server

      OpenIM官網(wǎng) :https://www.rentsoft.cn

      OpenIM官方論壇:https://forum.rentsoft.cn

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

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

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

      API/SDK 華為開源鏡像站 Mirrors

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:《scikit-learn機(jī)器學(xué)習(xí)常用算法原理及編程實(shí)戰(zhàn)》—2.5 Matplotlib簡介
      下一篇:ROS2機(jī)器人個(gè)人教程博客匯總(2021共6套)
      相關(guān)文章
      亚洲kkk4444在线观看| 亚洲国产精品乱码一区二区| 亚洲成A∨人片在线观看不卡| 亚洲人AV永久一区二区三区久久| 亚洲AV网一区二区三区 | 中文亚洲AV片不卡在线观看| 偷自拍亚洲视频在线观看99| 亚洲国产精品无码观看久久| 亚洲日韩av无码中文| 亚洲午夜无码久久久久小说| 亚洲欧美国产精品专区久久| 中文字幕亚洲情99在线| 亚洲人成小说网站色| 一本色道久久88—综合亚洲精品| 国产99在线|亚洲| 亚洲中文字幕久久久一区| 亚洲综合一区二区三区四区五区 | 亚洲伊人色一综合网| 亚洲三级视频在线| 亚洲人成77777在线播放网站不卡| 亚洲欧洲日韩国产一区二区三区| 亚洲中文字幕无码一去台湾| 亚洲第一街区偷拍街拍| 朝桐光亚洲专区在线中文字幕| mm1313亚洲精品无码又大又粗| 亚洲日本韩国在线| 久久精品国产亚洲5555| 亚洲精品成人无码中文毛片不卡| 午夜亚洲国产理论秋霞| 亚洲精品一卡2卡3卡三卡四卡| 亚洲六月丁香六月婷婷色伊人| 亚洲中文精品久久久久久不卡| 亚洲AV无码成人网站在线观看| 国产AV无码专区亚洲AV琪琪| 亚洲区日韩区无码区| 亚洲国产精品VA在线观看麻豆 | 久久无码av亚洲精品色午夜| 亚洲午夜精品一级在线播放放| 亚洲人成网7777777国产| 亚洲一区影音先锋色资源| 亚洲大香人伊一本线|