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

效率消息中心從0-1搭建與思考

開發(fā) 前端
對(duì)于消息中心來說,根據(jù)實(shí)際業(yè)務(wù)線的豐富度,相應(yīng)應(yīng)用場(chǎng)景也會(huì)更加復(fù)雜,所以我們?cè)谠O(shè)計(jì)消息的落地場(chǎng)景時(shí),對(duì)于不同場(chǎng)景的適用性挑戰(zhàn)也會(huì)增大。但殊途同歸,基于降本增效去做更多思考,總歸會(huì)讓價(jià)值落地。?

1、什么是消息中心

消息中心是一個(gè)集中管理、分發(fā)通知和提醒的平臺(tái),可以讓用戶或系統(tǒng)消息更方便、快捷的觸達(dá)給指定用戶或者系統(tǒng)。并且可以幫助用戶或系統(tǒng)更好地管理消息的生命周期,屏蔽不同消息渠道差異與技術(shù)差異,從而提升效率與體驗(yàn),降低維護(hù)成本。

2、為什么要搭建消息中心

  • 公司目前處于快速發(fā)展階段,業(yè)務(wù)線正在快速拓展,不同的產(chǎn)品線也正在逐步增加,與此同時(shí),不同的產(chǎn)品線均需要通過消息模塊來觸達(dá)內(nèi)部或外部用戶,基本上每一個(gè)系統(tǒng)都需要有自己的消息通知體系。但在由于不同業(yè)務(wù)開發(fā)團(tuán)隊(duì)相互獨(dú)立,為了避免協(xié)調(diào)溝通這種不可預(yù)估的成本,各業(yè)務(wù)開發(fā)團(tuán)隊(duì)都采取了“自主”開發(fā)的方式解決此類問題。這樣造成的結(jié)果就是:各業(yè)務(wù)團(tuán)隊(duì)不斷地重復(fù)發(fā)明輪子,而且這輪子不可復(fù)用,造成了資源和時(shí)間成本的大量浪費(fèi)。更為關(guān)鍵的是:功能無法復(fù)用,持續(xù)迭代也無法沉淀。當(dāng)面對(duì)一個(gè)新業(yè)務(wù)時(shí),即便公司已有成熟的功能,但仍然無法有效地縮短業(yè)務(wù)創(chuàng)新和推進(jìn)的時(shí)間。
  • 各業(yè)務(wù)系統(tǒng)均以功能的概念在設(shè)計(jì),業(yè)務(wù)資源和開發(fā)資源會(huì)存在大量的重復(fù)消耗,在維護(hù)方面也存在諸多問題,并且不利于統(tǒng)一管理,并且也沒有相關(guān)消息觸達(dá)統(tǒng)計(jì)與數(shù)據(jù)分析能力。  為了適應(yīng)公司的業(yè)務(wù)發(fā)展以及未來不同場(chǎng)景下的消息應(yīng)用,我們將引入消息中心概念,抽取通用和穩(wěn)定的部分劃歸到消息中心來實(shí)現(xiàn),拆解模塊之間的職能,解決重復(fù)造輪子,反復(fù)改問題的現(xiàn)象。同時(shí)將不同的消息渠道整合,為不同的業(yè)務(wù)線提供不同場(chǎng)景的應(yīng)用支撐。基于此背景,我們搭建了一個(gè)基于內(nèi)部系統(tǒng)的消息中心。

圖片

3、設(shè)計(jì)與思考

3.1 業(yè)務(wù)系統(tǒng)架構(gòu)

應(yīng)用架構(gòu)這里就不展示了,因?yàn)槭腔诩夹g(shù)部中間件團(tuán)隊(duì)java應(yīng)用(nvwa)工廠生成標(biāo)準(zhǔn)COLA的多模塊項(xiàng)目模板應(yīng)用。

圖片

3.2 消息流程管理

圖片

消息通知的流程設(shè)計(jì),在各個(gè)業(yè)務(wù)線中通過消息中心提供的接口方法,將不同場(chǎng)景下的消息內(nèi)容提交到消息中心,消息中心進(jìn)行統(tǒng)一維護(hù)管理,并根據(jù)消息的來源和去向,適配相應(yīng)的推送邏輯:

圖片

  • 消息生產(chǎn):涉及到的場(chǎng)景很多,比如活動(dòng)、系統(tǒng)通知、業(yè)務(wù)流轉(zhuǎn)、過期提醒等;
  • 消息管理:對(duì)預(yù)發(fā)送消息的結(jié)構(gòu)和參數(shù)進(jìn)行校驗(yàn),并創(chuàng)建消息推送的任務(wù),維護(hù)任務(wù)級(jí)別的推送管理,跟蹤消息的狀態(tài)周期;
  • 消息處理:基于消息任務(wù)的結(jié)構(gòu),構(gòu)建消息推送的主體內(nèi)容,并對(duì)接多個(gè)發(fā)送渠道,實(shí)現(xiàn)通知的高效觸達(dá);
  • 定時(shí)任務(wù):消息可以直接即時(shí)推送,但如果是夜間定時(shí)任務(wù)觸發(fā),則要考慮推送延遲問題,將消息放在指定時(shí)段投遞;
  • 渠道對(duì)接:通常不同的渠道意味著不同的場(chǎng)景,例如監(jiān)控推送飛書,郵件走email,業(yè)務(wù)則應(yīng)用內(nèi)通知;

在整個(gè)流程中涉及到的模塊比較多,狀態(tài)的流轉(zhuǎn)也很復(fù)雜,但是通過消息中心進(jìn)行統(tǒng)一標(biāo)準(zhǔn)管理和流入流出的跟蹤,也可以提供清晰的生命周期監(jiān)控和維護(hù)。大部分的消息通知機(jī)制都可以容忍一定的延遲性,所以消息中心完全可以解耦各個(gè)流程,引入MQ隊(duì)列或者異步機(jī)制,業(yè)務(wù)方只需要將請(qǐng)求發(fā)送到消息中心,之后由消息中心統(tǒng)一調(diào)度和管理即可。

3.3 數(shù)據(jù)模型

圖片

3.4 飛書通道與業(yè)務(wù)系統(tǒng)對(duì)接過程中遇到的問題

3.4.1 老應(yīng)用有增量消息需接入效率消息中心,效率消息中心該如何解決歷史消息轉(zhuǎn)發(fā)及復(fù)雜交互類型消息的事件回調(diào)。

圖片

飛書側(cè)機(jī)器人回調(diào)地址只能填寫一個(gè),歷史的應(yīng)用已經(jīng)對(duì)接過飛書平臺(tái)進(jìn)行發(fā)消息,對(duì)于系統(tǒng)增量消息想接入消息中心應(yīng)該怎么解決,在不影響老系統(tǒng)增量消息接入消息中心的又不影響歷史消息回調(diào)的情況下,消息中心采用了轉(zhuǎn)發(fā)的方式去兼容歷史的消息回調(diào)。下面是飛書回調(diào)流程:

圖片

3.4.2 如何支持飛書通道動(dòng)態(tài)內(nèi)容消息,消息中心如何去做更友好的兼容適配?

動(dòng)態(tài)消息內(nèi)容 和 靜態(tài)消息內(nèi)容 指的是消息(如郵件、短信、通知等)中的內(nèi)容。

靜態(tài)消息內(nèi)容是指在發(fā)送消息時(shí)事先準(zhǔn)備好的、不會(huì)發(fā)生變化的消息內(nèi)容,比如營(yíng)銷郵件、歡迎短信、通知公告等。這些內(nèi)容在每次發(fā)送時(shí)都是一樣的,不會(huì)根據(jù)接收者的情況、時(shí)間等因素而發(fā)生變化。

而動(dòng)態(tài)消息內(nèi)容則會(huì)根據(jù)接收者的情況、時(shí)間等因素而實(shí)時(shí)生成,以提供更好的個(gè)性化服務(wù)。動(dòng)態(tài)消息內(nèi)容的例子包括訂單確認(rèn)郵件、賬戶余額提醒短信、預(yù)約成功通知等。這些消息內(nèi)容需要根據(jù)接收者的訂單信息、賬戶信息、預(yù)約信息等動(dòng)態(tài)生成。

總之,靜態(tài)消息內(nèi)容是在發(fā)送消息前準(zhǔn)備好的、不會(huì)發(fā)生變化的消息內(nèi)容,而動(dòng)態(tài)消息內(nèi)容是根據(jù)接收者的情況、時(shí)間等因素而實(shí)時(shí)生成的消息內(nèi)容,以提供更好的個(gè)性化服務(wù)。

圖片

圖片

目前跟業(yè)務(wù)系統(tǒng)對(duì)接的消息內(nèi)容,99%都屬于靜態(tài)消息內(nèi)容,相對(duì)于那種較復(fù)雜的動(dòng)態(tài)消息內(nèi)容(圖一折線圖,圖二動(dòng)態(tài)表單等動(dòng)態(tài)數(shù)據(jù))去做動(dòng)態(tài)數(shù)據(jù)渲染。消息中心對(duì)于動(dòng)態(tài)內(nèi)容消息渲染,解決方案是在模板功能里面抽象了一層消息內(nèi)容解析引擎,模板引擎采用的是Apache 軟件基金會(huì)下的一個(gè)開源 Java 模板引擎框架(VelocityEngine)該引擎用于生成 HTML、XML、JSON、CSV 等文件格式的文本內(nèi)容。功能非常強(qiáng)大,感興趣的同學(xué)可以去了解一下。下面拿個(gè)簡(jiǎn)單動(dòng)態(tài)消息模板舉例:

a. API接口組裝消息體

{
  "reachType": 2,
  "templateCode": "*******",
  "sendTime": 1687163457335,
  "reachList": [
    {
      "contentParamList": [
        {
          "key": "addCourseCount", // 動(dòng)態(tài)參數(shù)[新增課程總數(shù) (30)]
          "value": "30"
        },
        {
          "key": "lastWeekNewCourseCount", // 動(dòng)態(tài)參數(shù)[上周上新課程數(shù)量 (20)]
          "value": "20"
        },
        {
          "key": "dataList", // 動(dòng)態(tài)參數(shù),數(shù)據(jù)格式用戶可自定義
          "value": "[{\"courseName\":\"測(cè)試課程內(nèi)容1\",\"courseUrl\":\"https://t1-iwork-rdc.shizhuang-inc.net/rdc/desk\"},{\"courseName\":\"測(cè)試課程內(nèi)容2\",\"courseUrl\":\"https://t1-iwork-rdc.shizhuang-inc.net/rdc/desk\"}] "
        }
      ],
      "receiverId": "*******"
    }
  ]
}

b. 使用VelocityEngine語法解析

<code>
#set($myList=$dataList) // api接口傳過來的參數(shù)
#set($result = '')
#foreach($item in $myList) // 拼接消息內(nèi)容
#set($result = $result+'['+$item.courseName+']'+'('+$item.courseUrl+')'+'\n') 
#end
#set($growthCnotallow="**新人成長(zhǎng)(10)**\n$result") // 輸出最終消息內(nèi)容
</code>

圖片

c. 動(dòng)態(tài)渲染輸出

圖片

3.4.3 在消息中心平臺(tái)推送大規(guī)模消息,如何去跟業(yè)務(wù)系統(tǒng)的機(jī)器人去做平衡而不觸發(fā)飛書平臺(tái)限流

業(yè)務(wù)場(chǎng)景:在一個(gè)陽光明媚的早上,業(yè)務(wù)同學(xué)用潮人研習(xí)社的機(jī)器人給公司用戶推送了chatgpt的學(xué)習(xí)先關(guān)的內(nèi)容,消息推送觸達(dá)竟然花費(fèi)了一個(gè)1多小時(shí)。

圖片

問題分析:沒辦法,做為技術(shù)boy,只能埋頭去尋找根因,主要有以下幾點(diǎn)

圖片

  1. 如上圖所示,每次消息推送都要做獲取token這個(gè)動(dòng)作,顯然獲取token這個(gè)動(dòng)作是可以優(yōu)化的。基于飛書返回的失效時(shí)間做近端緩存。
  2. 消息推送接口雖啟用了異步推送,但是在一個(gè)消息體里面有很多觸達(dá)用戶時(shí),沒有進(jìn)行分組,底層推送給飛書時(shí)還是串行在推消息(這里沒有采用飛書的批量發(fā)消息接口,是因?yàn)樵诋a(chǎn)品側(cè)有個(gè)功能要去統(tǒng)計(jì)單個(gè)用戶已讀未讀的數(shù)據(jù),用批量推送的話,具體到用戶粒度的已讀未讀數(shù)據(jù)飛書是不支持的。另外一個(gè)原因就是飛書的機(jī)器人不是集中在消息中心進(jìn)行消息推送,需要考慮飛書側(cè)對(duì)某個(gè)機(jī)器人消息推送做限流的問題,一旦使用了某個(gè)業(yè)務(wù)系統(tǒng)的機(jī)器人進(jìn)行批量或并發(fā)推送,可能會(huì)導(dǎo)致業(yè)務(wù)系統(tǒng)業(yè)務(wù)消息推送(限流)異常)。

優(yōu)化思路:

針對(duì)上面2個(gè)問題的具體分析,主要是對(duì)問題2做了對(duì)應(yīng)的優(yōu)化,優(yōu)化思路主要是分治思想,針對(duì)大批量推送消息場(chǎng)景對(duì)用戶進(jìn)行分組,充分利用操作系統(tǒng)的多核優(yōu)勢(shì)。把分組的任務(wù)提交到異步消息隊(duì)列,通過自產(chǎn)自消的方式來提升消息觸達(dá)效率。

結(jié)果:

基于上面的思路去優(yōu)化并測(cè)試,效果是異常的明顯,之前推送消息需花費(fèi)1個(gè)多小時(shí),現(xiàn)在10分鐘(這里的觸達(dá)時(shí)效瓶頸主要是飛書側(cè),飛書對(duì)消息推送接口做了限流(1s并發(fā)只能50且1min上限1000))就可以全部觸達(dá)了。

4、總結(jié)

4.1 學(xué)會(huì)聆聽

當(dāng)完成整個(gè)消息中心的設(shè)計(jì)后,要聽取他人意見,學(xué)會(huì)聆聽,因?yàn)橥瓿蛇@件事其實(shí)并不難。另外在網(wǎng)上也可以找到很多開源產(chǎn)品可借鑒,但是完全拿來主義不一定適合我們自己業(yè)務(wù)。所以需要跟PM、同事討論,聽取意見。再者消息中心未來是需要長(zhǎng)期與其它部門及產(chǎn)品協(xié)調(diào)溝通的,如果一開始在做的時(shí)候就沒有與其他人去交流或技術(shù)方案討論,那么后期由于業(yè)務(wù)拓展,很有可能整體架構(gòu)很容易被推翻重構(gòu)。

4.2 結(jié)語

對(duì)于消息中心來說,根據(jù)實(shí)際業(yè)務(wù)線的豐富度,相應(yīng)應(yīng)用場(chǎng)景也會(huì)更加復(fù)雜,所以我們?cè)谠O(shè)計(jì)消息的落地場(chǎng)景時(shí),對(duì)于不同場(chǎng)景的適用性挑戰(zhàn)也會(huì)增大。但殊途同歸,基于降本增效去做更多思考,總歸會(huì)讓價(jià)值落地。

責(zé)任編輯:武曉燕 來源: 得物技術(shù)
相關(guān)推薦

2022-12-23 08:03:45

西瓜業(yè)務(wù)SEO前端

2017-10-23 12:55:46

項(xiàng)目設(shè)計(jì)師流程

2024-02-29 07:42:00

數(shù)據(jù)系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)處理

2021-04-13 07:58:38

背包代碼模式

2023-03-06 11:35:55

經(jīng)營(yíng)分析體系

2023-10-30 07:30:08

VeCDP火山引擎

2022-01-17 13:31:53

value背包解法

2022-03-15 11:51:00

決策分析模型

2022-06-07 15:09:21

實(shí)踐研發(fā)IDE

2019-07-31 10:18:17

Web 開發(fā)Python

2017-05-27 09:23:10

IOS框架APP框架代碼

2022-06-13 07:02:02

Zadig平臺(tái)自動(dòng)化

2019-10-22 08:12:49

消息隊(duì)列分布式系統(tǒng)

2023-11-15 08:14:35

2017-10-30 09:09:41

2024-09-26 10:19:15

2022-10-14 16:25:50

數(shù)據(jù)可視化大屏搭建BI平臺(tái)

2021-01-27 07:24:38

TypeScript工具Java

2016-11-28 16:23:23

戴爾

2023-02-27 18:31:20

架構(gòu)服務(wù)監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美激情综合网 | 亚洲精品888 | 日韩网站免费观看 | 亚洲一区二区三区欧美 | 国产日韩欧美激情 | 欧美性生交大片免费 | 欧美亚洲国产精品 | 拍拍无遮挡人做人爱视频免费观看 | 99精品久久久 | 日本成人毛片 | 亚洲国产成人精品女人 | 久久久久久中文字幕 | 欧美在线视频一区二区 | 黄色大全免费看 | 欧美成人一级 | 欧洲免费视频 | 暖暖日本在线视频 | 国产一区二区三区久久久久久久久 | аⅴ资源新版在线天堂 | 欧美日韩成人在线 | 成人综合一区 | 久久精品视频在线观看 | 韩国av一区二区 | 日韩成人免费 | 欧美国产精品一区二区三区 | 中文字幕电影在线观看 | 午夜影院 | 91精品国产91久久久久久吃药 | 99精品视频在线观看 | 欧美日韩精品中文字幕 | 男女那个视频 | 日韩电影一区 | 日本a网站| 日韩午夜一区二区三区 | av永久免费| 亚洲精品66| 国产欧美精品区一区二区三区 | 91精品国产日韩91久久久久久 | 日韩在线一区二区三区 | 亚洲欧美日韩一区二区 | 亚洲高清在线 |