消息推送与同步协议的思考
?
同步狀態(tài)和消息推送,幾乎是每個(gè)app或者設(shè)備都需要的,設(shè)計(jì)一個(gè)省流量,能簡(jiǎn)化兩端邏輯,能應(yīng)對(duì)業(yè)務(wù)增長的框架尤為重要。
我認(rèn)為,以下方法不夠好:
1.每一個(gè)狀態(tài)都設(shè)計(jì)一個(gè)消息,導(dǎo)致每增加一個(gè)狀態(tài),服務(wù)端都需要改動(dòng)。
2.每次上線后都請(qǐng)求一次所有類型的最新的消息。
3.最新的消息只推送一次就完事。
?
第一個(gè)缺點(diǎn)已經(jīng)說了,解決的方法是設(shè)計(jì)一個(gè)通用的消息結(jié)構(gòu)和存儲(chǔ)模型,集存儲(chǔ)、轉(zhuǎn)發(fā)、推送于一身。
第二個(gè)方法,一個(gè)是消息太多,不可能每個(gè)都有更新,所以沒必要每次都請(qǐng)求。而發(fā)送的請(qǐng)求帶來沒必要帶寬的浪費(fèi)和處理的壓力,尤其在移動(dòng)互聯(lián)網(wǎng)情況下,掉線太多,浪費(fèi)的帶寬和cpu也是成倍增加。
解決方法,類似日志式的方法,設(shè)備的每次變化都對(duì)應(yīng)一個(gè)日志,讓設(shè)備依次重放每個(gè)日志,如果狀態(tài)具有唯一性,那么可以刪除這個(gè)狀態(tài)舊的日志,保留新的日志。
第三個(gè)問題,在完成日志式的改造后,讓每個(gè)日志對(duì)應(yīng)一個(gè)數(shù)字,日志越新,數(shù)字越大,設(shè)備或者app只需要請(qǐng)求更新的日志即可。推送不再丟失消息,也不會(huì)重復(fù)消息。
?
另外,考慮到日志太多,可能會(huì)導(dǎo)致同步緩慢,所以應(yīng)該將日志分類,將一些緊急的狀態(tài)變化分為一類,將一些不是很重要的消息,又分為一類,這時(shí)候存在兩份不同的日志序列,按需請(qǐng)求即可。
?
轉(zhuǎn)載于:https://www.cnblogs.com/dearplain/p/7896885.html
總結(jié)
以上是生活随笔為你收集整理的消息推送与同步协议的思考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive分隔符总结
- 下一篇: bagging and boosting