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

微服務消息代理選型:Redis、Kafka、RabbitMQ

開發 前端 Kafka Redis
在為微服務使用異步通信時,通常使用消息代理。代理確保不同微服務之間的通信可靠穩定,消息在系統內得到管理和監控,并且消息不會丟失。

 [[420340]]

在為微服務使用異步通信時,通常使用消息代理。代理確保不同微服務之間的通信可靠穩定,消息在系統內得到管理和監控,并且消息不會丟失。您可以從幾個消息代理中選擇,它們的規模和數據功能各不相同。這篇博文將比較三個最受歡迎的代理brokers:RabbitMQ、 Kafka 和 Redis 。

但首先,讓我們了解一下微服務通信。

微服務通信:同步和異步

微服務之間有兩種常見的通信方式:同步和異步。在同步通信中,調用方在發送下一條消息之前等待響應,它作為HTTP之上的REST協議運行。相反,在異步通信中,消息是在不等待響應的情況下發送的。這適用于分布式系統,通常需要消息代理來管理消息。

您選擇的通信類型應考慮不同的參數,如如何構造微服務、設置什么基礎設施、延遲、規模、依賴性和通信目的。異步通信的建立可能更加復雜,并且需要向堆棧中添加更多的組件,但是將異步通信用于微服務的優點大于缺點。

異步通信優勢

首先也是最重要的是,異步通信從定義上講是無阻塞的。它還支持比同步操作更好的擴展。第三,在微服務崩潰的情況下,異步通信機制提供了各種恢復技術,通常更好地處理與崩潰相關的錯誤。此外,當使用代理而不是REST協議時,接收通信的服務實際上不需要相互了解。甚至可以在舊服務運行很長時間后引入新服務,即更好的解耦服務。

最后,在選擇異步操作時,您可以提高將來創建中心發現、監視、負載平衡甚至策略實施器的能力。這將為您的代碼和系統構建提供靈活性、可伸縮性和更多功能。

選擇正確的消息代理

異步通信通常通過消息代理進行管理。還有其他方法,比如aysncio,但它們更為稀缺和有限。

在選擇執行異步操作的代理時,應考慮以下幾點:

1. Broker Scale–系統中每秒發送的消息數。

2. 數據持久性–恢復消息的能力。

3. 消費者能力–brokers是否能夠管理一對一和/或一對多消費者。

一對一:

一對多:

我們查看了最新和最好的服務,以找出這三個類別中哪家提供商最強。

比較不同的消息代理

RabbitMQ(AMQP)

規模:根據配置和資源,這里的大概速度約為每秒50K味精。

持久化:支持持久性和暫時性消息。

一對一vs一對多消費者:兩者皆有。

RabbitMQ于2007年發布,是首批創建的通用消息代理之一。它是一個開源軟件,通過實現高級消息隊列協議(AMQP),通過點對點和發布子方法來傳遞消息。它旨在支持復雜的路由邏輯。

有一些托管服務允許您將其用作SaaS,但它不是本機主要云提供商堆棧的一部分。RabbitMQ支持所有主要語言,包括Python、Java、.NET、PHP、Ruby、JavaScript、Go、Swift等。

在持久模式下可能會出現一些性能問題。

Kafka

規模:每秒最多可發送數百萬條消息。

持久化:是的。

一對一vs一對多消費者:只有一對多(乍一看似乎很奇怪,對吧?!)。

Kafka由Linkedin于2011年創建,用于處理高吞吐量、低延遲的處理。作為一個分布式流媒體平臺,Kafka復制了發布-訂閱服務。它提供數據持久性并存儲記錄流,使其能夠交換高質量的消息。

Kafka在Azure、AWS和Confluent上管理SaaS。他們都是Kafka計劃的創造者和主要貢獻者。Kafka支持所有主要語言,包括Python、Java、C/C++、Clojure、.NET、PHP、Ruby、JavaScript、Go、Swift等。

Redis

規模:每秒最多可發送一百萬條消息。

持久化:基本上不是——它是內存中的數據存儲。

一對一vs一對多消費者:兩者皆有。

Redis與其他消息代理稍有不同。Redis的核心是內存中的數據存儲,可以用作高性能鍵值存儲或消息代理。另一個區別是Redis沒有持久性,而是將其內存轉儲到磁盤/DB中。它也非常適合實時數據處理。

最初,Redis不是一對一和一對多。然而,自從Redis 5.0推出pub-sub以來,功能得到了提升,一對多成為了一種現實選擇。

每個用例的消息代理

我們介紹了RabbitMQ、卡夫卡和Redis的一些特性。這三種動物都屬于這一類,但如上所述,它們的運作方式截然不同。下面是我們根據不同的用例為正確的MessageBroker提供的建議。

短消息:Redis

Redis的內存數據庫幾乎完全適合于不需要持久性的短消息用例。因為它提供了極快的服務和內存功能,Redis是短保留消息的完美選擇,在短保留消息中,持久性并不重要,您可以容忍一些損失。隨著Redis streams在5.0中的發布,它也是一對多用例的候選者,這是由于限制和舊的發布訂閱功能而絕對需要的。

大量數據:Kafka

Kafka是一個高吞吐量的分布式隊列,用于長時間存儲大量數據。Kafka非常適合于需要持久性的一對多用例。

復雜路由:RabbitMQ

RabbitMQ是一個較老但成熟的代理,具有許多支持復雜路由的特性和功能。當所需速率不高(超過數萬msg/秒)時,它甚至支持復雜的路由通信。

考慮你的軟件棧

當然,最后要考慮的是您當前的軟件堆棧。如果您正在尋找一個相對簡單的集成過程,并且不希望在堆棧中維護不同的代理,那么您可能更傾向于使用堆棧已經支持的代理。

例如,如果您在RabbitMQ之上的系統中使用芹菜作為任務隊列,您將有動力使用RabbitMQ或Redis,而不是Kafka,后者不受支持,需要一些重寫。

 

責任編輯:張燕妮 來源: 老K的Java博客
相關推薦

2024-04-03 11:36:09

KafkaRabbitMQ架構

2022-02-13 23:04:28

RedisRabbitMQKafka

2023-09-06 14:11:03

數據庫Redis消息隊列

2019-04-11 10:26:15

架構運維技術

2019-09-23 10:47:52

Kafka架構微服務

2020-04-02 10:37:55

微服務架構數據

2021-01-04 09:35:55

微服務架構配置中心

2019-05-29 14:49:02

KafkaRocketMQRabbitMQ

2020-11-25 09:56:48

架構運維技術

2011-08-17 11:26:10

2023-08-27 16:13:50

架構微服務器

2022-05-31 08:21:07

MQ使用場景消費消息

2024-09-18 07:00:00

消息隊列中間件消息隊列

2021-02-24 14:01:13

微服務開發框架

2025-01-06 00:00:01

KratosGo微服務

2017-12-20 15:37:39

Spring Clou微服務架構

2023-03-27 15:39:53

微服務架構REST

2022-03-23 09:00:00

微服務KafkaChronicle

2020-09-11 09:44:04

微服務分布式鏈路

2023-06-20 08:59:25

微服務注冊中心運維
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色片在线观看 | 日韩一级免费观看 | 国产乱码精品一区二区三区中文 | 国内精品视频免费观看 | 久久精品欧美一区二区三区麻豆 | 精品日韩一区 | 精品国产乱码久久久久久丨区2区 | 最近中文字幕在线视频1 | 天天久久 | 精品欧美一区二区在线观看欧美熟 | 欧美精品在线观看 | 欧美综合网 | 日韩久久久久久久久久久 | 亚洲综合色婷婷 | 亚洲www | 精品熟人一区二区三区四区 | 日本一区二区三区精品视频 | 久久久久国产精品午夜一区 | 久久人人网 | 国产精品美女久久久久久久久久久 | 免费黄色大片 | 欧美在线天堂 | 日韩欧美在线一区 | 日韩在线观看中文字幕 | 亚洲一区影院 | 成年人精品视频在线观看 | 在线观看国产精品视频 | a在线观看| 免费观看av | 日韩在线观看网站 | 日韩成人免费av | 国产欧美综合在线 | 日韩一二三区视频 | 精品亚洲国产成av人片传媒 | 欧美xxxx性 | 亚洲国产一区二区视频 | 日韩一区二区三区四区五区 | 色婷婷亚洲 | 中文字幕视频网 | 国产精品国产a级 | 国产视频1区 |