《Simplifying data pipelines with Apache Kafka》課程第一章Introduction問題集

1.什麼是Kakfa?

2.為什麼LinkedIn要創造Kafka?

分散式的實時處理和解耦。

3.Kafka有哪些應用場景?

4.Spark Streaming/Storm和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來忽略掉亂序的消息。思路還是根據業務邏輯來處理亂序問題。

推薦閱讀:

推薦系統的苟且和遠方
圖說財經 | 上升為國家戰略的大數據是什麼呢?

TAG:Kafka | 大数据 | 消息队列 |