分布式消息系統之Kafka
隨著疫情在中國順利控制,各公司逐漸開始招聘,而且跳躍的好時機,除了金,銀和銀,是金,九和銀十。準備看到機會的朋友可以抓住這個機會,準備簡歷,審查項目經驗,并為每個知識點彌補深度。我們希望為您添加的知識點是分布式消息系統Kafka。
在互聯網的大規模數據的要求下,高并發性,高可用性和低延遲,必須使用消息系統來轉發數據和系統之間的解耦。要學習Kafka,讓我們來看看Kafka的典型用法場景。 。
場景1的消息系統是關于解耦的生產者應用程序和消費者應用程序,生產者的消息通過Kafka發送,以及消費者訂閱了Kafka消息。
場景2的日志集合意味著通過Kafka收集各種服務的日志,然后將它們打開到統一接口服務中的每個消費者。
方案中的用戶活動跟蹤3表示通過Kafka錄制Web用戶或應用程序用戶的活動,消費者訂閱數據進行實時分析。
場景4的操作指示符是通過KAFKA記錄操作指示符和監視數據,并且消費者訂閱這些數據以提醒。
場景5流處理,即連接SparkStreaming和Storm實時處理數據。
然后我們繼續介紹Kafka的基本名詞概念。在Kafka,有五個基本概念:經紀人,主題,分區,細分,生產者和消費者。所謂的代理是Kafka節點,服務器實例,存儲消息隊列數據;所謂的主題是一條消息,例如,在購買產品之后,將推動成功購買產品。這是一種信息;所謂的分區是一個分組,并且可以將主題分成多個分區,例如,在購買產品之后,您可以根據用戶區域推送消息。北京地區是分區,上海地區是分區;所謂的段被分成多個段,并且存儲了消息;所謂的制片人是生產者,負責生產新聞;所謂的消費者是消費者,負責消費新聞。 Kafka工作的過程是生產者發布消息,系統為每種類型的數據創建主題,持續存在并備份代理群集中的特定Kafka消息,以及消費者訂閱主題以消耗郵件。
作為開源軟件,Kafka最重要的能力是提供API。 Kafka中有四個主要API:生產者API,消費者API,Stream API,Connector API。
通過生產者API,消息制作人可以直接連接到群集中的Kafka服務器,并將流數據發送到一個或多個Kafka主題。
通過消費者API,消息消費者可以直接連接到群集中的Kafka服務器,并在Kafka中使用主題的流消息。
通過Stream API,您可以使用主題順利使用輸入流并產生輸出流。在流處理中,還通過KafkastreamS API提供給大數據平臺,Cassandra和Spark的數據分析。
通過連接器API,開發人員可以建立并運行可重復使用的生產者和消費者。
作為分布式消息系統,Kafka如何實現分布式? Kafka需要與ZooKeeper一起使用,以便在外部提供分布式消息傳遞系統功能。我們假設在Kafka集群中存在這樣的方案,有一個要處理的大主題。我們首先將此主題放在代理服務器Broker1,Broker2和Broker3上,并在經紀人1/2/3中包含1/2/3的分區。當經紀人開始時,它將首先使用zookeeper注冊自己的代理,主題,分區信息和其他元元信息。當消費者啟動時,它還將使用Zookeeper節點注冊自己的信息并監控生產者的更改。那么節點中分布的數據如何?實際上,每個節點的數據將在整個群集中復制。例如,Broker1中每個分區中的數據將被復制到群集中的Broker2和Broker3。 Broker1用作主節點,以向生產者和消費者提供數據。當Broker1節點掛起時,使用ZooKeeper工具從剩余的Broker2和Broker3從剩余的Broker2和Broker3選擇新的主節點,以為外部世界提供服務。因此,Kafka集群中的所有數據都可以在每個代理節點上使用,可始終確保高服務可用性。
最后,讓我們來看看Kafka如何保證數據可靠性。
首先,閱讀和寫作新聞的順序。如果生產者首先寫入消息1然后寫入消息2,則消費者核心首先消耗1,然后消耗2。
其次,考慮在將消息寫入所有Kafka節點后發送消息。
第三,一旦發送消息,只要kafka節點仍然存在,數據將不會丟失。
第四,消費者只能讀取提交的信息。這些機構充分保證了Kafka系統數據的可靠性。
本文從五個方面介紹了Kafka:使用場景,基本概念,重要功能,分散保證和可靠性保證。如果面試官有關Kafka和信息隊列的了解,他并不害怕被問到。
?