Go im 分布式im即時通訊系統

2021-10-07 00:14:24 字數 2308 閱讀 7357

純go實現的im即時通訊系統,各層可單獨部署,之間通過rpc通訊,支援集群,學習於goim, 另使用於zookeeper,擴充套件性會大大增強, 總分三層

comet(使用者連線層),可以直接部署多個節點,每個節點保證serverid 唯一,在配置檔案comet.toml

logic(業務邏輯層),無狀態,各層通過rpc通訊,容易擴充套件,支援http介面來接收訊息

job(任務推送層)通過redis 訂閱發布功能進行推送到comet層。

以下comet 層,logic 層,job層都可以靈活擴充套件機器 

分布式,可拓撲的架構

支援單個,房間推送

心跳支援(gorilla/websocket內建)

基於redis 做訊息推送

輕量級持續迭代...

安裝

go get -u github.com/terry-ye/im

# 需要使用zookeeper服務 文件最底有安裝啟動方法

go get -u -v -tags "zookeeper" github.com/smallnest/rpcx/...

golang.org 包拉不下來的情況,例

package golang.org/x/net/ipv4: unrecognized import path "golang.org/x/net/ipv4" (https fetch: get  dial tcp 216.239.37.1:443: i/o timeout)
從github 拉下來,再移動位置

git clone 

mkdir -p golang.org/x/

mv net $gopath/src/golang.org/x/

部署im 安裝comet、logic、job模組

# 注意:第一次需要先啟動logic ,因為要註冊 服務端的zookeeper, 不然先啟動comet會報錯,第二次則不需要

cd ../logic/

mv logic.toml.example logic.toml

go install -tags zookeeper # 或 go run -tags zookeeper *.go

$gopath/bin/logic d $gopath/src/im/logic/

# nohup $gopath/bin/logic d $gopath/src/im/logic/ 2>&1 > /data/log/im/logic.log &

cd $gopath/src/im/comet

mv comet.toml.example comet.toml

go install -tags zookeeper # 或 go run -tags zookeeper *.go

# 啟動

$gopath/bin/comet d $gopath/src/im/comet/

# nohup $gopath/bin/comet d $gopath/src/im/comet/ 2>&1 > /data/log/im/comet.log &

cd ../job

mv job.toml.example job.toml

go install # 或 go run *.go

$gopath/bin/job d $gopath/src/im/job/

# nohup $gopath/bin/job d $gopath/src/im/job/ 2>&1 > /data/log/im/job.log &

// demo頁面執行

cd $gopath/src/im/demo

go run main.go

im_api 是im系統中使用的介面,需要像demo那樣整體跑起來需要完整的部署

部署伺服器注意防火牆是否開放對應的埠(本地不需要,具體需要的埠在各層的配置檔案)

聊天室:

wget 

tar -zxvf zookeeper-3.4.12.tar.gz

cd zookeeper-3.4.12/conf/

mv zoo_sample.cfg zoo.cfg //更改預設配置檔案名稱

vi zoo.cfg //編輯配置檔案,自定義datadir

cd ../bin

./zkserver.sh start //啟動

監控

聊天機械人

即時通訊系統IM

背景 即時通訊 instant messaging 是目前internet上最為流行的通訊方式,各種各樣的即時通訊軟體也層出不窮 服務提供商也提供了越來越豐富的通訊服務功能。不容置疑,internet已經成為真正的資訊高速公路。從實際工程應用角度出發,以計算機網路原理為指導,結合當前網路中的一些常用...

即時通訊IM

mqtt message queuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支援所有平台,幾乎可以把所有聯網物品和外部連線起來,被用來當做感測器和致動器 比如通過twitter讓房屋聯網 的通訊協議。xmp...

即時通訊 IM

1 協議選型 2 im伺服器選型 3 對協議和伺服器做相應修改,通常來說直接拿個標準協議和開源伺服器是一定不能用到生產環境的 4 保證訊息到達率,絕不丟訊息 一 協議選型 常用做im的協議 mqtt協議 ibm開發的乙個即時協議 優點 多平台 缺點 簡單的訊息協議,要自己實現好友群組 用例 推送 s...