概述
push是網際網路上內容提供者和內容定製方之間的一種通訊機制,利用在伺服器端的程式把資料源源不斷地推向客戶端,大大提高客戶機和伺服器之間的互動性能。
傳統網際網路上資料互動一般有pull和push兩種方式。pull典型使用場景是瀏覽網頁,是使用者主動發起請求,向伺服器獲取資料;push剛好相反,通過伺服器直接傳送資料給客戶端,使用者被動接受訊息,類似於更加及時的簡訊。push的使用場景有以下兩特點:時間不確定性、時效性,如傳送**資訊,傳送電子消費賬單等。
個推為第三方應用提供了跨手機平台一致的、穩定可靠的訊息推送服務,實現服務端到客戶端的訊息主動推送。第三方應用可以實現針對單一目標位址的推送,也可以實現**訊息推送,還可以通過指定tag進行定向群組推送。個推除了為第三方提供基本的透明訊息傳輸,還提供了一些訊息展示方式,實現在客戶端的通知提示、彈框操作等,幫助客戶快速實現更為定製化的訊息推送服務。
個推目前支援android、ios手機平台。
技術原理
首先我們來看一下組成乙個推送系統的幾個要素
1. 個推sdk:
以jar的方式出現,整合於第三方客戶端,解析第三方下行的資料,並把結果透傳給第三方客戶端;也可以上行第三方定製的客戶端資訊。
2. 個推伺服器:
一側負責維護與成千上萬的個推sdk的長時連線,另一側與第三方伺服器對接,將第三方定製資料下行推送至個推sdk。
3. 第三方伺服器:
資料推送的發起者,通過對接個推伺服器,將資料傳送至第三方客戶端。
4. 第三方客戶端:
第三方整合個推sdk的客戶端,推送資料正真的接收者和展現者。
以上是個推推送系統中的四個不同角色,看起來比較抽象,可以通過以下來加強理解:
說明:我們用乙個更加形象的方式來描述一下這個系統:**購物相信很多人都體驗過,就拿它舉個例子。
**賣家——第三方伺服器
**買家——第三方客戶端
快遞公司(比如順風)——個推伺服器
集**買家中的位址管理、快遞查收、包裹檢驗等一系列工作的集合——個推sdk(這個有點不形象,但是大概理解意思就好)。
假設**買家下了一單,首先需要填寫寄件位址(假設不用預設的),這個相當於個推sdk根據客戶端的資訊,建立了一條通道(快遞配送位址)。
當買家付款成功後,賣家需要發貨(第三方服務端要推送資料),當然先叫快遞公司拿件(把推送資料傳送給個推伺服器),快遞公司根據包裹上的位址(第三方客戶端的身份資訊,就是上面所說的clientid)將包裹(資料)寄送到買家(第三方客戶端),買家收貨後,先驗收一下貨物是否有損壞(資料是否符合定製要求),獲取到包裹內容(獲得服務端推送的資料),並簽單驗收(個推sdk反饋資料傳送成功)。
與上面的例子相對應,我們再描述一遍整個推送過程的技術流程:
1. 第三方客戶端整合個推sdk。
2. 第三方客戶端啟動的時候,呼叫sdk介面,啟動推送服務,sdk後台執行並維護和個推服務端的長連線,實現sdk註冊和登入。
3. 第三方服務端呼叫個推伺服器的介面,將要傳送的資料通過個推伺服器傳送到指定身份的個推sdk當中。
4. 個推sdk解析定製資料,並且把第三方伺服器透傳的資料傳送給第三方客戶端,第三方客戶端根據伺服器的資料做出相應的動作或者展現。
陷阱初步看來,實現乙個推送系統並不是特別複雜,然後實際上,尤其是針對android移動終端來說,仍然有相當多的技術問題需要克服。
電源管理
android系統為了最大程度降低手機功耗、延長待機時間,在電源管理方面做了非常大量的底層工作,對電池的使用到了精打細算的地步。然而android系統在電源管理方面做出的這些努力,很輕易地就能被不守規矩的應用程式消耗殆盡。個推sdk服務作為需要長期後台穩定執行的程式,在電源管理方面能夠做到取之有度,日均耗電量能夠控制在40mah左右,對使用者日常手機使用幾乎沒有影響。
網路穩定性
在國內移動運營商網路條件下,地區差異、時間段差異、運營商差異都比較明顯,使得手機上實現穩定的聯網困難重重。為了在各種網路條件下,都能實現穩定聯網和流量消耗的兼顧平衡,個推研發了能夠根據網路狀況動態調整心跳間隔的自適應演算法,以最小的網路代價實現最穩定的聯網質量。目前個推sdk空載流量消耗每月僅有0.8m-1.2m,不會對使用者的錢袋造成損失。
總結本文簡要介紹了個推系統的結構和訊息推送流程,並對實踐中必須解決的技術問題做了**。個推致力於實現android系統上最穩定可靠的推送服務,並在相關技術引數上做到了極致。
推箱子遊戲C 實現原理
通過wsad控制箱子上下左右移動,q退出程式。分別表示牆,空白,方塊,目標地,人,可以根據自己喜歡重新設定 地圖為7行10例,可以根據自己喜歡調整地圖形式 char map 7 11 其他的 裡面有相應的注釋。include stdafx.h include include includeusing...
Fescar RM實現原理介紹
這個系列開始介紹fescar當中的rm resource manager rm負責控制分支事務,負責分支註冊 狀態匯報,並接收事務協調器的指令,驅動分支 本地 事務的提交和回滾。說明 public void demobylowlevelapi throws throwable catch trans...
VXlan 技術實現原理
vxlan 概況 vxlan virtual extential lan 意為虛擬可拓展區域網。隨著大資料 雲計算技術的興起以及虛擬化技術的普及,vlan技術的弊端逐漸顯現出來,具體表現為如下3個方面 1 虛擬化技術的發展促使大資料 雲計算技術公司採用單個物理裝置虛擬多台虛擬機器的方式來進行組網,隨...