欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

go語言做消息推送 golang 消息推送

基于go的websocket消息推送的集群實現(xiàn)

目前websocket技術(shù)已經(jīng)很成熟,選型Go語言,當然是為了節(jié)省成本以及它強大的高并發(fā)性能。我使用的是第三方開源的websocket庫即gorilla/websocket。

我們提供的服務(wù)有:網(wǎng)站設(shè)計制作、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、白云ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的白云網(wǎng)站制作公司

由于我們線上推送的量不小,推送后端需要部署多節(jié)點保持高可用,所以需要自己做集群,具體架構(gòu)方案如圖:

Auth Service:鑒權(quán)服務(wù),根據(jù)Token驗證用戶權(quán)限。

Collect Service:消息采集服務(wù),負責(zé)收集業(yè)務(wù)系統(tǒng)消息,存入MongoDB后,發(fā)送給消息分發(fā)服務(wù)。

Dispatch Service:消息分發(fā)服務(wù),根據(jù)路由規(guī)則分發(fā)至對應(yīng)消息推送服務(wù)節(jié)點上。

Push Service:消息推送服務(wù),通過websocket將消息推送給用戶。

集群推送的關(guān)鍵點在于,web端與服務(wù)端建立長連接之后,具體跟哪個推送節(jié)點保持長連接的,如果我們能夠找到對應(yīng)的連接節(jié)點,那么我們就可以將消息推送出去。下面講解一下集群的大致流程:

1. web端用戶登錄之后,帶上token與后端推送服務(wù)(Push Service)保持長連接。

2. 推送服務(wù)收到連接請求之后,攜帶token去鑒權(quán)服務(wù)(Auth Service)驗證此token權(quán)限,并返回用戶ID。

3. 把返回的用戶ID與長連接存入本地緩存,保持用戶ID與長連接綁定關(guān)系。

4. 再將用戶ID與本推送節(jié)點IP存入redis,建立用戶(即長連接)與節(jié)點綁定關(guān)系,并設(shè)置失效時間。

5. 采集服務(wù)(Collect Service)收集業(yè)務(wù)消息,首先存入mongodb,然后將消息透傳給分發(fā)服務(wù)(Dispatch Service)。

6. 分發(fā)服務(wù)收到消息之后,根據(jù)消息體中的用戶ID,從redis中獲取對應(yīng)的推送服務(wù)節(jié)點IP,然后轉(zhuǎn)發(fā)給對應(yīng)的推送節(jié)點。

7. 推送服務(wù)節(jié)點收到消息之后,根據(jù)用戶ID,從本地緩存中取出對應(yīng)的長連接,將消息推送給客戶端。

其他注意事項:

golang socket通信 怎么把一個客戶端發(fā)送的數(shù)據(jù)推送給其他客戶端

Socket通信的原理還是比較簡單的, 它大致分為以下幾個步驟。 服務(wù)器端的步驟如下。 (1)建立服務(wù)器端的Socket,開始偵聽整個網(wǎng)絡(luò)中的連接請求。 (2)當檢測到來自客戶端的連接請求時,向客戶端發(fā)送收到連接請求的信息,并建立與客戶端之間的...

APNS推送Golang SDK使用Proxy代理

蘋果的消息推送是通過請求域名: 實現(xiàn)的,該域名解析結(jié)果為美國,這引發(fā)了兩個問題:

1、接口請求時間長,性能低,而且容易請求超時報錯

2、高峰期推送請求錯誤率升高

總體思路:增加一個美國代理服務(wù)器,通過代理服務(wù)器請求蘋果消息推送服務(wù)

1、原來流程

2、現(xiàn)在流程

3、具體方案實施選擇

選擇一:proxy服務(wù)器,部署一個正向代理服務(wù),提供push消息的正向代理,消息通過代理服務(wù)器送達蘋果服務(wù)端

選擇二:proxy服務(wù)器,獨立實現(xiàn)、部署一個 標準的apns服務(wù),負責(zé) ios消息推送。將需要走美國節(jié)點的請求轉(zhuǎn)發(fā)到該proxy節(jié)點

具體情況、具體分析,應(yīng)思考的點:

問題一、蘋果官方提供的SDK中,不支持設(shè)置代理服務(wù)器。官方SDK不適合更改,對以后系統(tǒng)更新不利

問題二、只有蘋果的push服務(wù)需要代理,其他例如華為、小米、vivo不應(yīng)走海外代理

問題三、代理安全性

問題四、代理方案下,有重試邏輯。 如何準確定義和判斷失敗, 可能會引起消息重復(fù)推送

問題五、實現(xiàn)簡單、有效,正向代理方式:只需實現(xiàn)一個實例化對象方法,其他利用原始sdk即可。獨立apns服務(wù)方式:需要實現(xiàn)一個apns服務(wù),國內(nèi)、國外均需服務(wù)部署,需要增加獨立的開發(fā)和運營成本,另外還得改造調(diào)用服務(wù),實現(xiàn)請求調(diào)度,優(yōu)點服務(wù)獨立、單一,具備一個單獨微服務(wù)條件

github.com/sideshow/apns2

方法一: 修改SDK文件

第一步:設(shè)置環(huán)境變量

第二步:修改apns2.NewClient方法

方法二: 從新定義一個NewClient方法

當前名稱:go語言做消息推送 golang 消息推送
轉(zhuǎn)載來源:http://chinadenli.net/article24/dogchce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)網(wǎng)站導(dǎo)航App設(shè)計響應(yīng)式網(wǎng)站網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)