YUE-IM即時通訊服務(wù)開發(fā)框架
YUE-IM 是使用java開發(fā),基于netty,akka 實(shí)現(xiàn)的即時通訊服務(wù)。并且提供極簡的api,極大的降低開發(fā)難度,方便使用者二次開發(fā)。
主要特點(diǎn):
- 支持websocket,tcp協(xié)議進(jìn)行通信
- 支持單機(jī)部署,集群部署
- 提供極簡api,方便開發(fā)者二次開發(fā)
- 得益于akka提供的能力,集群模式只需要簡單配置(依賴zookeeper,用于種子節(jié)點(diǎn)發(fā)現(xiàn)),支持自組建,集群間消息通信不依賴其他消息隊(duì)列及其他中間件
- 支持同一賬號,多終端連接,多終端同時接收消息
軟件架構(gòu)
系統(tǒng)選擇基于使用netty作為接入服務(wù)器,主要是考慮netty作為java里最知名的網(wǎng)絡(luò)服務(wù)器框架,性能,對多種協(xié)議的支持,以及開發(fā)資料都有保證。
集群間通信: 系統(tǒng)集群間通信選擇基于Akka來實(shí)現(xiàn),即時通訊集群要解決的最大的問題就是如何把消息投遞到目的客戶端連接的節(jié)點(diǎn)上,目前大部分開源的即時通訊項(xiàng)目基本上都是基于消息隊(duì)列或者redis的發(fā)布訂閱來實(shí)現(xiàn)跨節(jié)點(diǎn)的通信, 或者是維護(hù)一個總的路由緩存系統(tǒng)來實(shí)現(xiàn)跨節(jié)點(diǎn)的通信,本系統(tǒng)基于Akka,通過廣播,消息應(yīng)答及個節(jié)點(diǎn)緩存路由來實(shí)現(xiàn)集群各節(jié)點(diǎn)的通信,不依賴其他系統(tǒng)或中間件,盡量減少不必要的設(shè)備資源消耗及網(wǎng)絡(luò)傳輸次數(shù), Akka是一套開源工具和運(yùn)行時,便于構(gòu)建JVM上的并發(fā)應(yīng)用和分布式應(yīng)用,自從了解Akka后就一直想基于Akka開發(fā) 一個程序,無奈平時并沒有什么應(yīng)用場景用得到,Akka本身的特性是很適合做這種消息服務(wù)的,所以選擇了Akka,并且集群節(jié)點(diǎn)間通信使用protobuf,提高數(shù)據(jù)傳輸效率。
