




企業(yè)要實(shí)現(xiàn)優(yōu)質(zhì)的服務(wù),通常有2個(gè)方式:
完全自研
企業(yè)可以選擇兩者取其一或者兩個(gè)方式并存。
作為中國(guó)領(lǐng)先的客戶互動(dòng)和營(yíng)銷(xiāo)科技服務(wù)商,極光在行業(yè)內(nèi)深耕多年,有著豐富的行業(yè)經(jīng)驗(yàn)和深厚的技術(shù)積累,極光推送為外賣(mài)、快遞、跑腿等搶單類(lèi)業(yè)務(wù)提供了優(yōu)質(zhì)穩(wěn)定的通道服務(wù),幫助開(kāi)發(fā)者快速下發(fā)訂單、幫助終端設(shè)備的使用者實(shí)現(xiàn)快速搶單。
那么極光推送是如何實(shí)現(xiàn)的呢?
外賣(mài)、快遞、跑腿類(lèi)的終端設(shè)備通常使用專業(yè)的手持設(shè)備或者常規(guī)的手機(jī)。這些設(shè)備通常使用的是運(yùn)營(yíng)商移動(dòng)網(wǎng)絡(luò),在移動(dòng)過(guò)程中可能出現(xiàn)信號(hào)弱甚至信號(hào)中斷的場(chǎng)景。因此這一類(lèi)的業(yè)務(wù),對(duì)于網(wǎng)絡(luò)連通性有比較高的要求,需要盡量保證能夠穩(wěn)定在線、及時(shí)重新在線,以便服務(wù)端的業(yè)務(wù)消息能夠及時(shí)送達(dá)到設(shè)備。另外一方面,從相關(guān)的業(yè)務(wù)角度看,開(kāi)發(fā)者有給單一終端設(shè)備下發(fā)業(yè)務(wù)消息的場(chǎng)景,也有給特定用戶群下發(fā)業(yè)務(wù)消息的場(chǎng)景,例如給一定地理區(qū)域范圍或者某些類(lèi)別的用戶下發(fā)訂單消息等等。
極光的推送服務(wù)已經(jīng)有10年左右的歷史,給各行各業(yè)眾多的企業(yè)提供服務(wù),有著非常豐富的各種場(chǎng)景的落地實(shí)踐經(jīng)驗(yàn),同時(shí)我們也在不斷夯實(shí)技術(shù),每天處理大量的數(shù)據(jù),推送百億級(jí)別的消息,為日活超過(guò)4億的終端用戶提供高效、穩(wěn)定的服務(wù)。
極光推送提供的服務(wù)就是要快速的將消息發(fā)送給目標(biāo)設(shè)備,并提供專業(yè)的數(shù)據(jù)分析讓開(kāi)發(fā)者能夠及時(shí)了解推送的結(jié)果,方便業(yè)務(wù)運(yùn)營(yíng),通過(guò)以下幾個(gè)方面來(lái)達(dá)到這個(gè)目的:
當(dāng)前極光支持多個(gè)主流平臺(tái)的SDK,能夠讓開(kāi)發(fā)者快速地集成到自身的應(yīng)用當(dāng)中,幾分鐘就可以實(shí)現(xiàn)App的推送功能,也能夠滿足各開(kāi)發(fā)者對(duì)SDK體積大小、功耗等方面的要求。在數(shù)據(jù)采集方面,基于最小化原則,只采集必要的數(shù)據(jù),滿足相關(guān)合規(guī)條款的要求,在此基礎(chǔ)之上,推送相關(guān)的數(shù)據(jù)例如送達(dá)、展示、點(diǎn)擊等數(shù)據(jù)盡量上報(bào),方便數(shù)據(jù)統(tǒng)計(jì)分析。
極光推送連接著開(kāi)發(fā)者和終端設(shè)備用戶,而終端設(shè)備上集成極光SDK,那么SDK和極光推送的連接質(zhì)量就特別重要了。在推送系統(tǒng)架構(gòu)上,把SDK和極光推送系統(tǒng)連接的部分抽離出來(lái),形成接入網(wǎng)關(guān)服務(wù),接入網(wǎng)關(guān)服務(wù)負(fù)責(zé)連接終端設(shè)備,并將消息分發(fā)到指定的SDK連接上,本身并不進(jìn)行具體的業(yè)務(wù)邏輯,起到連接和業(yè)務(wù)中轉(zhuǎn)的功能。接入網(wǎng)關(guān)服務(wù)部署在全國(guó)各個(gè)區(qū)域,跟核心機(jī)房的推送系統(tǒng)主要是通過(guò)運(yùn)營(yíng)商的骨干網(wǎng)絡(luò)進(jìn)行通信,網(wǎng)絡(luò)質(zhì)量基本上都很穩(wěn)定。
SDK首先向推送系統(tǒng)請(qǐng)求獲取連接接入網(wǎng)關(guān)服務(wù)的地址,推送系統(tǒng)根據(jù)SDK的相關(guān)信息例如IP運(yùn)營(yíng)商、IP屬地等從接入網(wǎng)關(guān)服務(wù)的地址列表中,選擇最優(yōu)的接入網(wǎng)關(guān)服務(wù)地址返回給SDK進(jìn)行連接。這通常來(lái)說(shuō)會(huì)考慮SDK的IP運(yùn)營(yíng)商、IP屬地、接入網(wǎng)關(guān)服務(wù)的網(wǎng)絡(luò)線路例如是否特定線路或者BGP網(wǎng)絡(luò)、接入網(wǎng)關(guān)服務(wù)部署地域、接入網(wǎng)關(guān)服務(wù)本身的負(fù)載等等機(jī)房方面。盡量讓SDK連接到網(wǎng)絡(luò)線路友好的、距離最近的接入網(wǎng)關(guān)服務(wù)。
此外,SDK在保持連接方面也有一些相關(guān)的工作,綜合考慮功耗、流量消耗、連接斷開(kāi)敏感性等因素設(shè)置合適的心跳間隔時(shí)間,以便及時(shí)感知網(wǎng)絡(luò)斷開(kāi)的情況,進(jìn)而重新連接到推送系統(tǒng)。為了快速建立連接,采用并行建立連接的方式,以最快的速度建立SDK和推送系統(tǒng)的網(wǎng)絡(luò)鏈路。
接入網(wǎng)關(guān)服務(wù)目前基本上都是對(duì)接BGP網(wǎng)絡(luò),從而滿足從各個(gè)運(yùn)營(yíng)商網(wǎng)絡(luò)連接的設(shè)備的連接穩(wěn)定性,同時(shí)根據(jù)就近連接策略,減少數(shù)據(jù)在網(wǎng)絡(luò)傳輸?shù)臅r(shí)延,盡量保證連接質(zhì)量。
極光推送目前有超過(guò)650億的累計(jì)注冊(cè)用戶數(shù)據(jù),并且還在持續(xù)增長(zhǎng)中,除了基礎(chǔ)的用戶數(shù)據(jù),還有用于推送的各個(gè)維度的數(shù)據(jù),例如標(biāo)簽別名、智能標(biāo)簽、定時(shí)任務(wù)等等。這么大量級(jí)的數(shù)據(jù),如何組織數(shù)據(jù)、存儲(chǔ)數(shù)據(jù),以便快速訪問(wèn)數(shù)據(jù),實(shí)現(xiàn)高并發(fā)的業(yè)務(wù)處理,就需要有相應(yīng)的處理策略來(lái)達(dá)到這個(gè)目的。
按照子業(yè)務(wù)功能拆分?jǐn)?shù)據(jù),最小化訪問(wèn)數(shù)據(jù)。每個(gè)子業(yè)務(wù)功能所訪問(wèn)的數(shù)據(jù)通常來(lái)說(shuō)只是訪問(wèn)用戶的一部分?jǐn)?shù)據(jù),其他數(shù)據(jù)維度往往不需要訪問(wèn),因此可以從子業(yè)務(wù)的維度進(jìn)行數(shù)據(jù)的拆分并獨(dú)立存儲(chǔ)。例如別名標(biāo)簽、用戶在線狀態(tài)、離線消息等等,通過(guò)獨(dú)立存儲(chǔ)數(shù)據(jù),能夠減少網(wǎng)絡(luò)IO,減少存儲(chǔ)系統(tǒng)過(guò)濾不相關(guān)數(shù)據(jù)的處理,降低業(yè)務(wù)耦合,提升系統(tǒng)的穩(wěn)定性、可用性和整體性能。
緩存優(yōu)化。推送任務(wù)的及時(shí)性要求非常高,并且系統(tǒng)中有大量的推送任務(wù)同時(shí)進(jìn)行,因此對(duì)數(shù)據(jù)的訪問(wèn)時(shí)延也有很高的要求,以便快速的數(shù)據(jù)訪問(wèn)。根據(jù)數(shù)據(jù)集的規(guī)模和特性、訪問(wèn)時(shí)延、總體QPS、存儲(chǔ)成本等方面的因素,設(shè)計(jì)合適的存儲(chǔ)結(jié)構(gòu)存儲(chǔ)到合適的存儲(chǔ)系統(tǒng)中。采用多級(jí)緩存的機(jī)制,通常來(lái)說(shuō)是基于內(nèi)存的存儲(chǔ)結(jié)合基于磁盤(pán)的存儲(chǔ),例如使用Redis和PIKA進(jìn)行存儲(chǔ),也會(huì)根據(jù)業(yè)務(wù)適當(dāng)?shù)氖褂帽镜鼐彺?。特別的,針對(duì)大數(shù)據(jù)集群或者big key,采用數(shù)據(jù)分片處理。
冷熱數(shù)據(jù)分離。我們的系統(tǒng)中有大量的數(shù)據(jù),有一些高頻訪問(wèn),也有一些是很少訪問(wèn)甚至基本不訪問(wèn)例如已經(jīng)長(zhǎng)時(shí)間不活躍的用戶。綜合考慮存儲(chǔ)成本、訪問(wèn)時(shí)延、維護(hù)成本,采用不同的存儲(chǔ)系統(tǒng)來(lái)保存這些數(shù)據(jù),高頻訪問(wèn)的數(shù)據(jù)存儲(chǔ)在Redis中,低頻訪問(wèn)的數(shù)據(jù)存儲(chǔ)在PIKA或者M(jìn)ySQL。
讀寫(xiě)分離、一主多從。對(duì)于讀多寫(xiě)少的場(chǎng)景,可以采用這個(gè)策略進(jìn)行讀寫(xiě)業(yè)務(wù)的隔離,同時(shí)通過(guò)多個(gè)從節(jié)點(diǎn)進(jìn)行讀數(shù)據(jù),提升系統(tǒng)的并發(fā)處理能力、整體吞吐能力。
推送系統(tǒng)是一個(gè)包含多個(gè)子業(yè)務(wù)功能的龐大的系統(tǒng),在大規(guī)模的數(shù)據(jù)集、大量并發(fā)請(qǐng)求的這個(gè)場(chǎng)景下,我們把各子業(yè)務(wù)拆分獨(dú)立成子系統(tǒng),構(gòu)造相關(guān)的服務(wù),把業(yè)務(wù)處理流程化,通過(guò)消息驅(qū)動(dòng)串聯(lián)業(yè)務(wù)流,各個(gè)業(yè)務(wù)節(jié)點(diǎn)/服務(wù)并行的處理。我們主要采用MQ或者RPC的方式進(jìn)行各個(gè)服務(wù)的調(diào)用,異步調(diào)用處理為主,少部分使用同步請(qǐng)求處理,一方面解耦業(yè)務(wù),另一方面也提升系統(tǒng)整體性能。
推送的各個(gè)業(yè)務(wù)服務(wù)集群化部署,每個(gè)子服務(wù)都是部署多個(gè)節(jié)點(diǎn)并行處理各個(gè)請(qǐng)求,同時(shí)為了應(yīng)對(duì)突發(fā)的大量請(qǐng)求流量,基于K8S的部署能夠快速的實(shí)現(xiàn)相關(guān)服務(wù)的自動(dòng)擴(kuò)容,快速處理各個(gè)業(yè)務(wù)請(qǐng)求。
當(dāng)前極光推送系統(tǒng)中,有基于SDK和推送系統(tǒng)長(zhǎng)鏈接的自有通道,也對(duì)接了主流的各個(gè)設(shè)備廠商的推送通道。自有通道由于權(quán)限的限制,并不一定能夠時(shí)時(shí)刻刻的保持長(zhǎng)鏈接,但是并沒(méi)有限制下發(fā)頻率和下發(fā)數(shù)量;廠商推送通道使用系統(tǒng)級(jí)別的長(zhǎng)鏈接,連通性更加好,但是每個(gè)廠商都有自己的消息下發(fā)限制規(guī)則,例如每日推送配額限制、推送速率限制、單個(gè)設(shè)備每日營(yíng)銷(xiāo)類(lèi)消息數(shù)量限制等等。
我們根據(jù)這些因素選擇合適的推送通道進(jìn)行下發(fā)給目標(biāo)用戶,以達(dá)到快速把消息送達(dá)給目標(biāo)用戶。默認(rèn)情況下,如果廠商通道能夠下發(fā)則選擇廠商通道下發(fā)消息,廠商通道不能夠下發(fā)例如沒(méi)有推送配額則使用極光自有通道進(jìn)行消息下發(fā)。也可以選擇只通過(guò)廠商通道或者只通過(guò)極光自有通道下發(fā)消息。
當(dāng)完成一個(gè)消息推送時(shí),極光提供專業(yè)的漏斗分析工具,向開(kāi)發(fā)者提供推送耗時(shí)、推送結(jié)果分析;同時(shí)也有推送用戶分析、推送消息統(tǒng)計(jì)分析等等工具,方便業(yè)務(wù)運(yùn)營(yíng)。
目標(biāo)設(shè)備的用戶收到消息后處理相應(yīng)的業(yè)務(wù)邏輯,例如訂單的處理、搶單等等。
這個(gè)過(guò)程的處理耗時(shí)單推情況下能夠200ms內(nèi)推送到目標(biāo)設(shè)備,具體如下:
API處理耗時(shí):10ms 以內(nèi)
目標(biāo)用戶選擇:?jiǎn)瓮魄闆r下10ms 以內(nèi),多推情況跟目標(biāo)用戶數(shù)量有關(guān)
廠商通道:10ms以內(nèi)的數(shù)據(jù)訪問(wèn),http請(qǐng)求廠商接口10~40ms
極光自有通道:10ms以內(nèi)的數(shù)據(jù)訪問(wèn),核心機(jī)房到達(dá)最遠(yuǎn)的接入機(jī)房40ms,接入機(jī)房到達(dá)目標(biāo)設(shè)備20ms
結(jié) 語(yǔ)
通過(guò)使用精準(zhǔn)、高效、穩(wěn)定、安全的極光推送服務(wù),將幫助企業(yè)有效提升搶單速度,進(jìn)而有效提升客戶觸達(dá)效率和互動(dòng)需求。期待通過(guò)使用極光推送服務(wù),幫助您實(shí)現(xiàn)快速增長(zhǎng)。
關(guān)于極光
極光(Aurora Mobile,納斯達(dá)克股票代碼:JG)成立于2011年,是中國(guó)領(lǐng)先的客戶互動(dòng)和營(yíng)銷(xiāo)科技服務(wù)商。成立之初,極光專注于為企業(yè)提供穩(wěn)定高效的消息推送服務(wù),憑借先發(fā)優(yōu)勢(shì),已經(jīng)成長(zhǎng)為市場(chǎng)份額遙遙領(lǐng)先的移動(dòng)消息推送服務(wù)商。隨著企業(yè)對(duì)客戶觸達(dá)和營(yíng)銷(xiāo)增長(zhǎng)需求的不斷加強(qiáng),極光前瞻性地推出了消息云和營(yíng)銷(xiāo)云等解決方案,幫助企業(yè)實(shí)現(xiàn)多渠道的客戶觸達(dá)和互動(dòng)需求,以及人工智能和大數(shù)據(jù)驅(qū)動(dòng)的營(yíng)銷(xiāo)科技應(yīng)用,助力企業(yè)數(shù)字化轉(zhuǎn)型。
熱門(mén)文章
開(kāi)發(fā)者必看:2025最高效的推送圖標(biāo)配置指南
2025-07-16
低延遲音頻深度解析:GPTBots 技術(shù)方案
2025-07-14
構(gòu)建AI賦能的代碼編輯器:GPTBots與Monaco強(qiáng)強(qiáng)聯(lián)合
2025-07-08
EngageLab深度解析:AI 驅(qū)動(dòng)的全渠道營(yíng)銷(xiāo)自動(dòng)化如何賦能業(yè)務(wù)高速增長(zhǎng)
2025-06-25
GPTBots使用fetch-event-source實(shí)現(xiàn)SSE POST傳參
2025-06-23
相關(guān)文章
極光官方微信公眾號(hào)
關(guān)注我們,即時(shí)獲取最新極光資訊
現(xiàn)在注冊(cè),領(lǐng)取新人大禮包