1 背景
IM(instant messaging 即時(shí)通訊)是互聯(lián)網(wǎng)的通訊方式之一蒸殿。最近接手了公司IM業(yè)務(wù)待笑,有一個(gè)和ISV(Independent Software Vendors 獨(dú)立軟件開發(fā)商)對(duì)接項(xiàng)目庐船,由于公司缺少和ISV對(duì)接IM能力僚饭,所以由我來從0到1構(gòu)建整套體系徒溪。
2 目標(biāo)
接入方多呀伙;消息到達(dá)快寇壳;ISV接入時(shí)稱好;系統(tǒng)復(fù)用性高
2 系統(tǒng)架構(gòu)設(shè)計(jì)思路
2.1 架構(gòu)圖
isv im系統(tǒng)架構(gòu)圖.png
2.2 設(shè)計(jì)思路
從目標(biāo)拆解,如何做到消息傳遞速度快入宦?如何做到ISV接入時(shí)稱好哺徊?如何做到消息不丟失?
速度快乾闰?
1.websocket協(xié)議可保持鏈接始終存在
2.websocket協(xié)議請(qǐng)求頭數(shù)據(jù)少
接入時(shí)稱好落追?
1.統(tǒng)一的接入方式,支持使用SDK和自行接入兩種方式
消息不丟失涯肩?
1.穩(wěn)定性保障
2.3 設(shè)計(jì)細(xì)節(jié)
用戶發(fā)送消息流程
用戶發(fā)送消息流程圖.png
isv商家發(fā)送流程簡單轿钠,不過多描述
3 難點(diǎn)
3.1 已解決問題
長鏈?zhǔn)怯袪顟B(tài)的,在切流場(chǎng)景下病苗,如何路由到保持長鏈機(jī)器
長鏈建立對(duì)于時(shí)間要求極高疗垛,如何保證長鏈建立時(shí)效性
客戶端或者服務(wù)端重啟,如何保證長鏈的有效性
3.2 待解決問題
服務(wù)器接受連接數(shù)量如何限制硫朦?
服務(wù)器重啟時(shí)贷腕,大量客戶端連接并發(fā)創(chuàng)建連接,數(shù)據(jù)庫服務(wù)器如何承受咬展?
多機(jī)房場(chǎng)景下泽裳,如何控制客戶端連接負(fù)載到不同機(jī)房