奈學教育rocketmq學習筆記1

   本文屬於奈學教育rocketmq學習筆記。主講老師陳東。

推薦在線觀看,效果更好。因爲不但講理論,更從實踐觸發,踩過哪些坑。

1.目錄

應用場景分析: 

使用topic管理。概念理解。

例子:運營活動靈活,修改頻繁。硬編碼頻繁修改不適用業務場景。

改進:使用mq統一訂閱,抽取出專門的businesslogic 專門調用核心業務。提升系統的穩定性。

當然,老師額外講了一個優化點:從這個點來看,的確是乾貨。

   怎麼實現一個連續5天登錄送獎勵的優化。

  如果默認:每次登錄都記錄。那麼記錄很多,而且判斷複雜。

優化1:想辦法每天記錄爲一條。

優化2: 使用bimmap:每天1位,累計使用:位運算《1+1. 推薦16進制。

 

使用mq:解耦。各個業務訂閱自己業務關注的topic。進而處理

 

三大場景: 業務解耦、異步調用、流量削峯 

提升穩定性,但不是替代rpc,因爲mq有全局性問題。

對於下單業務場景:

對於必須同步的場景:風控攔截、扣減庫存是必須的rpc. 後面的非必要的同步,可以走異步mq。

秒殺的業務場景:

綜合考慮:

該同步同步,該異步就異步,不能完全替代RPC。

影響點: 系統複雜度、可用性。排查問題難度:(根據mq能追蹤到消費者)推薦調用鏈

這塊是評估問題的點,就是權衡的維度。對於擴展思路很有用。

所謂成熟就是大廠發展了幾年,坑都踩過了,渠去 哪裏查資料。

老師額外提了下:順序性如何實現,就是放到一個隊列。單線程消費。是個取巧的實現。

上面的圖:有主從master\slave, 有分佈式:master1,master2   ,體現了災備;

           註冊信息在nameserver。

  這個圖的nameserver獨立的,所以沒法選主。

刷盤指flush操作,真正落盤。

同步刷盤+同步雙寫。 最可靠。

topic-->broker->matser

commitlog 順序追加寫

怎麼消費呢?有 dispatch線程讀取後按照topic放到 consumerQueue,

隊列裏面存儲的不是消息的內容,而是commitlog的offset,跟大小,這樣就能找到對應的內容。

maxoffset用於寫入新的。

consomeoffset 指消費的位置。

順序寫,隨機讀,如何保證消費性能?

kafka 順序寫,順序讀,所以性能很高。

切分,就是縮小隨機讀的範圍。mmap 使用虛擬內存。ssd提升硬件性能。

生產方式:

同步、異步、單向

根據也無需求提供多種方式去選擇。

push:實時性高,但是可能積壓。

pull:實時性不好,可能有大量無效請求。

group內競爭,group間廣播

前提:每個隊列自能一個消費者,不能多個消費者都消費同一個隊列。

 

這個圖體現了上次分配結果對比,紅色是沒有的去掉,綠色是已經有的,白色是新分配的,最後生成新的隊列。

新的問題:新加入的consumer如何實現?

老師的講解還是不錯的,快速入門,從總體上熟悉mq的架構,有個整體印象更容易串起來。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章