如何保證消息發布的可靠性?
- 如果acks=0,生產者在成功寫入消息之前是不會等待任何的來自服務器的響應。可靠性最低、性能最優。
- 如果acks=1,只要集群的首領節點收到消息,生產者就會收到來自服務器成功的響應。
- 如果acks=all / -1,只有在集群所有的跟隨副本都接收到消息后,生產者才會受到一個來自服務器的成功響應。可靠性最高,性能最差。
如何保證消息的順序?
- Kafka 每個 Partition 都是相互獨立的,Kafka 只能保證單個 Partition 下的有序。
- 局部有序:當我們所需要的有序其實是針對單個用戶的有序,而不要求全局有序。我們可以以用戶的 ID 作為 key , 確保單個用戶一定會被分配到某個固定的 Partition 上(可能會引起數據傾斜問題),這樣我們就能夠實現單個用戶維度的有序了。
- 如果一定要全局的有序,所有消息都使用同一個 key ,這樣他們一定會被分配到同一個 Partition 上,這種做法適用于臨時性且數據量不大的小需求,消息量大了會有性能壓力。
如何選擇 Partiton 的數量?
- 在創建 Topic 的時候可以指定 Partiton 數量,也可以在創建完后手動修改。但 Partiton 數量只能增加不能減少。中途增加 Partiton 會導致各個 Partiton 之間數據量的不平等。
- Partition 的數量直接決定了該 Topic 的并發處理能力。但也并不是越多越好。Partition 的數量對消息延遲性會產生影響。
- 一般建議選擇 Broker Num * Consumer Num ,這樣平均每個 Consumer 會同時讀取 Broker 數目個 Partition , 這些 Partition 壓力可以平攤到每臺 Broker 上。
如何選擇磁盤空間?
Kafka支持多副本存儲,副本數量為3。存儲空間包含所有副本存儲空間總和,因此,您在創建Kafka實例,選擇初始存儲空間時,建議根據業務消息體積預估以及副本數量選擇合適的存儲空間。
例如:業務消息體積預估100GB,則磁盤容量最少應為100GB*3+ 預留磁盤大小100GB。
如何選擇實例帶寬?
Kafka實例的網絡帶寬指單向(讀或寫)最大帶寬。一般建議選擇帶寬時建議預留30%,確保您的應用運行更穩定。
- 100MB/s,業務流量為70M以內時推薦選用。
- 300MB/s,業務流量為210M以內時推薦選用。
Kafka支持磁盤加密嗎?
分布式消息服務Kafka不支持磁盤加密。
Kafka擴容會影響業務嗎?
Kafka的擴容過程可能會對業務產生一定的影響,具體取決于您的擴容策略和實施方式。以下是一些可能的影響:
- 重分區和重新分配:當您需要擴容Kafka集群時,可能需要進行重分區和重新分配。這涉及到數據的重新分布和重新平衡,可能會導致一段時間內的性能下降和延遲增加。在重分區和重新分配期間,Kafka會重新分配副本、重新分區數據,并且可能需要重新加載和重新平衡消費者群組。
- 網絡和磁盤負載增加:擴容Kafka集群意味著增加了更多的節點和副本,這可能會增加網絡和磁盤的負載。數據的復制和同步可能會導致網絡帶寬的消耗,而新增的節點和副本可能會增加磁盤的寫入和讀取負載。
擴容過程中涉及數據遷移嗎?
擴容過程不涉及數據遷移。
選擇和配置安全組
安全組是一種網絡安全配置,用于控制云計算平臺中虛擬機實例的網絡訪問。它是一種虛擬防火墻,可以定義入站和出站的網絡流量規則,以保護虛擬機實例的安全。Kafka在購買實例頁面用戶可選擇安全組。
是否支持跨Region訪問?
可購買彈性IP,通過公網IP綁定功能實現外網訪問,也可通過購買云間高速產品服務進行訪問。
Kafka實例是否支持不同的子網?
支持。相同VPC內可以跨子網段訪問。同一個VPC內的子網默認可以進行通信。
Kafka實例的內網連接地址可以修改嗎?
不支持修改,也不支持指定IP地址。
開啟公網訪問后,在哪查看公網IP地址?
Kafka管理控制臺。在實例列表頁在操作列,目標實例行點擊“設置公網ip”,查看具體地址。
Kafka支持服務端認證客戶端嗎?
分布式消息服務Kafka不支持服務端認證客戶端。
不同實例中,使用的SSL證書是否一樣?
在Kafka中,每個實例使用的SSL證書通常是不同的。SSL證書是用于加密和驗證Kafka實例之間的通信的一種安全機制。每個Kafka實例都需要有自己的證書來確保通信的安全性和身份驗證。
SSL證書包括公鑰和私鑰。公鑰用于加密通信,私鑰用于解密通信。為了確保安全性,私鑰應該是保密的,并且只有Kafka實例才能訪問。
在Kafka集群中,每個實例都應該有自己的證書和私鑰對。這樣可以確保每個實例都有獨立的加密和身份驗證機制。如果多個實例共享相同的證書和私鑰,那么一個實例的私鑰可能會被其他實例訪問,從而降低了通信的安全性。
因此,為了確保每個Kafka實例之間的通信安全,建議為每個實例生成獨立的SSL證書和私鑰。這樣可以確保每個實例都有獨立的加密和身份驗證機制,提高整個Kafka集群的安全性。