《Simplifying data pipelines with Apache Kafka》課程第一章Introduction問題集
分散式的實時處理和解耦。
3.Kafka有哪些應用場景?Kafka是messaging system, Spark Streaming/Storm是Streaming process engine,兩者可以結合起來,比如Spark Streaming從Kafka讀任務,處理後再放入Kafka隊列中。
5.Kafka的主要概念有哪些?
6.Topic的概念?Topic分成partition,目的是為了scale。
不保證partition之間的message是ordered,所以總體上消費不能保證有序。
想要在kafka級別上保證有序,那就只能用一個partition。
7.Broker的概念?
一個broker上可能有不同topic的部分partition。一個topic的partition會分散到不同的broker上。
這樣消費的時候可以並行在多個broker上消費。
8.為什麼要對partition對行replication?因為要fault tolerance,和MapReduce一樣,都是把數據保存下來。
每個partition有一個leader和多個follower(follower個數取決於replication factor),讀寫都是在leader上。
比如replication factor=3,那麼就有1個leader和2個follower,這時即便其中2個都掛了,這個partition也不受影響。
9.Replication example?帶星的是leader。
10.Producer的概念?
producer往topic的哪個partition里寫是可以自定義的。
11.Consumer的概念?12.Zookeeper在Kafka中扮演什麼角色?
13.Kafka能做到的消息保證有哪些?保證消息部分有序,大概率不丟失消息(除非N個replica都掛了),消息至少被消費一次。
不重複消費需要業務系統配合。
這些保證(特性)是一個speed-receiving all messages tradeoff,之所以這樣tradeoff是因為在大多數場景下這些tradeoff是適用的。
14.常見的部署架構?15.消費Kafka的時候會不會有亂序問題?有亂序問題的話會對選退課的順序產生影響的。
如果partition>1,會有亂序問題。
選退課的例子,可以在消費的時候判斷update_time來忽略掉亂序的消息。思路還是根據業務邏輯來處理亂序問題。
推薦閱讀: