快速入門kafka之 kafka優點及技術架構

2020-09-10 程序猿黑哥

kafka優點

**可靠性強**:分布式的,分區,複製和容錯**可擴展性**:無需停機進行擴展。**耐用性**:消息會儘可能快速的保存在磁碟上,持久化。

** 性能高**:對於發布和定位消息都具有高吞吐量,保證零停機和零數據丟失

Kafka應用場景

** 指標分析:用於操作監控數據,分析各種指標。
** 日誌收集
:收集各個業務的數據發送到kafka TOPIC裡
** 流式處理**:數據實時打入kafka,實時計算框架(sparkstreaming flink)實時在kafka中消費數據

Kafka技術架構(宏觀)

![image](https://upload-images.jianshu.io/upload_images/22570485-981996e1d6b69af8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Producer: 應用程式發布記錄流至一個或者多個kafka的主題(topics)
Consumer: 應用程式訂閱一個或者多個主題(topics)
Connectors: 允許構建和運行可重用的生產者或者消費者
StreamProcessors: 允許應用程式充當流處理器

Kafka架構內部細節剖析(維觀)

生產者(Producer):kafka當中的消息生產者,生產者通過topic進行歸類保存到kafka的broker裡面去

主題(topic):一個主題可以有零個,一個或者多個消費者訂閱寫入的數據。可以有無數個主題

分區(partition): 每一個分區的數據是有序的,多個partition之間是無序的。Partition數量決定了每個Consumer Group中並發消費者的最大數量。

分區和消費者之間的關係:

同一個組中的消費者對於同一條信息只能消費一次
消費者應該小於等於該主題下的分區數,
Partition=消費任務並發度=剛剛好,每個任務取一個partition數據
partition>消費任務並發度=有部分消費任務讀取多個分區的數據
partition<消費任務並發度=有部分任務空閒
任何時候,分區中的一條數據只能被一個消費組中的一個消費任務讀取。
總結:分區數越多,用一時間可以有越多的消費者來進行消費,消費數據的速度就會越快,提高消費的性能

lsr表示:當前可用的副本列表

**Segment: **一個partition當中有多個segment,一個segment有一個.log文件和一個.index文件組成

index file: 採取稀疏索引存儲方式。(只是存儲一部分索引,不存儲所有數據的索引) 稀疏能夠節省存儲空間,偏移量(offset):每條消息在文件中的位置稱為offset(偏移量)

消費者(Consumer):任何時候一個消費者必定需要屬於某一個消費組當中。

相關焦點

  • Kafka快速入門
    kafka是一個分布式的,分區的消息(官方稱之為commit log)服務。它提供一個消息系統應該具備的功能,但是確有著獨特的設計。kafka集群,在配置的時間範圍內,維護所有的由producer生成的消息,而不管這些消息有沒有被消費。例如日誌保留( log retention )時間被設置為2天。kafka會維護最近2天生產的所有消息,而2天前的消息會被丟棄。kafka的性能與保留的數據量的大小沒有關係,因此保存大量的數據(日誌信息)不會有什麼影響。
  • kafka入門(原理-搭建-簡單使用)
    前言公司在用kafka接受和發送數據,自己學習過Rabbitmq,不懂kafka挺不爽的,說幹就幹!網上找了許多帖子,學習了很多,小小的demo自己也搭建起來了,美滋滋,下面我認為優秀的網站和自己的步驟展現給大家。
  • kafka架構以及應用場景
    什麼是kafkaApache Kafka是一個分布式發布,訂閱消息系統,並且也是一個強大的隊列,可以處理高並的數據,並使您能夠將消息從一個端點傳遞到另一個端點。Kafka非常適合處理離線和在線消息消費。 Kafka消息可以持久化的保留在磁碟上,並在群集內複製以防止數據丟失。
  • 華為架構師親手操刀,世界五百強都在用的kafka也就那麼回事
    針對這類場景是否有新的技術和框架出現?但是市場上系統學習kafka的資料真的太少了,今天分享的這份kafka資料由華為架構師親手操刀,內容涵蓋源碼到實戰,堪稱一絕,後面附自己整理的kafka由基礎到架構的面試題Kafka源碼解析與實戰kafka
  • 單機版kafka集群部署
    實現高性能、高可用、可伸縮和最終一致性架構。今天跟大家講解下如何部署單機kafka集群,希望大家喜歡。部署環境本次是以CentOS6 環境為例子,介紹下如何快速搭建。>解壓包,並重命名文件夾名$ tar zxf kafka_2.12-2.1.0.tgz$ mv kafka_2.12-2.1.0 kafka1每個節點配置文件配置節點1$ vi kafka1/config/server.properties 埠地址
  • springboot + kafka的使用
    快速了解Kafka在把Kafka集成到spring之前,我們首先要了解Kafka是什麼?由什麼東西組成?主要的使用場景是哪些?Apache Kafka是一個開源消息系統,由Scala寫成。是由Apache軟體基金會開發的一個開源消息系統項目。
  • kafka連載(kafka的簡介)
    kafka是一種分布式的,基於發布/訂閱的消息管理系統。具備快速、可擴展、可持久化的特點。又因為具有強大的實時性的消息處理能力,所以很多公司都採用它來作為消息中間件。kafka提供了異步通信、緩衝或者峰值處理能力,以及基本的容災擴展、解耦合、數據持久化的能力。具體能力我不在這一一贅述。
  • Kafka支持的分布式架構超越經典軟體設計的五個原因
    考慮到這種思維方式,我決定寫一篇文章,探討使用Kafka作為主要消息代理來對抗傳統的單片應用程式和大型機系統的基於事件的分布式系統的一些突出優點。但是,隨著近幾年技術的進步,這種能力已被使用並發系統的許多超級計算機和以可擴展方式使用給定服務的多個副本的新分布式解決方案所超越。市值巨大且技術預算無限制的公司過去致力於使用大型機來構建系統,尤其是在我們談論金融行業時。 畢竟,其巨大的前期成本根本不是問題。 以最大的金融機構為例。 直到2000年代初期,它們中的絕大多數都是大型機驅動的機構。
  • 生產環境使用Apache Kafka和Redis的流架構
    狀態存儲地方可以是HA Redis集群、MongoDB或任何非常快速的鍵值狀態。; : ['kafka-console-producer', '--broker-list', 'kafka:9092'], 'consume' : ['kafka-console-consumer', '--bootstrap-server', 'kafka:9092']}let
  • Docker實戰之Kafka集群
    概述Apache Kafka 是一個快速、可擴展的、高吞吐、可容錯的分布式發布訂閱消息系統。其具有高吞吐量、內置分區、支持數據副本和容錯的特性,適合在大規模消息處理場景中使用。筆者之前在物聯網公司工作,其中 Kafka 作為物聯網 MQ 選型的事實標準,這裡優先給大家搭建 Kafka 集群環境。
  • 阿里架構師直通車:Netty+NIO+Redis+Kafka共計13.62G,一鍵入職
    此外,如果您有Java方面的經驗,您可以快速入門。這些框架都使用相同的語法,使用相似的術語、範例和概念。了解過Java架構的小夥伴一定都知道Netty+NIO+Zookeeper+Kafka+Redis這幾種架構師必學的開源框架以及資料庫吧。本文主要分為五個部分,那就先從Java的開源框架Netty開始說起吧。NettyNetty是什麼?
  • 大白話+13張圖解 Kafka
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言應大部分的小夥伴的要求,在Yarn之前先來一個kafka的小插曲,輕鬆愉快。
  • K8S環境快速部署Kafka(K8S外部可訪問)
    如何快速部署,拉勾IT課小編為大家分解藉助Helm,只需少量操作即可部署kafka;kafka和zookeeper對存儲都有需求,若提前準備了StorageClass,存儲一事則變得十分簡單接下來的實戰之前,請您準備好:K8S、Helm、NFS、StorageClass
  • Kafka集群監控系統Kafka Eagle部署與體驗
    2、解壓kafka eagletar -zxvf kafka-eagle-bin-2.0.1.tar.gzcd kafka-eagle-bin-2.0.1/tar -zxvf kafka-eagle-web-2.0.1-bin.tar.gz -C /optcd /optmv kafka-eagle-web-2.0.1/ kafka-eaglecd kafka-eagle
  • Kafka知識整理
    消息隊列消息隊列中間件是分布式系統中重要的組件,主要解決應用耦合,異步消息,流量削鋒等問題實現高性能,高可用,可伸縮和最終一致性架構使用較多的消息隊列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ作用主要有:解耦,
  • Canal+Kafka實現MySQL與Redis數據同步
    架構圖canal是一個偽裝成slave訂閱mysql的binlog,實現數據同步的中間件。上一篇文章《canal入門》我已經介紹了最簡單的使用方法,也就是tcp模式。架構圖如下:通過架構圖,我們很清晰就知道要用到的組件:MySQL、Canal、Kafka、
  • Kafka為什麼會這麼快
    為例,生產者產生消息,並將消息Push到kafka集群,消費者主動去kafka集群Pull數據。順序寫入kafka將消息存儲在硬碟,通常認為硬碟的讀寫是比較慢,但是為什麼kafka快呢?平時所說的磁碟讀寫慢是指隨機讀寫比較慢,因為磁碟每次隨機讀寫都要物理尋址,這是非常耗時的操作,順序讀寫的速度還是比較快的。
  • 15年架構師:再有面試官問你Kafka,就拿這篇學習筆記懟他
    kafka的外在表現很像消息系統,允許發布和訂閱消息流,但是它和傳統的消息系統有很大的差異:首先,kafka是個現代分布式系統,以集群的方式運行,可以自由伸縮其次,kafka可以按照要求存儲數據,保存多久都可以第三,流式處理將數據處理的層次提示到了新高度,消息系統只會傳遞數據。
  • kafka集群
    一、準備信息1、版本說明:CentOS7.8jdk-8u231-linux-x64.tar.gzzookeeper-3.4.14.tar.gzkafka_2.12-2.6.0.tgz2、zookeeper伺服器(kafka集群需要依賴zk存儲Broker、Topic等信息)伺服器名 IP
  • Java開發,kafka概念掃盲
    就是這種模式的;有兩種方式,一種是是消費者去主動去消費(拉取)消息,而不是生產者推送消息給消費者;另外一種就是生產者主動推送消息給消費者,類似公眾號1.3、kafka的基礎架構kafka的基礎架構主要有broker、生產者、消費者組構成,當前還包括zookeeper生產者負責發送消息broker負責緩衝消息,broker中可以創建topic,每個topic又有partition