log在當前互聯網中的應用:
分布式數據系統中有序的數據變化,數據分布式化
消息系統----消息系統是事件驅動架構中必不可少的元素。log是各種消息系統,activemq,kafka,rocketmq中的基本單元,承載事件。可使用消息系統構建業務總線,解耦事件產生者與事件關注者。也可用作負載均衡。
數據流--應用于數據集成,數據共享問題
實時計算--流處理,解決pull方式的沉重低效,與高延遲
簡單說上面幾點就是 log解決了
協調,同步,數據集成(共享),解耦,過程中處理 五大問題
協調:通過log傳輸信息,使得各個系統統一對一件事物的決策確定
同步:子系統只關注主系統的數據變化事件log,而不關注應用對數據的操作。
數據集成:各系統共享數據,數據源提供可積壓,可重復消費消息,可記錄客戶端消費位置的log日志集群實現。
解耦:消費者與生產者解耦,互相不關注對方的存在,消費者以log獲知事件的發生,并可實現削峰填谷,消費者可擴增消費能力,或削弱消費能力,而生產者不必調整生產能力。
過程中處理:實時計算的奧妙在于拓展了數據源,對于二級消費者,甚至三級消費者,可能消費的數據是一級消費者,二級消費者組裝后的數據,但是三級消費者無需關注中間處理過程。實時計算在于在事件最終落地之前,實時的做了合并,修改,分析等操作。通過log,實時計算組件可構建一個完善的數據流。
分布式系統中的logs
解決了兩個重要的分布式數據系統中的問題:
1,有序的數據變化 :redis aof數據同步,mysql主從
2,數據分布式化 集群方式存儲數據
數據集成中的log
數據集成是把不同來源、格式、特點性質的數據(基礎數據,簡單加工)在邏輯上或物理上有機地集中,從而為企業提供全面的數據共享。例如集團下子公司A,與集團下子公司B的數據需要共享。
可見,數據是整個系統應用中,最底層的支持,一個可靠的數據源是構建一個好的數據集成系統的關鍵。
數據源可以是各種數據庫里的表,也可以是一個消息中間件內整合了的log日志,消息中間件作為數據集成的的數據源,比純的數據庫中的數據作為數據集成的源頭有如下優點:
1,可實時消費,減少了對數據倉庫大批量pull的繁雜,消費者可根據自己索引快速增量pull數據。
2,消息中間件統一過濾,規范的事件log格式,避免數據倉庫中對數據的處理方式不對問題
3,多數據源覆蓋困難(kafka使得消費者與生產者解耦,消費者無需關注多數據源,只需關注kafka數據集群)
定義良好的log結構,以及一個好的可積壓的消息中間件是數據源構建的關鍵。
實時計算中的log
實時計算中的log算是對數據集成中的log進行的一種拓展,經過程序處理的log,傳遞給消費者,而log本身是否經過處理,是否是原生log,對于消費者來說是透明的。
事件驅動架構下的log作用:
分布式系統構建復雜,最好的處理辦法是各盡其責,各個組件完善自己的功能,大家協同合作,各系統可通過log進行溝通,數據共享,降低自身復雜度。
在分布式系統中,log應解決的問題:
數據一致性問題
節點數據同步
提供提交語義,來表明多系統對某件事情達成共識
提供可訂閱的數據源
數據恢復能力
負載均衡能力