前兩天看了篇文章,我也轉(zhuǎn)發(fā)過來了妄均,說的feed流框架柱锹,看著了就搞一搞哪自,涉及到的技術(shù)也蠻實(shí)用的。
一禁熏、主流架構(gòu)
主流架構(gòu)
上圖是對Feed流的最簡單抽象壤巷,完成一個(gè)從生產(chǎn)者向消費(fèi)者傳遞消息的過程。那看完這個(gè)過程先來建立三個(gè)項(xiàng)目瞧毙,分別對應(yīng)這三個(gè)模塊胧华。
生產(chǎn)模塊
1.1 業(yè)務(wù)場景
用微博舉例子,消息生產(chǎn)者就是千百萬正在客戶端發(fā)推文的用戶宙彪【囟客戶端的推文到達(dá)后端的server之后,微博系統(tǒng)需要讓其他一些關(guān)注了這部分推主的用戶在短時(shí)間內(nèi)收到這部分消息释漆。
為什么說是短時(shí)間內(nèi)而不是實(shí)時(shí)
理由有很多悲没,簡單來講,消費(fèi)者端并不都是實(shí)時(shí)在線男图,而且同時(shí)也需要推送給可能會關(guān)聯(lián)到的用戶(例如一些品牌的關(guān)聯(lián)品牌或者個(gè)人興趣推薦)示姿。何況百萬級QPS的同步請求非常的耗資源、服務(wù)器一旦宕機(jī)消息就會丟失逊笆、體驗(yàn)會很不好栈戳。(這段是我編的)
1.2 設(shè)計(jì)思路
生產(chǎn)者模塊需要抗住超高的并發(fā)量,所以處理的業(yè)務(wù)需要盡可能的少难裆。
所以后端接口在接到請求后子檀、經(jīng)過簡單的處理后轉(zhuǎn)發(fā)至消息隊(duì)列中,本項(xiàng)目中使用的是kafka乃戈。
1.3 實(shí)現(xiàn)
(我會同步更新到github上)
https://github.com/nds15763/Feed