国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)「上篇」

v1 / 2514人閱讀

摘要:原文鏈接消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)上篇由于文章篇幅較長,而作者精力有限,不希望這么早就精盡人亡,故分成上下篇來寫消息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。更新于關(guān)聯(lián)文章消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)下篇如果本文對您有用請不要吝嗇你們的與這會大大支持我們繼續(xù)創(chuàng)作

原文鏈接:Bluesun | 消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)「上篇」

由于文章篇幅較長,而作者精力有限,不希望這么早就精盡人亡,故分成上下篇來寫消息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。上篇主要講的是一些概念,搞清楚我們要做的這個(gè)消息系統(tǒng)的主要內(nèi)容。而下篇主要講具體的實(shí)現(xiàn),會包括架構(gòu)設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì),業(yè)務(wù)流程詳細(xì)的實(shí)現(xiàn)等。

整個(gè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),并非我一人之力就可以完成的。這其中是同事們大家一起討論與商討的結(jié)果,而我只是把它細(xì)化,呈現(xiàn)出來。

我只是一個(gè)會思考的idea搬運(yùn)工。

產(chǎn)品分析

首先我們來看一下市場上關(guān)于消息的實(shí)現(xiàn)是怎么樣的。

簡書

簡書的消息系統(tǒng)主要分了兩種

簡信

提醒

簡信
簡信的性質(zhì)其實(shí)跟私信是一樣的,是用戶發(fā)送給用戶的一則消息,有具體的信息內(nèi)容。

提醒
而提醒,則是系統(tǒng)發(fā)送的一則消息,其文案格式是固定的,并且對特殊對象一般擁有超鏈接。

知乎

知乎跟簡書一樣,主要分了兩種:

私信

消息

私信
跟簡書一樣,使用戶發(fā)送給用戶的一則消息,也可以是管理員發(fā)送給用戶的消息。

消息
知乎的消息比簡書的提醒有過之而無不及,知乎會對多條相似的消息進(jìn)行聚會,以達(dá)到減輕用戶閱讀壓力的體驗(yàn)。

消息的三種分類

通過兩種產(chǎn)品的簡單分析,得出他們的消息有兩種分類,在這基礎(chǔ)上,我們再加上一種:公告。
公告的主要性質(zhì)是系統(tǒng)發(fā)送一則含有具體內(nèi)容的消息,站內(nèi)所有用戶都能讀取到這條消息。
所以,消息有三種分類:

公告 Announce

提醒 Remind

私信 Message

提醒的語言分析

我們從簡書取一組提醒樣本:

3dbe1bd90774 關(guān)注了你

magicdawn 喜歡了你的文章 《單點(diǎn)登錄的三種實(shí)現(xiàn)方式》

無良程序 喜歡了你的文章 《基于RESTful API 怎么設(shè)計(jì)用戶權(quán)限控制?》

alexcc4 喜歡了你的文章 《在Nodejs中貫徹單元測試》

你在《基于RESTful API 怎么設(shè)計(jì)用戶權(quán)限控制?》中收到一條 cnlinjie 的評論

你的文章《Session原理》已被加入專題 《ios開發(fā)》

分析句子結(jié)構(gòu),提醒的內(nèi)容無非就是

「誰對一樣屬于誰的事物做了什么操作」

「someone do something in someone"s something」

someone = 提醒的觸發(fā)者,或者發(fā)送者,標(biāo)記為sender
do something = 提醒的動作,評論、喜歡、關(guān)注都屬于一個(gè)動作,標(biāo)記為action
something = 提醒的動作作用對象,這就具體到是哪一篇文章,標(biāo)記為target
someone"s = 提醒的動作作用對象的所有者,標(biāo)記為targetOwner

這就清楚了,sender和targetOwner就是網(wǎng)站的用戶,而target是具體到哪一篇文章,如果提醒的對象不僅僅局限于文章,還有其他的話,就需要增加一項(xiàng)targetType,來標(biāo)記目標(biāo)是文章還是其他的什么。而action,則是固定的,整個(gè)網(wǎng)站會觸發(fā)提醒的動作可能就只有那幾樣:評論、喜歡、關(guān)注.....(或者其他業(yè)務(wù)需要提醒的動作)

消息的兩種獲取方式

推 Push

拉 Pull

以知乎為例
推的比較常見,需要針對某一個(gè)問題維護(hù)著一張關(guān)注者的列表,每當(dāng)觸發(fā)這個(gè)問題推送的條件時(shí)(例如有人回答問題),就把這個(gè)通知發(fā)送給每個(gè)關(guān)注者。

拉的相對麻煩一點(diǎn),就是推的反向,例如每個(gè)用戶都有一張關(guān)注問題的列表,每當(dāng)用戶上線的時(shí)候,對每個(gè)問題進(jìn)行輪詢,當(dāng)問題的事件列表出現(xiàn)了比我原本時(shí)間戳大的信息就進(jìn)行拉取。

而我們則根據(jù)消息的不同分類采用不同的獲取方式
通告和提醒,適合使用拉取的方式,消息產(chǎn)生之后,會存在消息表中,用戶在某一特定的時(shí)間根據(jù)自己關(guān)注問題的表進(jìn)行消息的拉取,然后添加到自己的消息隊(duì)列中,

信息,適合使用推的方式,在發(fā)送者建立一條信息之后,同時(shí)指定接收者,把消息添加到接收者的消息隊(duì)列中。

訂閱

根據(jù)提醒使用拉取的方式,需要維護(hù)一個(gè)關(guān)注某一事物的列表。
這種行為,我們稱之為:「訂閱」Subscribe

一則訂閱有以下三個(gè)核心屬性

訂閱的目標(biāo) target

訂閱的目標(biāo)類型 targetType

訂閱的動作 action

比如我發(fā)布了一篇文章,那么我會訂閱文章《XXX》的評論動作,所以文章《XXX》每被人評論了,就需要發(fā)送一則提醒告知我。

訂閱的規(guī)則還可以擴(kuò)展
我喜歡了一篇文章,和我發(fā)布了一篇文章,訂閱的動作可能不一樣。
喜歡了一篇文章,我希望我訂閱這篇文章更新、評論的動作。
而發(fā)布了一篇文章,我希望我只是訂閱這篇文章的評論動作。

這時(shí)候就需要多一個(gè)參數(shù):subscribReason
不同的subscribReason,對應(yīng)著一個(gè)動作數(shù)組,
subscribReason = 喜歡,對應(yīng)著 actions = [更新,評論]
subscribReason = 發(fā)布,對應(yīng)著 actions = [評論]

訂閱的規(guī)則還還可以擴(kuò)展
用戶可能會有一個(gè)自己的訂閱設(shè)置,比如對于所有的喜歡的動作,我都不希望接收。
比如Knewone的提醒設(shè)置

所以我們需要再維護(hù)一個(gè)表:SubscriptionConfig,來存放用戶的提醒設(shè)置。
并且,當(dāng)用戶沒有提醒設(shè)置的時(shí)候,可以使用系統(tǒng)提供的一套默認(rèn)設(shè)置:defaultSubscriptionConfig

聚合

如果我發(fā)布了一篇文章《XXX》,在我不在線的時(shí)候,被評論了10遍,當(dāng)我一上線的時(shí)候,應(yīng)該是收到十條信息類似于:「誰誰誰評論了你的文章《XXX》」?
還是應(yīng)該收到一條信息:「甲、乙、丙、丁...評論了你的文章《XXX》」?

知乎在聚合上做的很優(yōu)秀,要知道他們要實(shí)現(xiàn)這個(gè)還是挺有技術(shù)的:
知乎的消息機(jī)制,在技術(shù)上如何設(shè)計(jì)與規(guī)劃?
網(wǎng)站的消息(通知)系統(tǒng)一般是如何實(shí)現(xiàn)的?

關(guān)于這部分功能,我們還沒有具體的實(shí)現(xiàn)方法,暫時(shí)也無法講得更加詳細(xì)。⊙﹏⊙

五個(gè)實(shí)體

通過上面的分析,大概知道做這個(gè)消息系統(tǒng),需要哪些實(shí)體類:

用戶消息隊(duì)列 UserNotify

用戶 User

訂閱 Subscription

訂閱設(shè)置 SubscriptionConfig

消息 Notify

通告 Announce

提醒 Remind

信息 Message

行為分解

說了這么多,整理一下整個(gè)消息流程的一些行為:

系統(tǒng)或者管理員,創(chuàng)建消息

createNotify (make announce | remind | message)

用戶,訂閱消息,取消訂閱

subscribe, cancelSubscription

用戶管理訂閱設(shè)置

getSubscriptionConfig, updateSubscriptionConfig

用戶,拉取消息

pullNotify (pull announce | remind | message | all)

用戶,查詢消息隊(duì)列

getUserNotify(get announce | remind | message | all)

用戶閱讀消息

read

在本文的「下篇」我們來探討一下:模型怎么做、數(shù)據(jù)庫怎么設(shè)計(jì)、代碼結(jié)構(gòu)怎么來、一些邏輯上的時(shí)序圖應(yīng)該是怎么樣的。

---------------------- 更新于 2015/11/15 -----------------------

關(guān)聯(lián)文章:消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)「下篇」

如果本文對您有用
請不要吝嗇你們的Follow與Start
這會大大支持我們繼續(xù)創(chuàng)作

「Github」
MZMonster :@MZMonster
JC_Huang :@JerryC8080

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78925.html

相關(guān)文章

  • Android通知欄介紹適配總結(jié)(上篇

    摘要:修改記錄版本的通知欄消息功能上并未發(fā)生變化,右上角的縮減為了。增加了,允許可穿戴設(shè)備遠(yuǎn)程控制通知欄消息。鎖屏狀態(tài)下,可以控制通知欄消息的隱私程度。但是谷歌規(guī)定,自定義布局展示的通知欄消息最大高度是。具體適配不正常的機(jī)型有。 此文已由作者黎星授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。 由于歷史原因,Android在發(fā)布之初對通知欄Notification的設(shè)...

    fai1017 評論0 收藏0
  • 消息推送異常重發(fā)需要注意的點(diǎn)(上篇

    摘要:無證連接進(jìn)行異常記錄并關(guān)閉連接。離線消息檢測到上線立即推送這是消息推送需要實(shí)現(xiàn)的基本功能之一了,詳見代碼。主要功能協(xié)助進(jìn)行初始化,心跳包檢測,斷線自動重連消息推送的第二種方式在下篇中再編寫 消息重發(fā)中需要注意的問題 由于最近工作中接觸了比較多關(guān)閉消息推送以及異常重發(fā)機(jī)制的問題,終于得空總結(jié)一下經(jīng)驗(yàn) 目前接觸的消息推送分為兩種 主動推送:一般為websocket建立長連接實(shí)現(xiàn),此處網(wǎng)上...

    terro 評論0 收藏0
  • 消息系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)「下篇」

    摘要:比如消息小明喜歡了文章則文章指明所屬類型是文章小明當(dāng)然,還支持存儲公告和信息。如小明關(guān)注了產(chǎn)品的評論,數(shù)據(jù)表現(xiàn)為產(chǎn)品的小明的這樣,產(chǎn)品下產(chǎn)生的每一條評論,都會產(chǎn)生通知給小明了。 原文鏈接:BlueSun | 消息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)「上篇」 模型設(shè)計(jì) Notify id : {type: integer, primaryKey: true}, // 主鍵 ...

    simon_chen 評論0 收藏0
  • 架構(gòu) - 收藏集 - 掘金

    摘要:淺談秒殺系統(tǒng)架構(gòu)設(shè)計(jì)后端掘金秒殺是電子商務(wù)網(wǎng)站常見的一種營銷手段。這兩個(gè)項(xiàng)目白話網(wǎng)站架構(gòu)演進(jìn)后端掘金這是白話系列的文章。 淺談秒殺系統(tǒng)架構(gòu)設(shè)計(jì) - 后端 - 掘金秒殺是電子商務(wù)網(wǎng)站常見的一種營銷手段。 不要整個(gè)系統(tǒng)宕機(jī)。 即使系統(tǒng)故障,也不要將錯(cuò)誤數(shù)據(jù)展示出來。 盡量保持公平公正。 實(shí)現(xiàn)效果 秒殺開始前,搶購按鈕為活動未開始。 秒殺開始時(shí),搶購按鈕可以點(diǎn)擊下單。 秒殺結(jié)束后,按鈕按鈕變...

    Riddler 評論0 收藏0
  • 架構(gòu)~微服務(wù) - 收藏集 - 掘金

    摘要:它就是史上最簡單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過去消費(fèi)服務(wù),這篇文章主要講述通過去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請注明出處本文提綱一、自動配置二、自定義屬性三、ran...

    church 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<