成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊多平臺消息推送服務的實踐

開發 前端
本文概述了信鴿服務,它已經成為新媒體業務體系中的核心組件,承擔著消息發送的統一服務職責。信鴿服務的核心目標是實現消息的集中管理和高效傳遞。

1 背景

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

圖片圖片

1.1 強耦合的消息和業務代碼

消息發送和業務流程代碼緊密相連,導致消息發送問題直接影響業務流程。例如,我們的部分流程依賴于用戶對發送的消息進行審批,只有審批完成后,才能進入下一流程節點。這種設計使得消息系統的任何故障都可能直接影響整個業務流程的運行。

1.2 服務間代碼重復,維護困難

不同服務均需消息發送功能,導致多個服務中存在重復的消息發送工具類。這不僅增加了代碼的重復性,也使得對消息發送功能的更新和迭代變得復雜。當需要更新消息發送功能時,必須在各個服務中分別進行修改,增加了維護的難度和出錯的可能性。

1.3 消息發送的偶發丟失問題

目前的架構中,大量消息通過多個服務的工具類直接調用各消息平臺的HTTPS接口發送。這種設計在生產環境中導致了消息偶發性的丟失——消息雖然發送,但用戶未收到。由于代碼分散,排查此類問題非常困難,我們只能依賴于發送時的日志進行追蹤,這大大增加了問題診斷的復雜性。

2 現狀和痛點

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

圖片圖片

3 設計和實現

為了讓信鴿服務的接口能被使用的更方便,信鴿服務內部需要完成多個步驟

  • 消息服務接口鑒權
  • 模版加載處理
  • 消息前置校驗
  • 多消息通道頻控兼容
  • 消息重試處理
  • 消息生命周期監控

圖片圖片

3.1 消息解耦的三元素

結合實際的業務場景,我們把消息拆分出了三個元素:場景、機器人、模版

圖片圖片

  • 場景:當前發送的消息的業務場景
  • 機器人:發送當前的機器人/應用
  • 模版:當前消息模版

通過以上三元素的簡單配置,來達到我們信鴿消息對象的完整配置

圖片圖片

3.2 生命周期

不同平臺的消息,在信鴿中都擁有著統一生命周期:

  • 初始化
  • 發送中
  • 消息發送成功
  • 消息重試中
  • 消息發送失敗

在實際生產環境中,若由于某種因素需要查看消息的狀態,可根據消息唯一號,判斷消息的狀態。

圖片圖片

3.3 限流

3.31 對外部平臺頻控策略的適配

當我們的消息發送頻率超出各平臺的限制時,會導致消息發送失敗并被丟棄。這對于那些依賴于消息傳達的關鍵場景來說,可能造成嚴重的影響。此外,先前提及的消息偶發丟失問題,大多也是由于這些外部平臺的頻率控制導致的。

飛書限流規則:

  • 所有接口每個應用最高請求頻率 50次/秒
  • 發送消息接口每個應用最高頻率是1000次/分鐘
  • 群聊機器人Webhook最高頻率是100次/分鐘
  • 機器人給同一用戶或同一群發的最高頻率是5次/秒

企微限流規則:

  • 每個機器人發送的消息不能超過20條/分鐘

對每個機器人/應用作對外適配的頻率限制:

因此,信鴿平臺采用了簡易的分布式限流算法,并結合模板方法和策略模式,實現了兩種限流機制:計數器算法和令牌桶算法。通過自定義注解,我們可以在項目中靈活地切換限流配置,從而有效適應不同平臺的頻率控制策略。這樣的設計不僅提高了系統的適應性,也確保了消息傳遞的穩定性和效率。

圖片圖片

限流后帶來的堆積排隊問題

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

圖片圖片

所以我們進行了改造:基于場景分區,消費者會根據分區輪詢消費。而不是等待A隊列消費完成后再消費B隊列。這樣有效降低了同一機器人下的限流堆積問題。當然,如果有更大體量的消息,還是建議使用多個機器人來提高消費的速率。

圖片圖片

3.32 信鴿接口的限流

考慮到服務是通過SCF層進行接入的,我們可以利用SCF提供的配置來實現接口限流。這意味著,通過簡單地配置SCF接口,我們就能輕松實現上線接口的限流功能。這種方法簡化了限流的實現過程,確保服務在高并發情況下的穩定運行,同時降低了系統復雜性和維護成本

圖片圖片

3.4 消息模版

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

圖片圖片

4 總結

本文概述了信鴿服務,它已經成為新媒體業務體系中的核心組件,承擔著消息發送的統一服務職責。信鴿服務的核心目標是實現消息的集中管理和高效傳遞。展望未來,我們計劃進一步增強信鴿服務的功能,包括事務消息處理、消息的優先級排序,以及夜間消息發送的屏蔽控制。這些改進將使信鴿服務更加全面和強大,更好地服務于業務需求。

關于作者

吳冰寒,現任轉轉乾數據技術部后端研發工程師。

責任編輯:武曉燕 來源: 轉轉技術
相關推薦

2024-08-18 14:09:24

2024-07-05 09:24:11

2023-12-06 21:44:28

RocksDBvivo

2022-05-09 08:34:01

FeignhttpJava

2017-05-09 09:26:48

微服務消息推送

2023-07-19 22:13:25

一體化推送平臺

2023-11-06 08:26:11

Spring微服務架構

2022-01-10 08:17:40

異地設計實踐

2019-01-10 10:20:00

消息推送平臺APP后端

2009-07-23 10:25:39

WCF的Duplex服

2023-01-27 19:33:10

消息中心管理平臺

2023-04-28 08:06:04

低代碼AI智能

2023-09-11 08:50:03

Maven工具關系管理

2023-12-18 08:36:39

消息隊列微服務開發

2010-08-05 09:36:03

NFS服務

2020-05-14 18:04:20

Spring BootSaaS平臺

2022-07-12 08:00:31

命令Kubernetes應用程序

2013-04-10 18:48:56

微信公眾平臺技巧

2025-01-02 09:23:05

2020-10-24 17:28:04

DockerKafka服務分布式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线视频免费观看 | jlzzjlzz欧美大全 | 在线视频中文字幕 | 亚洲成人在线视频播放 | 亚洲色视频 | 国产福利在线 | 中文字幕乱码视频32 | 国产性网 | 中文字幕日韩欧美一区二区三区 | 国产成人久久 | 亚洲高清视频在线观看 | 97超碰人人 | 三级视频在线观看电影 | 欧美日韩一区二区在线观看 | 麻豆精品国产91久久久久久 | 久久丁香 | 国产精品a久久久久 | 成人午夜精品一区二区三区 | 爱爱小视频 | aaa精品 | 91麻豆精品国产91久久久久久 | 美女久久 | 欧美一区免费在线观看 | 国产一二三区在线 | 日韩高清在线 | 国内精品久久影院 | 国产中文字幕在线观看 | 日本aaa视频 | 亚洲欧美国产精品久久 | 国产人久久人人人人爽 | 国产日韩欧美在线播放 | 国产精品久久久久久福利一牛影视 | 国产精品久久久久久久久久久免费看 | 欧美日韩国产在线观看 | 91国产视频在线 | 成人免费区一区二区三区 | 久久国产麻豆 | 国产精品一区一区 | 中文字幕人成人 | 欧美三级在线 | 91午夜在线|