數據傳輸:移動產品的3種現象級信息傳輸方案

不懂技術怎么做產品?15天在線學習,補齊產品經理必備技術知識,再也不被開發忽悠。了解一下>

筆者從信息分類出發,對數據傳輸進行了分析并總結了三種主要的現象級方案,供大家參考與學習。

信息傳輸好比產品的血液流動。

產品經理有必要大致了解數據傳輸的邊界、場景、基本方案,以參與項目的排期、控時、選型。

信息傳輸的方式,決定了可實現場景的邊界。目前的傳輸方式主要如下:

  1. 在線直傳:不經過服務器,進行直傳;
  2. 在線代理:消息經過服務器 中轉 到達目標賬號;
  3. 離線代理:消息經過服務器 中轉 到達目標賬號 對方不在線 消息暫存服務器的數據庫,在其上線再傳發;
  4. 離線擴展:將暫存消息以郵件,短信等方式轉發給目標賬號。

這些傳輸方式有不同的實現方案。為了更概括抽象,筆者從信息分類角度出發,總結了三種主要的現象級方案。

一、實時且高頻的信息傳遞——IM

一些功能,對信息響應的及時性和頻率要求高,比如App中的實時聊天(就像陌陌的聊天)、匹配交友(類似SOUL的語音匹配),對戰游戲(如王者榮耀)等。

這些場景往往是“在線等”的態勢,毫秒級別的誤差就可能會導致產品的坍塌。

那么通常是使用什么信息交互技術實現的呢?

通常會使用IM機制(Instant Messaging)。即時通訊,就是識別在線用戶,并與他們實時交換消息。

IM是一個成熟的機制,該體系中最核心的部分是消息系統,消息系統中最核心的功能是消息的同步、存儲和檢索。

IM工作流程:

這樣就無需每次信息發出,都要從客戶端到服務器進行“握手”訪問,減少了大量的延遲和丟失數據風險。

打比方,IM無需每次都拿鑰匙開門了,而是門就給你開著,進出不限次數。避免了丟鑰匙的風險和開門的時間浪費。

IM通常是配合“長鏈接”(后面還會提到)技術實現的。可以公司自己研發,多數時是使用第三方IM的SDK,比如云信。

以IM為內核的產品,比如釘釘、微信、QQ等。

非以IM系統為核心的應用,最典型的如一些在線游戲、社交應用等。

二、及時性要求不太高的信息傳遞——接口

作品評論、點贊、收藏這樣的功能,對時效要求低于上面提到的實時聊天。

這種功能一般是通過常規的HTTP接口請求方式實現的。也就是信息源頭發起請求,服務器收到請求進行處理,再返回給目標服務器。

這種信息傳遞機制在產品中使用的最普遍,研發成本小。比如雙擊【抖音】的底部【首頁】菜單,視頻刷新。

其流程就是:客戶端觸發——發起消息——刷新數據。

當然用戶不請求,也能自動刷新呢?可以通過定時任務,或死循環等方式實現。

原理就是按照設定的頻率,自動請求服務器。好像每隔一會打開一次朋友圈,看有沒有人點贊一樣。

關于HTTP請求的擴展

(1)短輪詢和長輪詢

輪詢:就是戶端定期去向服務端詢問是否有新的消息;服務端見到客戶端來詢問,就告訴它。

這種方案最簡單,但是卻不適用于即時通訊產品,因為即時通訊軟件的消息傳遞機制與一般的消息推送的區別就在即時這點,如果采用輪詢的方式,客戶端每幾秒就連一次服務器,對于手機電量與流量的消耗是很大的。

  • 短輪詢(short-polling):是指服務端收到請求后,無論是否有數據都立即返回。
  • 長輪詢(long-polling):指服務端收到請求后若有數據立即返回,若無數據則保持到有數據時返回,或一段時間后超時才結束。

(2)短連接和長連接

  • 短連接(short connection):就是請求一次,建立一次連接,任務結束就中斷,不再復活。
  • 長連接(long connection):執行握手鏈接后,不斷開鏈接,保持客戶端和服務端通信,直到服務器超時自動斷開鏈接,或者客戶端主動斷開鏈接。

適用于操作頻繁、點對點通訊,且連接次數不是太多。

三、退出應用或后臺狀態下的信息發送——推送

比如App退出之后,還會有頂部橫幅提醒。

這通常是通過服務器的推送機制實現的。該推送技術叫做Serverpush:客戶端是否在線都可以被喚起。

簡單地說,就是不管你要不要消息(在用戶手機系統設置為同意接收來自應用的消息推送通知情況下),都可以把消息推到你手機的通知欄,或者app右上角有角標。

推送可以第一時間把想要傳達給用戶的消息發出去,因為很多用戶其實也不知道自己需要怎么樣的信息。

推送方案的公認評價采取4s標準:Safe(安全)、Stable(穩定)、Save(省電省流量省成本)、Slim(體積小)。

目前國內主要使用第三方的推送功能,比如個推、騰訊的信鴿。

(1)為什么要推送

每個月用戶手機里都裝有幾十款應用,而現在生活節奏快,即便是很不錯的應用也可能幾天不用就忘掉了,因此為了提醒用戶應用的存在性,同時給用戶帶來一些價值,比如手游類應用送道具,電商類應用送優惠券等。

歸根結底,推送的目的是提升應用的活躍度和留存率。

(2)為什么要用第三方推送

自建通道尤其是創業團隊,會耗費一定的人力,同時在推送的關鍵指標如抵達率、精準推送等方便是個很大挑戰。

總結

由于數據量、及時性、容錯、硬件性能、生態集群、技術發展等方面的差別,導致移動產品的數據傳輸方案,不同于后臺類產品的數據傳輸(參考文章《系統間數據對接的邏輯和機制》)。

本文粗淺的總結,源自于實際工作的積累總結。

#專欄作家#

唧唧歪歪PM,公眾號:唧唧歪歪PM(ID:jjyypm),人人都是產品經理專欄作家。書籍《后端產品經理寶典》作者,藥學碩士轉行互聯網產品多年;熟悉跨境電商業務,醫藥領域;擅長大型后臺體系,社交App。

本文原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于CC0協議

給作者打賞,鼓勵TA抓緊創作!
評論
歡迎留言討論~!
  1. 總結得很棒 :|

    回復
北京快乐八