<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          6k+點(diǎn)贊的SpringBoot+Netty分布式即時(shí)通訊系統(tǒng)!愛了愛了!

          共 1659字,需瀏覽 4分鐘

           ·

          2020-09-10 18:38

          最近公司開發(fā)需要用到 IM 系統(tǒng),自己開發(fā)的話需要耗費(fèi)較多時(shí)間和精力。于是我們考慮在開源項(xiàng)目的基礎(chǔ)上二次開發(fā),我們對(duì)比了較多開源方案之后,選擇了 CIM[1] ? ? 。

          項(xiàng)目簡介

          CIM(CROSS-IM)項(xiàng)目是面向開發(fā)者的 即時(shí)通信 系統(tǒng),項(xiàng)目基于目前比較流行的 SpringBoot 進(jìn)行構(gòu)建(項(xiàng)目依賴的Spring Boot 版本為 1.5.x ,可以自行升級(jí)到最新穩(wěn)定版本),基于 Netty 進(jìn)行網(wǎng)絡(luò)通信。利用Redis來存放客戶端的賬戶/狀態(tài)(是否在線)/路由等信息,同時(shí)使用Zookeeper來完成服務(wù)間的發(fā)現(xiàn)。

          通過 CIM(CROSS-IM) 你可以設(shè)計(jì)一款屬于自己可水平擴(kuò)展的 IM 。

          項(xiàng)目地址: https://github.com/crossoverJie/cim[2]

          功能列表

          • 群聊
          • 私聊
          • 聊天記錄查詢
          • AI 自動(dòng)聊天(價(jià)值兩億的智能模式哦)
          • 延時(shí)消息
          • 客戶端自動(dòng)重連
          • 服務(wù)端自動(dòng)剔除離線客戶端
          • 支持水平擴(kuò)容/縮容
          • 支持Protocol Buffer協(xié)議

          項(xiàng)目截圖

          群聊:


          私聊:

          項(xiàng)目技術(shù)棧

          • Spring Boot
          • Zookeeper
          • Netty
          • Redis
          • ...

          可以看到項(xiàng)目中用到的都是技術(shù)都是很常用技術(shù),同時(shí)也是我們需要掌握的能力。而且 crossoverJie ?大佬的代碼寫的也相當(dāng)漂亮,非常值得學(xué)習(xí)一波。

          先來簡單看一下系統(tǒng)整體架構(gòu)!

          系統(tǒng)架構(gòu)

          下面我們來一起看下幾個(gè)關(guān)鍵實(shí)現(xiàn)吧。

          代碼簡單分析

          群聊

          群聊的使用非常簡單,只需要在控制臺(tái)輸入消息回車即可。

          這時(shí)會(huì)去調(diào)用 route 的群聊接口。

          實(shí)現(xiàn)的效果就是其中一個(gè)客戶端發(fā)消息,其余所有客戶端都能收到!

          流程肯定是客戶端發(fā)送一條消息到服務(wù)端,服務(wù)端收到后在上文介紹的 SessionSocketHolder 中遍歷所有 Channel(通道)然后下發(fā)消息即可。

          服務(wù)端是單機(jī)倒也可以,但現(xiàn)在是集群設(shè)計(jì)。所以所有的客戶端會(huì)根據(jù)之前的輪詢算法分配到不同的 服務(wù)端實(shí)例中。

          接著會(huì)挨個(gè)調(diào)用每個(gè)客戶端所在的服務(wù)端的 HTTP 接口用于推送消息。

          私聊

          私聊也是同理,但前提是需要觸發(fā)關(guān)鍵字;使用 userId;;消息內(nèi)容 這樣的格式才會(huì)給某個(gè)用戶發(fā)送消息,所以一般都需要先使用 :olu 命令獲取所以在線用戶才方便使用。

          在線用戶查看

          這是一個(gè)輔助接口,可以查詢出當(dāng)前在線用戶信息。

          實(shí)現(xiàn)也很簡單,也就是查詢之前保存 ”用戶登錄狀態(tài)的那個(gè)去重 set “即可。

          后記

          CIM[3] 的功能包含但不限于此,其他功能就等你自己去體驗(yàn)嘍~

          體貼的crossoverJie 大佬還為該項(xiàng)目寫了很多 相關(guān)的文章[4],分享了一些他開發(fā)這個(gè)項(xiàng)目的設(shè)計(jì)流程/遇到的問題,包含了很多大佬的思考。小伙伴們可要好好利用起來哦~

          以下是文章列表:

          按照 crossoverjie 大佬的設(shè)想,該項(xiàng)目還有很多 todo list,感興趣的小伙伴在學(xué)習(xí)之余也可以貢獻(xiàn)自己的一份力量,積極的參與開源哈!

          參考資料

          [1]

          CIM: https://github.com/crossoverJie/cim

          [2]

          https://github.com/crossoverJie/cim: https://github.com/crossoverJie/cim

          [3]

          CIM: https://github.com/crossoverJie/cim

          [4]

          相關(guān)的文章: https://crossoverjie.top/categories/Netty/


          后記

          我整理的4本PDF文檔,公眾號(hào)“后端技術(shù)進(jìn)階”后臺(tái)回復(fù)“面試突擊”即可免費(fèi)獲取。

          文章有幫助可以點(diǎn)個(gè)「在看」或「分享」,都是支持,我都喜歡!

          我是Guide哥,Java后端開發(fā),會(huì)一點(diǎn)前端知識(shí),喜歡烹飪,自由的少年。一個(gè)三觀比主角還正的技術(shù)人。我們下期再見!

          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久人人妻人人人人妻性色aV | 第一福利成人AV导航 | 五月丁香乱能高清 | 污片免费 | 九色偷拍 |