国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

FCM通知變數(shù)據(jù)卡車:一個(gè)五年系統(tǒng)的崩潰實(shí)錄

0
分享至

五年零故障,一天全崩掉。

這不是什么驚天大漏洞,沒有黑客入侵,沒有服務(wù)器宕機(jī)。只是一個(gè)普通的周三,推送通知開始"丟三落四"——名字沒了,數(shù)據(jù)空了,UI上只剩下一堆null。然后崩潰報(bào)告如雪片般飛來。


故事的主角是Firebase Cloud Messaging(FCM),谷歌的推送服務(wù)。開發(fā)者Subhankar Bag花了五年時(shí)間搭建的系統(tǒng),一直把它當(dāng)"數(shù)據(jù)卡車"用。通知不只是響一聲,而是扛著完整的訪客信息、審批數(shù)據(jù)、實(shí)時(shí)狀態(tài),直接送到App里解析展示。

這套設(shè)計(jì)曾經(jīng)很優(yōu)雅:后端打包,F(xiàn)CM運(yùn)輸,App開箱即用。沒有額外的API調(diào)用,沒有延遲,用戶點(diǎn)開通知就能看到完整信息。五年間,這套系統(tǒng)默默處理了無數(shù)訪客審批、安全警報(bào)、實(shí)時(shí)通知,零投訴,零事故。

直到某天,數(shù)據(jù)結(jié)構(gòu)變了。

原本扁平的鍵值對(duì),突然變成了嵌套JSON字符串:"update_unit": "{ \"id\":2230, \"visitor\": { ... } }"。App用Gson解析時(shí)期待的是一個(gè)對(duì)象,拿到的是一串字符串。報(bào)錯(cuò)信息很直白:Expected BEGIN_OBJECT but was STRING。

但這不是根因。真正的殺手藏在FCM的硬限制里:4KB。

4KB是什么概念?大約4096個(gè)英文字符,或者更少的Unicode字符。當(dāng)后端把JSON對(duì)象序列化成字符串塞進(jìn)payload時(shí),體積膨脹了30%到40%。原本緊巴巴的4KB預(yù)算,現(xiàn)在更吃緊了。

更麻煩的是,F(xiàn)CM不會(huì)跟你商量。超限時(shí)它不報(bào)錯(cuò)、不警告,直接丟棄消息。開發(fā)者可能在后臺(tái)看到發(fā)送成功,但用戶的手機(jī)永遠(yuǎn)收不到。

這個(gè)系統(tǒng)的崩潰路徑堪稱經(jīng)典:首先,業(yè)務(wù)數(shù)據(jù)自然增長(zhǎng),訪客信息越來越豐富;然后,某人決定把JSON嵌套進(jìn)字符串,可能是為了兼容某個(gè)舊接口;接著,payload在4KB邊緣反復(fù)試探;最后,某個(gè)大客戶的訪客記錄成為壓垮駱駝的最后一根稻草——消息消失,App解析失敗,UI顯示null,用戶困惑,崩潰報(bào)告堆積。

整個(gè)過程沒有一聲警報(bào)。就像一個(gè)人慢慢缺氧,直到暈倒才被人發(fā)現(xiàn)。

問題的本質(zhì)在于設(shè)計(jì)認(rèn)知的錯(cuò)位。FCM的官方定位是"信令機(jī)制"(signaling mechanism)——輕量、快速、可靠地告訴用戶"有件事發(fā)生了"。而這套系統(tǒng)把它當(dāng)成了"數(shù)據(jù)交付機(jī)制"(data delivery mechanism),試圖用推送通道替代API調(diào)用。

這種錯(cuò)位在初期完全可行。4KB對(duì)簡(jiǎn)單通知綽綽有余,JSON字符串的膨脹也不明顯。但隨著業(yè)務(wù)復(fù)雜化,技術(shù)債以指數(shù)級(jí)速度累積。字符串嵌套JSON的設(shè)計(jì)決策,把線性增長(zhǎng)的數(shù)據(jù)變成了超線性增長(zhǎng)的payload。

修復(fù)方案不是修剪幾個(gè)字段就能解決的。團(tuán)隊(duì)需要徹底轉(zhuǎn)變思路:FCM只發(fā)信號(hào),數(shù)據(jù)走專用通道。

新模式下,推送變得極簡(jiǎn):{ "type": "ALERT_OBJECT", "ref_id": "2230" }。App收到后,再用ref_id去調(diào)API取完整數(shù)據(jù)。多了一次網(wǎng)絡(luò)請(qǐng)求,但換來了可靠性——API可以分頁、可以重試、可以緩存,而FCM只有4KB和沉默的丟棄。

這個(gè)案例的教訓(xùn)很樸素,但容易被忽視。

第一,任何"硬限制"都值得被監(jiān)控。4KB不是建議值,是物理邊界。系統(tǒng)應(yīng)該在接近閾值時(shí)報(bào)警,而不是等到消息消失。

第二,序列化格式有成本。JSON字符串比JSON對(duì)象多一層轉(zhuǎn)義字符,在邊緣場(chǎng)景下可能是致命的。性能優(yōu)化不能只測(cè)平均值,要測(cè)最壞情況。

第三,外部服務(wù)的語義很重要。FCM的文檔明確說它是"signaling",但開發(fā)者常因便利而誤用。當(dāng)服務(wù)被用于設(shè)計(jì)之外的場(chǎng)景時(shí),需要額外的防御層。

第四,沉默的失敗是最危險(xiǎn)的失敗。FCM丟棄消息時(shí)不通知發(fā)送方,這種"成功幻覺"讓問題難以定位。關(guān)鍵路徑上,任何外部調(diào)用都應(yīng)該有對(duì)賬機(jī)制——發(fā)送了100條,確認(rèn)收到了多少條?

五年穩(wěn)定運(yùn)行反而成了陷阱。它讓團(tuán)隊(duì)相信這套設(shè)計(jì)是可靠的,忽視了漸進(jìn)式的風(fēng)險(xiǎn)積累。技術(shù)債不會(huì)突然爆發(fā),它像慢性病一樣,在某個(gè)平凡的下午讓你倒下。

對(duì)于正在用FCM扛數(shù)據(jù)的后端和移動(dòng)開發(fā)者,這個(gè)故事的價(jià)值在于提前審視:你的payload現(xiàn)在多大?增長(zhǎng)曲線是什么?有沒有字符串套JSON的"小聰明"?4KB的預(yù)算還剩多少余量?

別等到null填滿屏幕,才想起檢查數(shù)據(jù)邊界。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
安徽一女老師點(diǎn)外賣,發(fā)現(xiàn)騎手是曾經(jīng)的學(xué)生:兼職賺錢,肯努力的人,永遠(yuǎn)都在發(fā)光

安徽一女老師點(diǎn)外賣,發(fā)現(xiàn)騎手是曾經(jīng)的學(xué)生:兼職賺錢,肯努力的人,永遠(yuǎn)都在發(fā)光

瀟湘晨報(bào)
2026-05-09 15:49:26
研究表明:男性嫖娼率6.4%,女性出軌率15%,且越有錢越開放!

研究表明:男性嫖娼率6.4%,女性出軌率15%,且越有錢越開放!

黯泉
2026-04-01 17:28:39
從每年2.1萬飆升至超1200萬,能不貶值才怪!

從每年2.1萬飆升至超1200萬,能不貶值才怪!

黯泉
2026-05-09 12:39:25
按照目前的趨勢(shì),央國(guó)企員工已經(jīng)進(jìn)入了一個(gè)有苦吃不完的時(shí)代!

按照目前的趨勢(shì),央國(guó)企員工已經(jīng)進(jìn)入了一個(gè)有苦吃不完的時(shí)代!

叮當(dāng)當(dāng)科技
2026-05-09 21:12:19
25歲劉浩存逆襲封神,張藝謀賭贏資源咖爭(zhēng)議

25歲劉浩存逆襲封神,張藝謀賭贏資源咖爭(zhēng)議

絢麗的畫卷
2026-05-09 14:12:21
巨爽啊啊啊啊啊啊啊啊。。!黏糊糊熱醒的夜晚,是時(shí)候和這條A類深睡被鎖死了

巨爽啊啊啊啊啊啊啊啊。。!黏糊糊熱醒的夜晚,是時(shí)候和這條A類深睡被鎖死了

英國(guó)報(bào)姐
2026-05-08 21:15:35
雷迪克說詹姆斯沒哨?追夢(mèng):沒人比庫里哨子更差,但他從不抱怨

雷迪克說詹姆斯沒哨?追夢(mèng):沒人比庫里哨子更差,但他從不抱怨

懂球帝
2026-05-10 00:51:07
一覺醒來,中國(guó)油輪在波斯灣遇襲!這不是誤炸,是有人想“破窗”

一覺醒來,中國(guó)油輪在波斯灣遇襲!這不是誤炸,是有人想“破窗”

閆樹軍論評(píng)
2026-05-08 18:11:21
外國(guó)女人!天生就自帶飽滿骨架,和圓潤(rùn)線條

外國(guó)女人!天生就自帶飽滿骨架,和圓潤(rùn)線條

飛娛日記
2026-04-15 01:44:26
章子怡沒想到,清空賬號(hào)、劃清界限的森林北,揭開汪峰僅剩的體面

章子怡沒想到,清空賬號(hào)、劃清界限的森林北,揭開汪峰僅剩的體面

好賢觀史記
2026-05-08 15:53:17
“斷崖式”下跌37%,黃金首飾賣不動(dòng)了

“斷崖式”下跌37%,黃金首飾賣不動(dòng)了

新浪財(cái)經(jīng)
2026-05-09 19:19:21
1-2不敵日本,中國(guó)男足遭遇亞洲杯2連敗,晉級(jí)僅存理論可能

1-2不敵日本,中國(guó)男足遭遇亞洲杯2連敗,晉級(jí)僅存理論可能

側(cè)身凌空斬
2026-05-10 01:54:50
張皓嘉絕殺北京!聽聽劉曉宇李克怎么說,為何能反敗為勝?

張皓嘉絕殺北京!聽聽劉曉宇李克怎么說,為何能反敗為勝?

南海浪花
2026-05-09 22:39:08
77歲港星在東莞租房養(yǎng)老,35平米月租1300,無兒無女靠老本度日

77歲港星在東莞租房養(yǎng)老,35平米月租1300,無兒無女靠老本度日

喜歡歷史的阿繁
2026-05-10 00:04:45
白嫖榴蓮女多重身份曝光!比大家想象中的還齷齪,難怪敢威脅商家

白嫖榴蓮女多重身份曝光!比大家想象中的還齷齪,難怪敢威脅商家

夜深愛雜談
2026-05-09 11:03:44
89歲謝賢被CoCo爆料,分手原因:他身體跟不上我,張柏芝也被牽連

89歲謝賢被CoCo爆料,分手原因:他身體跟不上我,張柏芝也被牽連

好賢觀史記
2026-05-08 15:57:30
破大防!荷蘭大臣曾向全世界承認(rèn):沒想到中方真的叫停芯片出口

破大防!荷蘭大臣曾向全世界承認(rèn):沒想到中方真的叫停芯片出口

混沌錄
2026-05-08 22:50:08
清朝“大辮子”到底多臟?滿頭油光,虱子滿頭,十步之內(nèi)不能站人

清朝“大辮子”到底多臟?滿頭油光,虱子滿頭,十步之內(nèi)不能站人

云霄紀(jì)史觀
2026-05-07 20:06:19
皮皮蝦事件博主陳女士相關(guān)信息被扒,網(wǎng)友又開始網(wǎng)暴她了

皮皮蝦事件博主陳女士相關(guān)信息被扒,網(wǎng)友又開始網(wǎng)暴她了

映射生活的身影
2026-05-09 10:45:43
16歲女孩景區(qū)內(nèi)墜亡,目擊者發(fā)聲,賠償金額曝光,景區(qū)運(yùn)營(yíng)僅49天

16歲女孩景區(qū)內(nèi)墜亡,目擊者發(fā)聲,賠償金額曝光,景區(qū)運(yùn)營(yíng)僅49天

溫柔看世界
2026-05-06 11:48:44
2026-05-10 08:03:00
賽博蘭博
賽博蘭博
專注搗鼓AI效率工具,試圖在這個(gè)時(shí)代留下數(shù)字分身的探索者。
2399文章數(shù) 26關(guān)注度
往期回顧 全部

科技要聞

美國(guó)政府強(qiáng)力下場(chǎng) 蘋果英特爾達(dá)成代工協(xié)議

頭條要聞

伊朗宣布:沒收262處“叛國(guó)者”房產(chǎn)

頭條要聞

伊朗宣布:沒收262處“叛國(guó)者”房產(chǎn)

體育要聞

成立128年后,這支升班馬首奪頂級(jí)聯(lián)賽冠軍

娛樂要聞

50歲趙薇臉頰凹陷滄桑得認(rèn)不出!

財(cái)經(jīng)要聞

多地號(hào)召,公職人員帶頭繳納物業(yè)費(fèi)

汽車要聞

軸距加長(zhǎng)/智駕拉滿 阿維塔07L定位大五座SUV

態(tài)度原創(chuàng)

時(shí)尚
親子
本地
數(shù)碼
健康

伊姐周六熱推:電視劇《喀什戀歌》;電視劇《低智商犯罪》......

親子要聞

剪給媽媽看的視頻,當(dāng)然全部都是愛

本地新聞

用蘇繡的方式,打開江西婺源

數(shù)碼要聞

TCL華星t8項(xiàng)目提前封頂 印刷OLED規(guī);慨a(chǎn)提速

干細(xì)胞能讓人“返老還童”嗎

無障礙瀏覽 進(jìn)入關(guān)懷版