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

go語(yǔ)言的推送 go語(yǔ)言import

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

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

阿克塞哈薩克族自治網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

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

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

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

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

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

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

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

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

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

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

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

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

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

其他注意事項(xiàng):

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

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

APNS推送Golang SDK使用Proxy代理

蘋(píng)果的消息推送是通過(guò)請(qǐng)求域名: 實(shí)現(xiàn)的,該域名解析結(jié)果為美國(guó),這引發(fā)了兩個(gè)問(wèn)題:

1、接口請(qǐng)求時(shí)間長(zhǎng),性能低,而且容易請(qǐng)求超時(shí)報(bào)錯(cuò)

2、高峰期推送請(qǐng)求錯(cuò)誤率升高

總體思路:增加一個(gè)美國(guó)代理服務(wù)器,通過(guò)代理服務(wù)器請(qǐng)求蘋(píng)果消息推送服務(wù)

1、原來(lái)流程

2、現(xiàn)在流程

3、具體方案實(shí)施選擇

選擇一:proxy服務(wù)器,部署一個(gè)正向代理服務(wù),提供push消息的正向代理,消息通過(guò)代理服務(wù)器送達(dá)蘋(píng)果服務(wù)端

選擇二:proxy服務(wù)器,獨(dú)立實(shí)現(xiàn)、部署一個(gè) 標(biāo)準(zhǔn)的apns服務(wù),負(fù)責(zé) ios消息推送。將需要走美國(guó)節(jié)點(diǎn)的請(qǐng)求轉(zhuǎn)發(fā)到該proxy節(jié)點(diǎn)

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

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

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

問(wèn)題三、代理安全性

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

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

github.com/sideshow/apns2

方法一: 修改SDK文件

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

第二步:修改apns2.NewClient方法

方法二: 從新定義一個(gè)NewClient方法

文章題目:go語(yǔ)言的推送 go語(yǔ)言import
網(wǎng)頁(yè)URL:http://www.chinadenli.net/article16/ddoiodg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)電子商務(wù)移動(dòng)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)

廣告

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

搜索引擎優(yōu)化