kafka 第一次小整理(草稿篇)————整理一下自己的認知

敖毛毛發表於2022-03-20

前言

簡單整理一些自己使用kafka的一些感受。

正文

一切都要回到真實的世界上, 計算機世界只是真實事件的一個縮影。

計算機世界有一個重要的東西,那就是資料庫。

資料庫記錄著真實世界發生了什麼,準確的說就是這個世界發生了什麼然後產生了什麼結果。

比如說一輛火車,那麼資料庫記錄這輛火車是開啟的開始停止的,或者說乘坐著幾個人,也就是這輛火車對當前世界的狀態。

有比如說,一個人,資料庫裡面記錄著這個人的年齡、身高、性別等。也就是記錄這個人的狀態。

可以說資料庫,是事物的狀態機。

這個是滿足以前的,但是呢,現在有一個新的需求了。 就是這輛火車,在A 站每一趟上去多少人下去多少人。

這似乎就不是某件事物的狀態了,而是某個事件的狀態了,也就是到底發生了什麼事,時間、地點、任務等,而且是一個遞增的關係。

如果將事件狀態儲存到資料庫中,也是可以的(這裡不要去考慮技術、效能這塊)。 但是適合不適合呢?

無論是無關聯式資料庫還是關聯式資料庫,他們的表或者說集合吧,都是有固定結構的,無關聯式資料庫不是說沒有資料結構哈,而是說集合直接沒有明確的關係。

但是描述一件事情好像是沒有固定的結構的,當然了也可以有,但是這樣無法準確的表述這件事了。

那麼人們就定義了一種結構體,叫做log,就是日誌,來描述這件事情發生了什麼。那麼日誌如何管理呢?

kafka 製作出來作為一個日誌管理器了。

如果不瞭解日誌的重要性的話,初學者認為自己debug 除錯的時候的日誌,有啥管理的,有錯誤看下日誌即可,還需要管理,難道是要統一管理?

這裡的日誌,不僅僅是我們專案中的debug日誌或者線上的異常日誌,還可以是表述業務中一件事情的狀態,這個也是日誌。

可以想象,原來我們資料庫儲存的是事務的狀態,那麼日誌的是事件的狀態,可想而知日誌管理是多麼重要。

那麼日誌如何管理呢? 想到的就是給日誌加上分類,這個分類就是topic,也就是主題了。

現在日誌有管理了,可以對其進行不同的分類了,比如定義了火車主題,裡面有火車上停戰的時候下了多少人、幾點停戰的的,還有火車的能源消耗,每分鐘記錄一次這樣的事件、裡面記錄了能源的各種值、記錄時間等。

有比如說一個賬戶主題,那麼裡面記錄著使用者許可權的變化、 使用者資訊的變化等。

現在這個資料相當龐大了,當然了也有很多的需求需要解決,比如說有個需求就是分析火車的情況、另一個問題就是分析使用者的某些情況,似乎一堆問題了。

那麼如何解決分析這個大問題呢? 那就是把問題拆分。 需要分析使用者的訂閱使用者主題,需要分析使用者的,訂閱使用者主題,那麼kafka 日誌管理,就會將相應的日誌推給各自的訂閱者。

當然各自的訂閱者分析問題,同樣會產生事件狀態,又可以產生另外一個主題,放在任何一個kafka日誌管理器中,然後一些圖表分析服務又可以訂閱新的主題,產生了相應的表格,進行分析。

kafka的本質不是儲存這些日誌,而是用於管理的,把日誌收集然後推送給相應的真正處理的系統,所以kafka 會有預設的清除時間,因為其本質就是來讓你中轉的,其也沒有索引、查詢這個概念。

正則的日誌沉澱,可以使用其他工具,比如es。

現在瞭解了kafka 的誕生以及歷史,那麼下面就開始瞭解,kafka如何來做好這個日誌管理器的吧。

下一節介紹一下kafka的設計。

相關文章