柚子快報邀請碼778899分享:kakfa系統架構
柚子快報邀請碼778899分享:kakfa系統架構
消息隊列Kafka系統架構 Q:什么是Kafka?
A:Kafka是由Apache軟件基金會開發(fā)的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息引擎、消息隊列服務,它可以處理消費者規(guī)模的網站中的所有動作流數據。
Q:Kafka有哪些特性?
A:作為一種高吞吐量的分布式發(fā)布訂閱消息系統,有如下特性:
通過O(1)的磁盤數據結構提供消息的持久化,這種結構對于即使數以TB的消息存儲也能夠保持長時間的穩(wěn)定性能。 高吞吐量 :即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。 支持通過Kafka服務器和消費機集群來分區(qū)消息。 支持Hadoop并行數據加載 Q:kafka的總體數據流是什么樣的?
A:
Q:kafka的使用場景有些?
消息隊列Kafka版具有豐富的應用生態(tài),主要包括三個方面:
大數據領域:如網站行為分析、日志聚合、應用監(jiān)控、流式數據處理、在線和離線數據分析等領域。 數據集成:將消息導入MaxCompute、OSS、RDS、Hadoop、HBase等離線數據倉庫。 流計算集成:與StreamCompute、E-MapReduce、Spark、Storm等流計算引擎集成。
Q:主要功能有哪些?
A:根據官網的介紹,ApacheKafka?是一個分布式流媒體平臺,它主要有3種功能:發(fā)布和訂閱消息流,這個功能類似于消息隊列,這也是kafka歸類為消息隊列框架的原因;以容錯的方式記錄消息流,kafka以文件的方式來存儲消息流;可以再消息發(fā)布的時候進行處理。
消息隊列Kafka系統架構 一個典型的消息隊列Kafka版集群包括四個部分:
Producer
通過push模式向消息隊列Kafka版的Kafka Broker發(fā)送消息。發(fā)送的消息可以是網站的頁面訪問、服務器日志,也可以是CPU和內存相關的系統資源信息。
Kafka Broker
用于存儲消息的服務器。Kafka Broker支持水平擴展。Kafka Broker節(jié)點的數量越多,Kafka集群的吞吐率越高。
Consumer Group
通過pull模式從消息隊列Kafka版 Broker訂閱并消費消息。
Zookeeper
管理集群的配置、選舉leader分區(qū),并且在Consumer Group發(fā)生變化時,進行負載均衡。
消息隊列Kafka版的發(fā)布/訂閱模型 消息隊列Kafka版采用發(fā)布/訂閱模型:
Consumer Group和Topic的對應關系是N : N,即一個Consumer Group可以同時訂閱多個Topic,一個Topic也可以被多個Consumer Group同時訂閱。 某個Topic的一條消息可以被多個Consumer Group同時訂閱,但只能被同一個Consumer Group內的任意一個Consumer消費。
本文主要介紹消息隊列Kafka版的經典應用場景。
網站活動跟蹤 成功的網站運營都會非常關注站點的用戶行為并進行分析。通過消息隊列Kafka版,您可以實時收集網站活動數據(包括用戶瀏覽頁面、搜索及其他行為等),并通過“發(fā)布/訂閱”模型實現:
根據不同的業(yè)務數據類型,將消息發(fā)布到不同的Topic。 通過訂閱消息的實時投遞,將消息流用于實時監(jiān)控與業(yè)務分析或者加載到Hadoop、ODPS等離線數據倉庫系統進行離線處理與業(yè)務報告。 能夠實現:
高吞吐:網站所有用戶產生的行為信息極為龐大,需要非常高的吞吐量來支持。 彈性擴容:網站活動導致行為數據激增,云平臺可以快速按需擴容。 大數據分析:可對接Storm/Spark實時流計算引擎,亦可對接Hadoop/ODPS等離線數據倉庫系統。
日志聚合 公司的不同平臺每天都會產生大量的日志(一般為流式數據,如搜索引擎pv、查詢等),相較于日志為中心的系統,例如Scribe或者Flume來說,消息隊列Kafka版在提供同樣高效的性能時,可以實現更強的數據持久化以及更低的端到端響應時間。消息隊列Kafka版的這種特性決定它非常適合作為日志收集中心:
消息隊列Kafka版忽略掉文件的細節(jié),可以將多臺主機或應用的日志數據抽象成一個個日志或事件的消息流,異步發(fā)送到消息隊列Kafka版集群,從而做到非常低的RT時間。 消息隊列Kafka版客戶端可批量提交消息和壓縮消息,對生產者而言幾乎感覺不到性能的開支。 消費者可以使用Hadoop、ODPS等離線倉庫存儲和Strom、Spark等實時在線分析系統對日志進行統計分析。 能夠實現:
應用與分析解耦:構建應用系統和分析系統的橋梁,并將它們之間的關聯解耦。 高可擴展性:具有非常高的可擴展性,即當數據量增加時可通過增加節(jié)點快速水平擴展。 在線/離線分析系統:支持實時在線分析系統和類似于Hadoop的離線分析系統。
流計算處理 在很多領域,如股市走向分析、氣象數據測控、網站用戶行為分析,由于數據產生快、實時性強且量大,您很難統一采集這些數據并將其入庫存儲后再做處理,這便導致傳統的數據處理架構不能滿足需求。
與傳統架構不同,消息隊列Kafka版以及Storm/Samza/Spark等流計算引擎的出現,就是為了更好地解決這類數據在處理過程中遇到的問題,流計算模型能實現在數據流動的過程中對數據進行實時地捕捉和處理,并根據業(yè)務需求進行計算分析,最終把結果保存或者分發(fā)給需要的組件。
能夠實現:
流動的數據:構建應用系統和分析系統的橋梁,并將它們之間的關聯解耦。 高可擴展性:由于數據產生非??烨覕祿看螅枰浅8叩目蓴U展性。 流計算引擎:可對接開源Storm/Samza/Spark以及EMR、Blink、StreamCompute等產品。
數據中轉樞紐 近10多年來,諸如KV存儲(HBase)、搜索(ElasticSearch)、流式處理(Storm/Spark Streaming/Samza)、時序數據庫(OpenTSDB)等專用系統應運而生。這些系統是因為單一的目標而產生,也因其簡單性使得在商業(yè)硬件上構建分布式系統變得更加容易且性價比更高。
通常,同一份數據集需要被注入到多個專用系統內。例如,當應用日志用于離線日志分析,搜索單個日志記錄同樣不可或缺,而構建各自獨立的工作流來采集每種類型的數據再導入到各自的專用系統顯然不切實際,利用消息隊列Kafka版作為數據中轉樞紐,同份數據可以被導入到不同專用系統中。
能夠實現:
高容量存儲:能在商業(yè)硬件上存儲高容量的數據,實現可橫向擴展的分布式系統。 一對多消費模型:“發(fā)布/訂閱”模型,支持同份數據集能同時被消費多次。 同時支持實時和批處理:支持本地數據持久化和Page Cache,在無性能損耗的情況下能同時傳送消息到實時和批處理的消費者。
柚子快報邀請碼778899分享:kakfa系統架構
推薦閱讀
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯系刪除。