日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
聊聊多平臺(tái)消息推送服務(wù)的實(shí)踐

1 背景

隨著各項(xiàng)業(yè)務(wù)線上化,觸達(dá)用戶的方式日益重要,而即時(shí)通訊服務(wù)成為了至關(guān)重要的溝通媒介。諸如企業(yè)微信和飛書(shū)等消息通知工具已經(jīng)成為我們與用戶互動(dòng)的首選方式。隨著通知需求的不斷增加,我們的消息通知代碼也在各個(gè)服務(wù)中逐漸累積,然而,這也伴隨著一系列問(wèn)題的出現(xiàn)。

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)新城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

圖片

1.1 強(qiáng)耦合的消息和業(yè)務(wù)代碼

消息發(fā)送和業(yè)務(wù)流程代碼緊密相連,導(dǎo)致消息發(fā)送問(wèn)題直接影響業(yè)務(wù)流程。例如,我們的部分流程依賴于用戶對(duì)發(fā)送的消息進(jìn)行審批,只有審批完成后,才能進(jìn)入下一流程節(jié)點(diǎn)。這種設(shè)計(jì)使得消息系統(tǒng)的任何故障都可能直接影響整個(gè)業(yè)務(wù)流程的運(yùn)行。

1.2 服務(wù)間代碼重復(fù),維護(hù)困難

不同服務(wù)均需消息發(fā)送功能,導(dǎo)致多個(gè)服務(wù)中存在重復(fù)的消息發(fā)送工具類。這不僅增加了代碼的重復(fù)性,也使得對(duì)消息發(fā)送功能的更新和迭代變得復(fù)雜。當(dāng)需要更新消息發(fā)送功能時(shí),必須在各個(gè)服務(wù)中分別進(jìn)行修改,增加了維護(hù)的難度和出錯(cuò)的可能性。

1.3 消息發(fā)送的偶發(fā)丟失問(wèn)題

目前的架構(gòu)中,大量消息通過(guò)多個(gè)服務(wù)的工具類直接調(diào)用各消息平臺(tái)的HTTPS接口發(fā)送。這種設(shè)計(jì)在生產(chǎn)環(huán)境中導(dǎo)致了消息偶發(fā)性的丟失——消息雖然發(fā)送,但用戶未收到。由于代碼分散,排查此類問(wèn)題非常困難,我們只能依賴于發(fā)送時(shí)的日志進(jìn)行追蹤,這大大增加了問(wèn)題診斷的復(fù)雜性。

2 現(xiàn)狀和痛點(diǎn)

在我們實(shí)際業(yè)務(wù)中,多個(gè)服務(wù)常常需要向用戶發(fā)送不同形式的消息,包括但不限于企業(yè)微信、飛書(shū)、短信、郵件、微信通知和手機(jī)應(yīng)用通知等。如果每個(gè)服務(wù)都獨(dú)立開(kāi)發(fā)一套消息發(fā)送代碼,這將導(dǎo)致維護(hù)難度大、錯(cuò)誤率高,效率極低。為解決這一問(wèn)題,我們開(kāi)發(fā)了“信鴿平臺(tái)”,這是一個(gè)集中式的消息服務(wù)平臺(tái),為其他服務(wù)提供統(tǒng)一的消息發(fā)送解決方案。與公司內(nèi)的其他中臺(tái)服務(wù)類似,信鴿服務(wù)的主要目標(biāo)是實(shí)現(xiàn)業(yè)務(wù)消息的優(yōu)雅傳遞。該服務(wù)專注于消息的全周期管理,確保消息發(fā)送的穩(wěn)定性,并提供業(yè)務(wù)分析功能,以更高效、可靠的方式處理各種業(yè)務(wù)通知需求。

圖片

3 設(shè)計(jì)和實(shí)現(xiàn)

為了讓信鴿服務(wù)的接口能被使用的更方便,信鴿服務(wù)內(nèi)部需要完成多個(gè)步驟

  • 消息服務(wù)接口鑒權(quán)
  • 模版加載處理
  • 消息前置校驗(yàn)
  • 多消息通道頻控兼容
  • 消息重試處理
  • 消息生命周期監(jiān)控

圖片

3.1 消息解耦的三元素

結(jié)合實(shí)際的業(yè)務(wù)場(chǎng)景,我們把消息拆分出了三個(gè)元素:場(chǎng)景、機(jī)器人、模版

圖片

  • 場(chǎng)景:當(dāng)前發(fā)送的消息的業(yè)務(wù)場(chǎng)景
  • 機(jī)器人:發(fā)送當(dāng)前的機(jī)器人/應(yīng)用
  • 模版:當(dāng)前消息模版

通過(guò)以上三元素的簡(jiǎn)單配置,來(lái)達(dá)到我們信鴿消息對(duì)象的完整配置

圖片

3.2 生命周期

不同平臺(tái)的消息,在信鴿中都擁有著統(tǒng)一生命周期:

  • 初始化
  • 發(fā)送中
  • 消息發(fā)送成功
  • 消息重試中
  • 消息發(fā)送失敗

在實(shí)際生產(chǎn)環(huán)境中,若由于某種因素需要查看消息的狀態(tài),可根據(jù)消息唯一號(hào),判斷消息的狀態(tài)。

圖片

3.3 限流

3.31 對(duì)外部平臺(tái)頻控策略的適配

當(dāng)我們的消息發(fā)送頻率超出各平臺(tái)的限制時(shí),會(huì)導(dǎo)致消息發(fā)送失敗并被丟棄。這對(duì)于那些依賴于消息傳達(dá)的關(guān)鍵場(chǎng)景來(lái)說(shuō),可能造成嚴(yán)重的影響。此外,先前提及的消息偶發(fā)丟失問(wèn)題,大多也是由于這些外部平臺(tái)的頻率控制導(dǎo)致的。

飛書(shū)限流規(guī)則:

  • 所有接口每個(gè)應(yīng)用最高請(qǐng)求頻率 50次/秒
  • 發(fā)送消息接口每個(gè)應(yīng)用最高頻率是1000次/分鐘
  • 群聊機(jī)器人Webhook最高頻率是100次/分鐘
  • 機(jī)器人給同一用戶或同一群發(fā)的最高頻率是5次/秒

企微限流規(guī)則:

  • 每個(gè)機(jī)器人發(fā)送的消息不能超過(guò)20條/分鐘

對(duì)每個(gè)機(jī)器人/應(yīng)用作對(duì)外適配的頻率限制:

因此,信鴿平臺(tái)采用了簡(jiǎn)易的分布式限流算法,并結(jié)合模板方法和策略模式,實(shí)現(xiàn)了兩種限流機(jī)制:計(jì)數(shù)器算法和令牌桶算法。通過(guò)自定義注解,我們可以在項(xiàng)目中靈活地切換限流配置,從而有效適應(yīng)不同平臺(tái)的頻率控制策略。這樣的設(shè)計(jì)不僅提高了系統(tǒng)的適應(yīng)性,也確保了消息傳遞的穩(wěn)定性和效率。

圖片

限流后帶來(lái)的堆積排隊(duì)問(wèn)題

在企業(yè)微信應(yīng)用中設(shè)定了每分鐘最多向每個(gè)用戶發(fā)送30條消息的限制。假設(shè)在某一時(shí)刻,場(chǎng)景A產(chǎn)生了210條消息,那么按照這個(gè)發(fā)送頻率,至少需要7分鐘才能完成所有消息的發(fā)送。此外,如果在這個(gè)過(guò)程中,場(chǎng)景B產(chǎn)生了一條消息,這條消息將不得不等待場(chǎng)景A的所有消息發(fā)送完畢后才能被發(fā)送。這樣的處理機(jī)制可能導(dǎo)致消息傳遞的延遲,特別是在高峰時(shí)段或多場(chǎng)景并發(fā)時(shí)。

圖片

所以我們進(jìn)行了改造:基于場(chǎng)景分區(qū),消費(fèi)者會(huì)根據(jù)分區(qū)輪詢消費(fèi)。而不是等待A隊(duì)列消費(fèi)完成后再消費(fèi)B隊(duì)列。這樣有效降低了同一機(jī)器人下的限流堆積問(wèn)題。當(dāng)然,如果有更大體量的消息,還是建議使用多個(gè)機(jī)器人來(lái)提高消費(fèi)的速率。

圖片

3.32 信鴿接口的限流

考慮到服務(wù)是通過(guò)SCF層進(jìn)行接入的,我們可以利用SCF提供的配置來(lái)實(shí)現(xiàn)接口限流。這意味著,通過(guò)簡(jiǎn)單地配置SCF接口,我們就能輕松實(shí)現(xiàn)上線接口的限流功能。這種方法簡(jiǎn)化了限流的實(shí)現(xiàn)過(guò)程,確保服務(wù)在高并發(fā)情況下的穩(wěn)定運(yùn)行,同時(shí)降低了系統(tǒng)復(fù)雜性和維護(hù)成本

圖片

3.4 消息模版

為了方便各服務(wù)快速發(fā)送基本消息,信鴿平臺(tái)提供了一套消息模板。這些模板旨在簡(jiǎn)化消息發(fā)送流程,用戶只需填充必要的參數(shù)并進(jìn)行接口調(diào)用,即可輕松發(fā)送一條消息。這種設(shè)計(jì)極大地提高了消息發(fā)送的效率,同時(shí)降低了服務(wù)集成的復(fù)雜性。下面提供的是一個(gè)用于飛書(shū)消息發(fā)送的模板示例,展示了如何便捷地使用這些模板發(fā)送消息。

圖片

4 總結(jié)

本文概述了信鴿服務(wù),它已經(jīng)成為新媒體業(yè)務(wù)體系中的核心組件,承擔(dān)著消息發(fā)送的統(tǒng)一服務(wù)職責(zé)。信鴿服務(wù)的核心目標(biāo)是實(shí)現(xiàn)消息的集中管理和高效傳遞。展望未來(lái),我們計(jì)劃進(jìn)一步增強(qiáng)信鴿服務(wù)的功能,包括事務(wù)消息處理、消息的優(yōu)先級(jí)排序,以及夜間消息發(fā)送的屏蔽控制。這些改進(jìn)將使信鴿服務(wù)更加全面和強(qiáng)大,更好地服務(wù)于業(yè)務(wù)需求。

關(guān)于作者

吳冰寒,現(xiàn)任轉(zhuǎn)轉(zhuǎn)乾數(shù)據(jù)技術(shù)部后端研發(fā)工程師。


名稱欄目:聊聊多平臺(tái)消息推送服務(wù)的實(shí)踐
文章鏈接:http://www.dlmjj.cn/article/cdjhpeg.html