數據傳輸:移動產品的3種現象級信息傳輸方案
筆者從信息分類出發(fā),對數據傳輸進行了分析并總結了三種主要的現象級方案,供大家參考與學習。
信息傳輸好比產品的血液流動。
產品經理有必要大致了解數據傳輸的邊界、場景、基本方案,以參與項目的排期、控時、選型。
信息傳輸的方式,決定了可實現場景的邊界。目前的傳輸方式主要如下:
- 在線直傳:不經過服務器,進行直傳;
- 在線代理:消息經過服務器 中轉 到達目標賬號;
- 離線代理:消息經過服務器 中轉 到達目標賬號 對方不在線 消息暫存服務器的數據庫,在其上線再傳發(fā);
- 離線擴展:將暫存消息以郵件,短信等方式轉發(fā)給目標賬號。
這些傳輸方式有不同的實現方案。為了更概括抽象,筆者從信息分類角度出發(fā),總結了三種主要的現象級方案。
一、實時且高頻的信息傳遞——IM
一些功能,對信息響應的及時性和頻率要求高,比如App中的實時聊天(就像陌陌的聊天)、匹配交友(類似SOUL的語音匹配),對戰(zhàn)游戲(如王者榮耀)等。
這些場景往往是“在線等”的態(tài)勢,毫秒級別的誤差就可能會導致產品的坍塌。
那么通常是使用什么信息交互技術實現的呢?
通常會使用IM機制(Instant Messaging)。即時通訊,就是識別在線用戶,并與他們實時交換消息。
IM是一個成熟的機制,該體系中最核心的部分是消息系統(tǒng),消息系統(tǒng)中最核心的功能是消息的同步、存儲和檢索。
IM工作流程:
這樣就無需每次信息發(fā)出,都要從客戶端到服務器進行“握手”訪問,減少了大量的延遲和丟失數據風險。
打比方,IM無需每次都拿鑰匙開門了,而是門就給你開著,進出不限次數。避免了丟鑰匙的風險和開門的時間浪費。
IM通常是配合“長鏈接”(后面還會提到)技術實現的??梢怨咀约貉邪l(fā),多數時是使用第三方IM的SDK,比如云信。
以IM為內核的產品,比如釘釘、微信、QQ等。
非以IM系統(tǒng)為核心的應用,最典型的如一些在線游戲、社交應用等。
二、及時性要求不太高的信息傳遞——接口
作品評論、點贊、收藏這樣的功能,對時效要求低于上面提到的實時聊天。
這種功能一般是通過常規(guī)的HTTP接口請求方式實現的。也就是信息源頭發(fā)起請求,服務器收到請求進行處理,再返回給目標服務器。
這種信息傳遞機制在產品中使用的最普遍,研發(fā)成本小。比如雙擊【抖音】的底部【首頁】菜單,視頻刷新。
其流程就是:客戶端觸發(fā)——發(fā)起消息——刷新數據。
當然用戶不請求,也能自動刷新呢?可以通過定時任務,或死循環(huán)等方式實現。
原理就是按照設定的頻率,自動請求服務器。好像每隔一會打開一次朋友圈,看有沒有人點贊一樣。
關于HTTP請求的擴展
(1)短輪詢和長輪詢
輪詢:就是戶端定期去向服務端詢問是否有新的消息;服務端見到客戶端來詢問,就告訴它。
這種方案最簡單,但是卻不適用于即時通訊產品,因為即時通訊軟件的消息傳遞機制與一般的消息推送的區(qū)別就在即時這點,如果采用輪詢的方式,客戶端每幾秒就連一次服務器,對于手機電量與流量的消耗是很大的。
- 短輪詢(short-polling):是指服務端收到請求后,無論是否有數據都立即返回。
- 長輪詢(long-polling):指服務端收到請求后若有數據立即返回,若無數據則保持到有數據時返回,或一段時間后超時才結束。
(2)短連接和長連接
- 短連接(short connection):就是請求一次,建立一次連接,任務結束就中斷,不再復活。
- 長連接(long connection):執(zhí)行握手鏈接后,不斷開鏈接,保持客戶端和服務端通信,直到服務器超時自動斷開鏈接,或者客戶端主動斷開鏈接。
適用于操作頻繁、點對點通訊,且連接次數不是太多。
三、退出應用或后臺狀態(tài)下的信息發(fā)送——推送
比如App退出之后,還會有頂部橫幅提醒。
這通常是通過服務器的推送機制實現的。該推送技術叫做Serverpush:客戶端是否在線都可以被喚起。
簡單地說,就是不管你要不要消息(在用戶手機系統(tǒng)設置為同意接收來自應用的消息推送通知情況下),都可以把消息推到你手機的通知欄,或者app右上角有角標。
推送可以第一時間把想要傳達給用戶的消息發(fā)出去,因為很多用戶其實也不知道自己需要怎么樣的信息。
推送方案的公認評價采取4s標準:Safe(安全)、Stable(穩(wěn)定)、Save(省電省流量省成本)、Slim(體積?。?。
目前國內主要使用第三方的推送功能,比如個推、騰訊的信鴿。
(1)為什么要推送
每個月用戶手機里都裝有幾十款應用,而現在生活節(jié)奏快,即便是很不錯的應用也可能幾天不用就忘掉了,因此為了提醒用戶應用的存在性,同時給用戶帶來一些價值,比如手游類應用送道具,電商類應用送優(yōu)惠券等。
歸根結底,推送的目的是提升應用的活躍度和留存率。
(2)為什么要用第三方推送
自建通道尤其是創(chuàng)業(yè)團隊,會耗費一定的人力,同時在推送的關鍵指標如抵達率、精準推送等方便是個很大挑戰(zhàn)。
總結
由于數據量、及時性、容錯、硬件性能、生態(tài)集群、技術發(fā)展等方面的差別,導致移動產品的數據傳輸方案,不同于后臺類產品的數據傳輸(參考文章《系統(tǒng)間數據對接的邏輯和機制》)。
本文粗淺的總結,源自于實際工作的積累總結。
#專欄作家#
唧唧歪歪PM,公眾號:唧唧歪歪PM(ID:jjyypm),人人都是產品經理專欄作家。書籍《后端產品經理寶典》作者,藥學碩士轉行互聯網產品多年;熟悉跨境電商業(yè)務,醫(yī)藥領域;擅長大型后臺體系,社交App。
本文原創(chuàng)發(fā)布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協(xié)議
總結的很棒@
您總結的方向有點像大家不太注重的盲區(qū),但是卻很有用,設計功能時應該思考進去,但往往現在都有開發(fā)團隊代勞了,我覺得產品也應該負責占比30%左右;傳輸方案的細節(jié),類似于體育比賽的體能問題,平時不起眼,但是到了加時賽往往決定比賽的勝負;
這些需要如何才能學到,求教。想要了解更多
總結得很棒 ??