隨著硬體、軟體、網路等不斷髮展、完善,網際網路已經滲透到了日常生活中的方方面面,在直接賦能原有行業服務的同時也帶來了很多新的服務模式,給人們日常生活帶來了極大便利。例如:外賣、快遞、跑腿等相關業務更是在我們日常生活中隨處可見。業務終端經常處在弱網環境下,對連通性、業務處理及時性有很高的要求。
企業要實現優質的服務,通常有2個方式:
- 完全自研
- 依賴已有的成熟第三方通道服務企業可以選擇兩者取其一或者兩個方式並存。
作為中國領先的客戶互動和營銷科技服務商,極光在行業內深耕多年,有著豐富的行業經驗和深厚的技術積累,極光推送為外賣、快遞、跑腿等搶單類業務提供了優質穩定的通道服務,幫助開發者快速下發訂單、幫助終端裝置的使用者實現快速搶單。
那麼極光推送是如何實現的呢?
訂單搶單的相關訴求
外賣、快遞、跑腿類的終端裝置通常使用專業的手持裝置或者常規的手機。這些裝置通常使用的是運營商行動網路,在移動過程中可能出現訊號弱甚至訊號中斷的場景。因此這一類的業務,對於網路連通性有比較高的要求,需要儘量保證能夠穩定線上、及時重新線上,以便服務端的業務訊息能夠及時送達到裝置。另外一方面,從相關的業務角度看,開發者有給單一終端裝置下發業務訊息的場景,也有給特定使用者群下發業務訊息的場景,例如給一定地理區域範圍或者某些類別的使用者下發訂單訊息等等。
極光的優勢
極光的推送服務已經有10年左右的歷史,給各行各業眾多的企業提供服務,有著非常豐富的各種場景的落地實踐經驗,同時我們也在不斷夯實技術,每天處理大量的資料,推送百億級別的訊息,為日活超過4億的終端使用者提供高效、穩定的服務。
極光如何透過技術實現達到賦能的目的
極光推送提供的服務就是要快速的將訊息傳送給目標裝置,並提供專業的資料分析讓開發者能夠及時瞭解推送的結果,方便業務運營,透過以下幾個方面來達到這個目的:
- 專業的SDK便於方便整合,高效穩定,滿足合規要求。
- 高效穩定的連線,讓訊息更加快速的傳送到終端裝置。
- 高效的資料訪問方式,在大資料量、高併發場景也能夠實現快速訪問。
- 大規模叢集並行處理,能夠滿足高併發要求,並且能夠應對突增的流量高峰。
- 多個下發通道的支援,儘量保證訊息下發觸達到目標終端裝置。
- 專業的資料統計分析,推送結果一目瞭然,方便開發者進行業務運營。
專業的SDK
當前極光支援多個主流平臺的SDK,能夠讓開發者快速地整合到自身的應用當中,幾分鐘就可以實現App的推送功能,也能夠滿足各開發者對SDK體積大小、功耗等方面的要求。在資料採集方面,基於最小化原則,只採集必要的資料,滿足相關合規條款的要求,在此基礎之上,推送相關的資料例如送達、展示、點選等資料儘量上報,方便資料統計分析。
多個終端接入節點,就近接入
極光推送連線著開發者和終端裝置使用者,而終端裝置上整合極光SDK,那麼SDK和極光推送的連線質量就特別重要了。在推送系統架構上,把SDK和極光推送系統連線的部分抽離出來,形成接入閘道器服務,接入閘道器服務負責連線終端裝置,並將訊息分發到指定的SDK連線上,本身並不進行具體的業務邏輯,起到連線和業務中轉的功能。接入閘道器服務部署在全國各個區域,跟核心機房的推送系統主要是透過運營商的骨幹網路進行通訊,網路質量基本上都很穩定。
SDK首先向推送系統請求獲取連線接入閘道器服務的地址,推送系統根據SDK的相關資訊例如IP運營商、IP屬地等從接入閘道器服務的地址列表中,選擇最優的接入閘道器服務地址返回給SDK進行連線。這通常來說會考慮SDK的IP運營商、IP屬地、接入閘道器服務的網路線路例如是否特定線路或者BGP網路、接入閘道器服務部署地域、接入閘道器服務本身的負載等等機房方面。儘量讓SDK連線到網路線路友好的、距離最近的接入閘道器服務。
此外,SDK在保持連線方面也有一些相關的工作,綜合考慮功耗、流量消耗、連線斷開敏感性等因素設定合適的心跳間隔時間,以便及時感知網路斷開的情況,進而重新連線到推送系統。為了快速建立連線,採用並行建立連線的方式,以最快的速度建立SDK和推送系統的網路鏈路。
接入閘道器服務目前基本上都是對接BGP網路,從而滿足從各個運營商網路連線的裝置的連線穩定性,同時根據就近連線策略,減少資料在網路傳輸的時延,儘量保證連線質量。
推送業務資料儲存最佳化
極光推送目前有超過650億的累計註冊使用者資料,並且還在持續增長中,除了基礎的使用者資料,還有用於推送的各個維度的資料,例如標籤別名、智慧標籤、定時任務等等。這麼大量級的資料,如何組織資料、儲存資料,以便快速訪問資料,實現高併發的業務處理,就需要有相應的處理策略來達到這個目的。
- 按照子業務功能拆分資料,最小化訪問資料。每個子業務功能所訪問的資料通常來說只是訪問使用者的一部分資料,其他資料維度往往不需要訪問,因此可以從子業務的維度進行資料的拆分並獨立儲存。例如別名標籤、使用者線上狀態、離線訊息等等,透過獨立儲存資料,能夠減少網路IO,減少儲存系統過濾不相關資料的處理,降低業務耦合,提升系統的穩定性、可用性和整體效能。
- 快取最佳化。推送任務的及時性要求非常高,並且系統中有大量的推送任務同時進行,因此對資料的訪問時延也有很高的要求,以便快速的資料訪問。根據資料集的規模和特性、訪問時延、總體QPS、儲存成本等方面的因素,設計合適的儲存結構儲存到合適的儲存系統中。採用多級快取的機制,通常來說是基於記憶體的儲存結合基於磁碟的儲存,例如使用Redis和PIKA進行儲存,也會根據業務適當的使用本地快取。特別的,針對大資料叢集或者big key,採用資料分片處理。
- 冷熱資料分離。我們的系統中有大量的資料,有一些高頻訪問,也有一些是很少訪問甚至基本不訪問例如已經長時間不活躍的使用者。綜合考慮儲存成本、訪問時延、維護成本,採用不同的儲存系統來儲存這些資料,高頻訪問的資料儲存在Redis中,低頻訪問的資料儲存在PIKA或者MySQL。
- 讀寫分離、一主多從。對於讀多寫少的場景,可以採用這個策略進行讀寫業務的隔離,同時透過多個從節點進行讀資料,提升系統的併發處理能力、整體吞吐能力。
大規模叢集並行處理
推送系統是一個包含多個子業務功能的龐大的系統,在大規模的資料集、大量併發請求的這個場景下,我們把各子業務拆分獨立成子系統,構造相關的服務,把業務處理流程化,透過訊息驅動串聯業務流,各個業務節點/服務並行的處理。我們主要採用MQ或者RPC的方式進行各個服務的呼叫,非同步呼叫處理為主,少部分使用同步請求處理,一方面解耦業務,另一方面也提升系統整體效能。
推送的各個業務服務叢集化部署,每個子服務都是部署多個節點並行處理各個請求,同時為了應對突發的大量請求流量,基於K8S的部署能夠快速的實現相關服務的自動擴容,快速處理各個業務請求。
下發通道選擇策略最佳化
當前極光推送系統中,有基於SDK和推送系統長連結的自有通道,也對接了主流的各個裝置廠商的推送通道。自有通道由於許可權的限制,並不一定能夠時時刻刻的保持長連結,但是並沒有限制下發頻率和下發數量;廠商推送通道使用系統級別的長連結,連通性更加好,但是每個廠商都有自己的訊息下發限制規則,例如每日推送配額限制、推送速率限制、單個裝置每日營銷類訊息數量限制等等。
我們根據這些因素選擇合適的推送通道進行下發給目標使用者,以達到快速把訊息送達給目標使用者。預設情況下,如果廠商通道能夠下發則選擇廠商通道下發訊息,廠商通道不能夠下發例如沒有推送配額則使用極光自有通道進行訊息下發。也可以選擇只透過廠商通道或者只透過極光自有通道下發訊息。
專業的資料統計分析
當完成一個訊息推送時,極光提供專業的漏斗分析工具,向開發者提供推送耗時、推送結果分析;同時也有推送使用者分析、推送訊息統計分析等等工具,方便業務運營。
如何處理一個推送請求
當開發者需要傳送一個訂單訊息時,會呼叫我們的API介面,API伺服器接收到請求後將進行許可權校驗和引數校驗,判斷推送目標是否存在;然後將訊息流轉到下游,下游根據引數的目標資訊進行判斷,如果是推送給單一目標使用者,從使用者資訊服務中獲取使用者資訊;如果是推送給特定標籤,從標籤服務中獲取相關聯的目標使用者集合,這個過程已經做了相關的最佳化,即使是大量的使用者集合,也能夠快速的獲取。再根據使用者的通道資訊流轉到指定的下發通道,由下發通道下發給目標裝置的使用者。
目標裝置的使用者收到訊息後處理相應的業務邏輯,例如訂單的處理、搶單等等。
這個過程的處理耗時單推情況下能夠200ms內推送到目標裝置,具體如下:
- API處理耗時:10ms以內
- 目標使用者選擇:單推情況下10ms 以內,多推情況跟目標使用者數量有關
- 廠商通道:10ms以內的資料訪問,http請求廠商介面10~40ms
- 極光自有通道:10ms以內的資料訪問,核心機房到達最遠的接入機房40ms,接入機房到達目標裝置20ms
結 語
透過使用精準、高效、穩定、安全的極光推送服務,將幫助企業有效提升搶單速度,進而有效提升客戶觸達效率和互動需求。期待透過使用極光推送服務,幫助您實現快速增長。
關於極光
極光(Aurora Mobile,納斯達克股票程式碼:JG)成立於2011年,是中國領先的客戶互動和營銷科技服務商。成立之初,極光專注於為企業提供穩定高效的訊息推送服務,憑藉先發優勢,已經成長為市場份額遙遙領先的移動訊息推送服務商。隨著企業對客戶觸達和營銷增長需求的不斷加強,極光前瞻性地推出了訊息雲和營銷雲等解決方案,幫助企業實現多渠道的客戶觸達和互動需求,以及人工智慧和大資料驅動的營銷科技應用,助力企業數字化轉型。