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

如何在 .NET 中使用 Kafka

開發 架構 Kafka
Kafka 是一個開源的,分布式的,可擴展的,高性能的發布訂閱模式的消息中間件,如果你要構建一個處理海量數據的系統,那么 Kafka 將會是一個非常好的選擇,這篇文章我們將會討論如何基于 Kakfa 構建一個發布訂閱模式的程序。

[[386220]]

本文轉載自微信公眾號「碼農讀書」,作者 碼農讀書。轉載本文請聯系碼農讀書公眾號。

Kafka 是一個開源的,分布式的,可擴展的,高性能的發布訂閱模式的消息中間件,如果你要構建一個處理海量數據的系統,那么 Kafka 將會是一個非常好的選擇,這篇文章我們將會討論如何基于 Kakfa 構建一個發布訂閱模式的程序。

Kafka 架構

這一節中,先來看看 Kafka 的基礎架構以及相關術語,大體來說 Kafka 由下面幾個組件組成。

  • Kafka Cluster 一個或者多個服務器組成的集群
  • Producer 一個用于發布消息的組件。
  • Consumer 一個用于獲取并處理消息的組件。
  • ZooKeeper 一個中心化的協調組件,常用于保存分布式環境下各個節點的配置信息。

在 Kafka 中,數據的基本單元是 message,它是一個 key-value 鍵值對,kafka 會將所有的 message 轉換為 byte[],值得注意的是:生產者 和 消費者 以及 cluster 集群之間都是采用 tcp 協議通訊的,kafka 集群中的每一臺機器都被稱為代理(broker),你可以非常容易的向集群添加機器實現容量的橫向擴展。

下面的圖展示了 kafka 的基礎架構。

kafka 中的 topic 表示 message 的邏輯集合,如果不明白的話,你可以認為 topic 就是 category (分類),category 下自然就是歸類的 message,這些 message 是由 生產者 產生。

kafka server 中會包含一個或者多個 topics,每一個 topics 又可以包含一個或者多個 partitions(分區),partition 被定義為一個有序的消息序列,值得注意的是 partitions 是 kafka 能夠動態擴展的關鍵,換句話說 partition 可以分布在多個 kafka server 上,具體操作流程為:kafka 中的 生產者 將 message 推送到指定的 topic,訂閱該 topic 的 消費者 就可以拿到該消息。

Kafka 和 RabbitMQ 比較

Kafka 和 RabbitMQ 都是非常流行的,開源的 消息中間件,那什么時候應該選擇 Kakfa 而不是 RabbitMQ 呢?主要考慮如下幾點。

  • RabbitMQ 是由高性能語言 Erlang 編寫的,它擁有豐富的 路由機制 和強大的 消息確認機制, 同時 RabbitMQ 還提供了一個可視化的 WebUI 界面,可以通過它監視 RabbitMQ 的運行狀態,但如果你有大規模部署的需求,RabbitMQ 就沒有 Kafka 好使了,因為后者的擴容只需要增加 partitions 就可以了。
  • RabbitMQ Cluster 會存在經典的 腦裂問題,需要使用單獨的插件支持(federations)。
  • Kafka 在性能上遠超 RabbitMQ,單節點的 Kafka 能夠處理 10w/s 條記錄,而 RabbitMQ 大概只能處理 2w/s 條記錄。

構建 生產者 和 消費者

這一節我們來討論如何為 Kafka 構建生產者和消費者,這就需要構建兩個 Console 程序分別充當各自角色,大家可以用 nuget 安裝一下 kafka-net,命令如下:

  1. Install-Package kafka-net 

構建 生產者 Console

  1. static void Main(string[] args) 
  2.         { 
  3.             string payload ="Welcome to Kafka!"
  4.             string topic ="IDGTestTopic"
  5.             Message msg = new Message(payload); 
  6.             Uri uri = new Uri("http://localhost:9092"); 
  7.             var options = new KafkaOptions(uri); 
  8.             var router = new BrokerRouter(options); 
  9.             var client = new Producer(router); 
  10.             client.SendMessageAsync(topic, new List<Message> { msg }).Wait(); 
  11.             Console.ReadLine(); 
  12.         } 

構建 消費者 Console

  1. static void Main(string[] args) 
  2.         { 
  3.             string topic ="IDGTestTopic"
  4.             Uri uri = new Uri("http://localhost:9092"); 
  5.             var options = new KafkaOptions(uri); 
  6.             var router = new BrokerRouter(options); 
  7.             var consumer = new Consumer(new ConsumerOptions(topic, router)); 
  8.             foreach (var message in consumer.Consume()) 
  9.             { 
  10.                 Console.WriteLine(Encoding.UTF8.GetString(message.Value)); 
  11.             } 
  12.             Console.ReadLine(); 
  13.         } 

最后可以依次將 生產者 和 消費者 程序啟動起來,然后你就會看到 消費者 Console 上顯示:Welcome to Kafka! 。

其實在開源世界中有太多的消息中間件,比如:RabbitMQ, MSMQ, IBM MQ Series 等等,現在的 Kafka 不僅僅是 消息中間件 了,而是用于大數據的 流式處理平臺,Kafka 也常常用于 IOT 程序,日志聚合 和 其他低延遲,強消息保證 等場景,如果你的應用程序需要一個快速并可擴展的消息中間件,kafka 將會是一個非常好的選擇,后續我會分享更多的關于 kafka 的文章。

 

譯文鏈接:https://www.infoworld.com/article/3215165/how-to-use-apache-kafka-messaging-in-net.html

 

責任編輯:武曉燕 來源: 碼農讀書
相關推薦

2022-12-08 08:00:00

.NET?7BitArray數據執行

2021-03-17 09:45:31

LazyCacheWindows

2021-02-06 21:40:13

SignalR通訊TypeScript

2021-02-02 16:19:08

Serilog日志框架

2021-03-10 09:40:43

LamarASP容器

2009-01-19 09:14:31

.NETMySQLMySql驅動包

2021-02-28 20:56:37

NCache緩存框架

2021-02-03 13:35:25

ASPweb程序

2021-01-28 22:39:35

LoggerMessa開源框架

2021-01-07 07:39:07

工具接口 Swagger

2021-03-03 22:37:16

MediatR中介者模式

2021-01-31 22:56:50

FromServiceASP

2020-01-15 09:00:00

物聯網邊緣計算Kafka

2021-02-07 17:29:04

監視文件接口

2009-02-05 14:02:46

SmtpMail發送郵件ASP.NET

2009-03-30 10:34:03

ASP.NETMySQL

2022-05-17 08:25:10

TypeScript接口前端

2022-06-23 08:00:53

PythonDateTime模塊

2021-06-09 09:36:18

DjangoElasticSearLinux

2015-08-27 09:46:09

swiftAFNetworkin
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品9999 | 一区二区三区四区国产 | 精品国产91久久久久久 | 国产免费看| 午夜精品久久久久久久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 日本不卡一区二区三区 | 国产乱码久久久久久 | 日韩免费视频 | 国产精品美女久久久久久久久久久 | 秋霞在线一区二区 | 亚洲高清电影 | 精品国产不卡一区二区三区 | 日韩成人免费av | 国产一区二区三区视频免费观看 | 福利网址 | 久久精品91久久久久久再现 | 中文av字幕| 国产免费视频 | 亚洲三级在线观看 | 色综合99 | 日韩国产在线 | 欧美久久精品一级黑人c片 91免费在线视频 | 毛片免费观看视频 | 99久久99 | 亚洲视频 欧美视频 | 99精品一区二区 | 久久最新 | 丝袜 亚洲 另类 欧美 综合 | 精品国产18久久久久久二百 | 国产精华一区 | 亚洲成人av一区二区 | 久色| 精品欧美激情在线观看 | 国产成人99久久亚洲综合精品 | 亚洲每日更新 | 午夜成人在线视频 | 久久99网站 | 狠狠干五月天 | 一级片毛片 | 国产成人精品一区二区三区四区 |