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

怎么去選消息隊列?Kafka vs. RabbitMQ

數據庫
基于數據庫和基于Redis的消息隊列易于維護,如果它們無法滿足我們的需求,專用的消息隊列產品更好。接下來我們將比較兩個流行的選項。

在上周,我們討論了使用消息隊列的好處。然后我們回顧了消息隊列產品的發展歷史。如今,在項目中需要使用消息隊列時,Apache Kafka似乎是首選產品。然而,考慮到特定需求時,它并不總是最佳選擇。

基于數據庫的隊列

讓我們再次使用星巴克的例子。最重要的兩個需求是:

  • 異步處理,使收銀員可以在不等待的情況下接下一個訂單。
  • 持久性,以防出現問題時錯過顧客的訂單。

在這里,消息的順序不太重要,因為咖啡師經常批量制作相同的飲料。可擴展性也不是很重要,因為隊列受限于每個星巴克門店。

星巴克的隊列可以在數據庫表中實現。下面的圖表顯示了它的工作原理:

當收銀員接受一個訂單時,在數據庫支持的隊列中創建一個新訂單。然后收銀員可以繼續接受另一個訂單,而咖啡師則會批量獲取新的訂單。一旦訂單完成,咖啡師會在數據庫中標記為已完成。然后顧客可以在柜臺上取走他們的咖啡。

每天結束時可以運行一個維護作業來刪除已完成的訂單(即“DONE”狀態的訂單)。

對于星巴克的用例,一個簡單的數據庫隊列可以在不需要使用Kafka的情況下滿足需求。具有CRUD(創建-讀取-更新-刪除)操作的訂單表就可以勝任。

基于Redis的隊列

基于數據庫的消息隊列仍然需要開發工作來創建隊列表并從中讀取/寫入數據。對于預算有限且已經使用Redis進行緩存的小型創業公司,Redis也可以用作消息隊列。

有三種使用Redis作為消息隊列的方法:

  • 發布/訂閱(Pub/Sub)
  • 列表(List)
  • 流(Stream)

下面的圖表顯示了它們的工作原理。

發布/訂閱是方便的,但有一些傳遞限制。消費者訂閱一個鍵,當生產者向相同的鍵發布數據時,消費者會接收數據。限制在于數據最多只會傳遞一次。如果消費者關閉并且未接收到已發布的數據,則該數據會丟失。此外,數據不會持久保存在磁盤上。如果Redis宕機,所有發布/訂閱數據都會丟失。發布/訂閱適用于度量監視等情況,其中可以接受一些數據丟失。

Redis中的列表數據結構可以構建FIFO(先進先出)隊列。消費者使用BLPOP以阻塞模式等待消息,因此應該應用超時。等待相同列表的消費者形成一個消費者組,每個消息只由一個消費者消費。作為Redis數據結構,列表可以持久保存在磁盤上。

流解決了上述兩種方法的限制。消費者可以選擇從何處讀取消息 - 使用“$”表示新消息,“”表示特定消息ID,或使用“0-0”從開始讀取消息。

總而言之,基于數據庫和基于Redis的消息隊列易于維護。如果它們無法滿足我們的需求,專用的消息隊列產品更好。接下來我們將比較兩個流行的選項。

RabbitMQ vs. Kafka

對于需要可靠、可擴展和可維護的系統的大公司,在以下方面評估消息隊列產品:

  • 功能
  • 性能
  • 可擴展性
  • 生態系統

下面的圖表比較了兩種典型的消息隊列產品:RabbitMQ和Kafka。

工作原理

RabbitMQ的工作方式類似于消息中間件 - 它將消息推送給消費者,然后在確認后將其刪除。這避免了消息積壓,這是RabbitMQ認為有問題的。

Kafka最初是為大規模日志處理而構建的。它會保留消息直到過期,并允許消費者以自己的速度拉取消息。

語言和API

RabbitMQ是用Erlang編寫的,這使得修改核心代碼變得具有挑戰性。然而,它提供了非常豐富的客戶端API和庫支持。

Kafka使用Scala和Java,但也有針對流行語言(如Python、Ruby 和Node.js)的客戶端庫和API。

性能和可擴展性

RabbitMQ每秒可以處理數萬條消息。即使在更好的硬件上,吞吐量也不會大幅提高。

Kafka可以處理數百萬條每秒的消息,并具有很高的可擴展性。

生態系統

許多現代大數據和流式應用程序默認集成了Kafka。這使得它非常適合這些用例。

消息隊列用例

既然我們已經介紹了不同消息隊列的特點,讓我們看一些如何選擇正確產品的示例。

日志處理與分析

對于具有購物車、訂單和付款等服務的電子商務網站,我們需要分析日志以調查顧客訂單。

下面的圖表顯示了使用“ELK”堆棧的典型架構:

  • ElasticSearch - 為全文搜索索引日志
  • LogStash - 日志收集代理
  • Kibana - 用于搜索和可視化日志的用戶界面
  • Kafka - 分布式消息隊列

圖片圖片

責任編輯:趙寧寧 來源: 小技術君
相關推薦

2024-01-25 18:00:56

微服務系統KafkaRabbitMQ

2022-02-13 23:04:28

RedisRabbitMQKafka

2023-11-03 08:18:59

PostgresMySQL

2019-09-19 08:00:00

Visual StudVisual Stud編程語言

2019-05-29 14:49:02

KafkaRocketMQRabbitMQ

2021-01-13 16:04:07

網絡On-Prem托管

2023-07-10 09:18:39

Redis訂閱模型

2012-12-11 10:24:21

開放式封閉式云端

2024-11-20 15:43:27

2023-05-22 19:49:30

命令Linux

2020-08-25 09:14:17

對象存儲文件存儲塊存儲

2024-09-12 22:45:47

2019-04-02 15:07:51

API NginxZuul

2023-09-18 08:27:20

RabbitMQRocketMQKafka

2014-09-28 10:29:43

喬布斯施密特Android

2021-12-23 15:36:21

NASSANDAS

2017-06-27 15:08:05

大數據Apache SparKafka Strea

2025-02-18 16:00:00

代碼Python架構

2020-04-15 10:21:43

云計算AWSAzure

2021-08-30 11:36:23

微服務開發技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av资源中文在线 | 一级黄a| 亚洲精品91 | 日韩在线视频一区 | 国产女人精品视频 | 日韩av一区二区在线观看 | 国产精品一卡 | 国产成人99 | 丝袜久久 | 夜夜爽99久久国产综合精品女不卡 | 精品1区2区3区 | 亚洲黄色一级 | 国产精品美女在线观看 | 中文字幕一二三区 | 欧美日韩手机在线观看 | 午夜影院网站 | 欧美jizzhd精品欧美巨大免费 | 精品欧美一区二区三区久久久 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩一区二区免费视频 | 国产精品一区二区免费 | 成人精品一区二区 | 日本免费小视频 | 成人精品一区亚洲午夜久久久 | 在线中文字幕亚洲 | 夜夜草 | 色一阁 | 欧美xxxx性 | 中文字幕一区二区三区在线视频 | 亚洲第一在线视频 | 国产午夜精品视频 | 狠狠av| 亚洲精品一区二区三区在线 | 亚洲精品乱码久久久久久按摩 | 国产精品1区2区3区 欧美 中文字幕 | 精品综合 | 精品国产青草久久久久福利 | 在线日韩| 日韩在线不卡视频 | 日韩视频在线一区 | 国产精品久久一区二区三区 |