最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

當你在星巴克排隊,Kafka悄悄幫你"消費"

2021-09-28 18:51 作者:尚文網(wǎng)絡(luò)IT  | 我要投稿


#說在前面

當你在Youtube排隊下載Trap的beats、當你在網(wǎng)易云音樂排隊下載TeamWang的Music Album,甚至是當你在星巴克排隊Coffee,這一系列的場景潛移默化的會把你拉進消息隊列(MQ)的世界,與此同時,消息隊列中以Kafka為代表,秉承著先進先出(FIFO)的原則,正在悄悄幫你"消費"。也就是說,當你正在排隊,突然快遞小哥給你打電話,告訴正在你公司等你收快遞,此時尷尬的一批,好不容易快排到自己為了展示自己的高素質(zhì)選擇暫時離開,等拿到快遞再回來的時候,原先的位置早就過號,So不得不重新排隊,也就是說之前排在你后面的小姐姐們都已經(jīng)買到了自己鐘愛的咖啡(已在消息隊列中被消費掉)。

如果對消息隊列還是不夠了解,請回憶UP楠哥之前嘮過一篇文章《就因為是一只“兔子”?受寵愛的RabbitMQ》https://blog.csdn.net/weixin_42081313/article/details/119329304?spm=1001.2014.3001.5501,這篇文章已經(jīng)較為詳細的描述了消息隊列的原理&工作方式;從那時起,消息隊列MQ的話題已然開始,消息隊列的核心就是"消費";今天再嘮一嘮愛“消費”的Kafka。

#什么是Kafka

Kafka最初是由Linkedin公司開發(fā)的,使用Scala語言編寫的,一個分布式、多分區(qū)、多副本、多訂閱者的消息系統(tǒng)。他通常用于異常及運行日志、搜索日志、用戶行為日志、監(jiān)控日志、訪問日志等日志系統(tǒng)的搭建。

Kafka目前支持多種客戶端語言:Java,python,C++,php,.net等等。(Confluent.Net,LibrdKafka)

Kafka是一個分布式的發(fā)布訂閱模式的消息系統(tǒng),可以處理大量的數(shù)據(jù),Kafka適合離線和在線計算,Kafka的消息保留在磁盤上,并在集群內(nèi)復(fù)制以防止數(shù)據(jù)丟失。Kafka依賴Zookeeper分布式同步服務(wù)。

Kafka能與Storm、Spark、Flink、Flume等非常好的集成,用于實時流式數(shù)據(jù)分析處理。

#Why Kafka,為什么要用Kafka

Kafka的應(yīng)用場景包含如下:

ü?異步通信

ü?應(yīng)用系統(tǒng)解耦

耦合性高:不易維護,牽一發(fā)而動全身。

ü?流量削峰

大部分網(wǎng)站系統(tǒng)在大部分時間的流量比較穩(wěn)定。但是在搞活動,比如搶購時,秒殺的時候,流量瞬間暴漲,對系統(tǒng)造成了巨大的壓力。如果按照流量峰值配置相應(yīng)的資源,無疑是巨大的浪費。我們將流量存儲在消息系統(tǒng)中,根據(jù)消費者能力去處理業(yè)務(wù)高峰,緩解瓶頸壓力,就能起到流量削峰的作用。

ü?系統(tǒng)擴展

基于發(fā)布訂閱的特性,對于同一個消息,可以擴展不同的處理程序用于支持不同的業(yè)務(wù)需求。

#Kafka優(yōu)勢

ü?高性能

Kafka對于發(fā)布-訂閱信息具有非常高的吞吐量,即使存儲了TB級別的消息,他也保持穩(wěn)定的性能。

ü?高可用

Kafka是分布式的,并且擁有分區(qū)機制,復(fù)制備份機制使得Kafka容錯能力大大提升。

ü?可擴展性

Kafka消息系統(tǒng)動態(tài)縮放,無需停機。(0.10版本之后)

ü?消息持久化

大部分MQ都是走的發(fā)送-緩存-消費-刪除的路線,消息在消息隊列中存儲的時間很短,被消費之后,消息就被刪除。

然而很多時候,我們需要多個程序不同時間、不同業(yè)務(wù)場景下對消息進行多次消費,以滿足我們業(yè)務(wù)需求。所以,Kafka的消息持久化特性就顯得尤為突出。

#Kafka整體架構(gòu)

如圖所示,一個典型的Kafka集群中包含若干Producer,Broker,Consumer.

Producer發(fā)布(push)消息到Broker(消息存儲代理),消費者(也是客戶端程序)從broker獲取數(shù)(poll),然后完成一些列對數(shù)據(jù)的處理操作。

多個Broker協(xié)同合作,Producer和Consumer部署在各個業(yè)務(wù)邏輯中被頻繁調(diào)用,三者通過Zookeeper協(xié)調(diào)管理者請求和轉(zhuǎn)發(fā),這樣就組成了分布式的發(fā)布訂閱消息系統(tǒng)。

Zookeeer在kafka中的作用:

1、Broker和Topic等meta信息都存儲在Zookeeper中。

2、Consumer的Offset信息也存儲在Zookeeper中。

3、Borkder和Consumer以及Topic之間的訂閱關(guān)系,也是存在Zookeeper中。

?

#Kafka相關(guān)概念

##Broker(消息代理)
  一個單獨的KafkaServer就是一個Broker,Broder的主要作用就是用于接受Producer發(fā)送過來的消息,并保存到磁盤上。同時用于接受Consumer的連接,拉取消息進行消費。

?

##Topic(消息主題)
  Topic用于存儲消息的邏輯概念,可以看做是一組消息集合。每個Topic可以有多個Producer向其中推送消息,也可以任意多個消費者消費其中的數(shù)據(jù)。

?

##Partition(主題分區(qū))
  Parition是物理上的概念,每個Topic可以劃分為多個Partitiion,同一個Topic的不同Partiiton存儲的消息是不同的。每個Partition可以擁有多個副本,用以實現(xiàn)消息的冗余備份。

?

##Producer(生產(chǎn)者)
  發(fā)布消息到Kafka broker。

?

##Consumer(消費者)
  消息消費者,從Kafka broker讀取消息。

?

##Consumer Group(消費者組)
  每個Consumer屬于一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬于默認的group)。

?

#Replication和ISR

Kafka的高可靠性來源于健壯的副本機制。Kafka副本是針對Topic和Parition而言的。

可以通過kafka/config/server.propertities配置文件中的default.replication.refactor參數(shù)來設(shè)置當前topic-patition所擁有的副本數(shù)量。如下圖所示:Kafka集群有四個節(jié)點,Broker1-Broder4;當前Topic1有三個分區(qū)分別為P1,P2,P3,每個分區(qū)的復(fù)制因子為3,即有三個副本。

#Consumer如何消費

當一個Consumer和Consumer Group初始化時,每個分區(qū)的Consumer一般會從最早或者最近的數(shù)據(jù)開始讀,然后再從每個分區(qū)依次把消息讀取出來。

消費者消費過程中,消費者會自動(或手動)提交已經(jīng)成功處理的消息偏移量。

當一個分區(qū)被重新分配給組中的另一個消費者時,這個消費者會從上一個消費者最后一次提交的偏移量處開始讀。保證消息被順序消費。

?

#寫在最后

生活的每一個細節(jié)都會成為與你工作相關(guān)聯(lián)的素材,生活工作中,缺的不是素材,缺的是善于發(fā)現(xiàn)真善美的眼睛!IT中的PAAS技術(shù)&大數(shù)據(jù)技術(shù)中非常重要的消息隊列,我們要學(xué)會好好使用,像Redis

Kafka、RabbitMQ、ActiveMQ等,都是消息隊列精英,擅長“消費”!



當你在星巴克排隊,Kafka悄悄幫你"消費"的評論 (共 條)

分享到微博請遵守國家法律
文安县| 耒阳市| 芜湖县| 肥乡县| 静宁县| 调兵山市| 濉溪县| 曲水县| 黑山县| 万山特区| 宜宾县| 六盘水市| 盐源县| 深州市| 咸丰县| 两当县| 临猗县| 石嘴山市| 池州市| 政和县| 韩城市| 台山市| 京山县| 新丰县| 贡觉县| 文昌市| 涿州市| 翼城县| 修水县| 甘南县| 中西区| 丹阳市| 佳木斯市| 广昌县| 锦州市| 阿克| 高尔夫| 桂东县| 博罗县| 孟村| 定襄县|