1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Kafka又笨又重,為啥不選Redis?

        共 2379字,需瀏覽 5分鐘

         ·

        2022-05-29 10:40

        往期熱門文章:

        1、IDEA公司再發(fā)新神器!超越 VS Code 騷操作!
        2、我懷疑這是 IDEA 的 BUG,但是我翻遍全網(wǎng)沒找到證據(jù)!
        3、Spring MVC 中的 Controller 是線程安全的嗎?
        4、Gitee 倒下了???
        5、再見付費(fèi)的 TeamViewer,這款國產(chǎn)輕量級(jí)遠(yuǎn)程控制軟件是絕佳的替代品!

        文章來源:【公眾號(hào):小姐姐味道】

        目錄

        • 前言
        • Redis 很強(qiáng)
        • Redis Can up

        • 還有好處

        • 總結(jié)

        前言


        Kafka 多牛啊,老少通吃,風(fēng)光無限,從業(yè)務(wù)服務(wù)到大數(shù)據(jù),無所不能。

        但,即使它這么牛 x,在不少項(xiàng)目中,依然能看到很多的替代品,比如 RabbitMQ、RocketMQ、Pulsar 等。

        等等,先不說這些同質(zhì)的競(jìng)爭(zhēng)品。在我見到的很多項(xiàng)目里,經(jīng)常有一只亂入的消息隊(duì)列,那就是 Redis。還別說,使用還挺廣泛的。
        是他們傻?還是單純的水平不夠?

        Redis 很強(qiáng)


        因?yàn)?Kafka 的對(duì)手是 Redis!

        Redis 很強(qiáng),滿身的肌肉,幾乎是萬能的。如果你的內(nèi)存足夠大,你甚至可以把所有的數(shù)據(jù)放到內(nèi)存中。

        除了常見的 5 種常見的數(shù)據(jù)結(jié)構(gòu),Redis 還支持非常多的擴(kuò)展數(shù)據(jù)結(jié)構(gòu),其中就有“借鑒”Kafka 所實(shí)現(xiàn)的 Stream 類型。

        Stream 就是低配版的 Kafka,有 Kafka 經(jīng)驗(yàn)的,玩起它來自然不在話下。相對(duì)于比較老舊的 LPUSH/BRPOP、PUB/SUB 模式,Stream 在這個(gè)場(chǎng)景中完勝。
        可以看到,Streamn 的生產(chǎn)消費(fèi)模式,幾乎和 Kafka 是一個(gè)模子出來的,竟然還有消費(fèi)組的概念。但 Stream 并沒有 Partition 的概念,所以它是個(gè)低配版的 Kafka。

        我們來看看官網(wǎng)的說明:

        Consumer groups were initially introduced by the popular messaging system Kafka (TM). Redis reimplements a similar idea in completely different terms, but the goal is the same: to allow a group of clients to cooperate in consuming a different portion of the same stream of messages.


        Redis Can up


        在很多軟件開發(fā)中,尤其是把軟件部署到甲方的機(jī)器上,引入一個(gè)新的組件,成本是巨大的。這方面,眾多外包和 OD 們應(yīng)該比較清楚它的兇殘。

        對(duì)于這類系統(tǒng),甚至是發(fā)展勢(shì)頭還不錯(cuò)的中小公司來說,對(duì)于消息的需求并沒有那么大的要求。

        與其引入一個(gè)新的 Kafka 組件,不如直接用項(xiàng)目中所存在的 Redis 組件來完成工作。

        我們還是來回顧一下消息隊(duì)列的作用:
        • 削峰:用于承接超出業(yè)務(wù)系統(tǒng)處理能力的請(qǐng)求,使業(yè)務(wù)平穩(wěn)運(yùn)行。這能夠大量節(jié)約成本,比如某些秒殺活動(dòng),并不是針對(duì)峰值設(shè)計(jì)容量。

        • 緩沖:在服務(wù)層和緩慢的落地層作為緩沖層存在,作用與削峰類似,但主要用于服務(wù)內(nèi)數(shù)據(jù)流轉(zhuǎn)。比如批量短信發(fā)送。

        • 解耦:項(xiàng)目尹始,并不能確定具體需求。消息隊(duì)列可以作為一個(gè)接口層,解耦重要的業(yè)務(wù)流程。只需要遵守約定,針對(duì)數(shù)據(jù)編程即可獲取擴(kuò)展能力。

        • 冗余:消息數(shù)據(jù)能夠采用一對(duì)多的方式,供多個(gè)毫無關(guān)聯(lián)的業(yè)務(wù)使用。

        • 健壯性:消息隊(duì)列可以堆積請(qǐng)求,所以消費(fèi)端業(yè)務(wù)即使短時(shí)間死掉,也不會(huì)影響主要業(yè)務(wù)的正常進(jìn)行。


        不好意思,除了內(nèi)存容量小一點(diǎn),上面說的這些需求,Redis 的 Stream 全部能夠完成,包括對(duì)于緩存系統(tǒng)來說比較難得的持久化,它一樣支持。

        那還猶豫個(gè)毛!怎么簡(jiǎn)單怎么玩!

        還有好處


        Kafka 為了增加吞吐量,可以說用盡了心思,比如:
        • 使用 Filesystem Cache PageCache 緩存來減少與磁盤的交互
        • 使用順序?qū)憗碓黾訉懭氲耐掏铝?/span>
        • 使用 Zero-copy 和 MMAP 來減少內(nèi)存交換
        • 使用批量,以流的方式進(jìn)行交互,直頂網(wǎng)卡上限
        • 使用拉模式進(jìn)行消息的獲取消費(fèi),與消費(fèi)端處理能力相符

        這么一優(yōu)化下來,雖然功能很強(qiáng)大,但同時(shí)膨脹的還有代碼加上軟件的體積。

        對(duì)于 Redis 來說,領(lǐng)域就在內(nèi)存里玩,不需要這么多花架子就可以達(dá)到比 Kafka 更高的速度。

        就連 partition 這個(gè)特性,也可以使用不同的 Key 劃分來實(shí)現(xiàn),性能自然是比 Kafka 高的。

        再一個(gè),就是使用簡(jiǎn)單。比如 XADD 指令、XLEN、XRANGE、XREAD 等,指令少且好理解,遠(yuǎn)比 Kafka 使用簡(jiǎn)單。

        這些優(yōu)點(diǎn)一匯聚,就不能抵擋它成為 MQ 中的香饃饃。

        總結(jié)


        簡(jiǎn)單、夠用好維護(hù),這么多優(yōu)點(diǎn),為什么不選 Redis 呢?給客戶上個(gè)又笨又重的 Kafka、Pulsar,來給自己添麻煩,何必呢?

        當(dāng)然,以上的評(píng)價(jià)是對(duì)于外包、項(xiàng)目類公司來說的。如果你的公司產(chǎn)品是持續(xù)迭代的,持續(xù)優(yōu)化的,又有量,一次性到位選擇成熟的額消息隊(duì)列才是正確的選擇。

        所以,把 Redis 的 Stream 用在正確的項(xiàng)目,正確的地方的人,根本就不傻,他們大智若愚,堪負(fù)重任!


        往期熱門文章:

        1、Mybatis-Plus官方發(fā)布分庫分表神器,一個(gè)依賴輕松搞定!
        2、Java 中的 BigDecimal,80% 的人竟然都用錯(cuò)了。。。
        3、從5秒優(yōu)化到1秒,系統(tǒng)飛起來了...
        4、Java/Spring/Dubbo三種SPI機(jī)制,誰更好?
        5、我用Java幾分鐘處理完30億個(gè)數(shù)據(jù)...
        6、炸了!Java多線程批量操作,居然有人不做事務(wù)控制
        7、Spring Boot 中實(shí)現(xiàn)跨域的 5 種方式,你一定要知道!
        8、終于用上分庫分表了!
        9、騰訊可視化, 低代碼生成器,正式開源!
        10、一行代碼解決緩存擊穿的問題

        瀏覽 68
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            尤物视频在线观看免费 | 韩国色网站 | 成年人性爱网站 | 女人做爰高潮时叫要精免费的视频 | 亚洲精品99久久精品爆乳 | 国产熟妇疯狂性做爰XXXⅩ网站 | 忘穿内裤被同桌摸到爽 | 久久伊人热| 草逼王| 息与子五十路翔田千里 |