1. 程式人生 > 資訊 >1999 元起,realme 釋出真我 GT Neo3:搭載天璣 8100 + 獨顯晶片,首發 150W 快充 5 分鐘充 50%

1999 元起,realme 釋出真我 GT Neo3:搭載天璣 8100 + 獨顯晶片,首發 150W 快充 5 分鐘充 50%

Apache Kafka 是一款開源的訊息引擎系統(支援可重用、通用的傳輸訊息中介軟體)。

支援以下模型:

1.點對點(一對一)。2.釋出/訂閱(多對多)。

同時也是分散式流平臺。用於處理兩類問題:

1.資料正確性不足。資料收集輪詢的間隔時間是一個高度經驗化的問題。

2.系統高度定製化(每個子系統對接資料收集模組),維護成本高。

 

所以kafka 0.10.0.0有如下特徵:

1.提供一套API實現生產者和消費者。2.降低網路傳輸和磁碟儲存開銷。3.實現高伸縮性架構。

kafka對比其他流式計算框架優勢:

1.更容易實現端對端的正確性(Correctness),即精確處理一條訊息有且只有一次機會影響系統狀態。

2.對於流式計算的定位,提供一套搭建實時流式處理的庫,而非一個完整系統。Kafka 提供類似於叢集排程、彈性部署等開箱即用的運維特性 

 

為何需要訊息引擎?

資料量不大,可以考慮上游限流,但這就導致上游無法達到更高tps。

所以用訊息引擎來消峰填谷,由於上游應用處理請求簡單,瞬間tps可以很高,但下游處理複雜,就會出現下游無法及時處理上游資料導致堆積,甚至壓垮下游服務。

 

kafka專業術語概念

Topic(主題):一類資料的總稱。

Kafka Broker(Broker服務端程序):負責接收和處理客戶端發生來的請求,對訊息持久化;一個kafka訊息引擎叢集,由多個Broker組成。

Producer(生產者):向Topic傳送訊息的客戶端應用。

Consumer(消費者):訂閱Topic訊息的客戶端應用。

Replica(副本):備份機制(Replication)中,相同的資料拷貝;

  分為Leader Replica(領導者副本:對客戶端(consumer、producer)提供服務) 和Follower Replica(追隨者副本:主動請求同步領導者副本的資料)。

      注意一些概念:資料庫Mysql的主從模式:從是可以提供讀服務的。而kafka是主備含義。

Partition(分割槽):kafka實現Scalability(伸縮性)的機制。避免leader replica積累太多資料,以至於一個broker無法容納了。

  把一個Topic分為多個Partition。實際上副本是對於分割槽來說的,每個分割槽下可以配置若干副本。

Offset(位移):從0開始,針對分割槽,一旦寫入分割槽則不會變化。

Consumer Group(消費者組):多個consumer組成一個組消費一組主題。主題每個分割槽只能被組內一個consumer消費。以實現同時消費這個Topic,提高吞吐。如某個consumer掛掉,會把這個掛掉的consumer負責的分割槽轉移給其他存活的consuemr,這個過程叫ReBalance

Consumer offset是隨時變化的,表示消費進度。

 

 

Kafka持久化資料

使用訊息日誌(Log),即磁碟的一個只能追加寫(Append-only)訊息的物理檔案。追加寫用順序IO避免緩慢隨機IO。

使用Log Segment 清理資料,一個日誌檔案分為多個日誌段,訊息只能寫到當前最新日誌段,寫滿後切分新的日誌段,並儲存老的日誌段。

有定時任務定期檢查老的日誌段是否可以刪除。