log在當(dāng)前互聯(lián)網(wǎng)中的應(yīng)用:
分布式數(shù)據(jù)系統(tǒng)中有序的數(shù)據(jù)變化,數(shù)據(jù)分布式化
消息系統(tǒng)----消息系統(tǒng)是事件驅(qū)動(dòng)架構(gòu)中必不可少的元素瘪菌。log是各種消息系統(tǒng),activemq,kafka叹阔,rocketmq中的基本單元,承載事件传睹《保可使用消息系統(tǒng)構(gòu)建業(yè)務(wù)總線,解耦事件產(chǎn)生者與事件關(guān)注者欧啤。也可用作負(fù)載均衡睛藻。
數(shù)據(jù)流--應(yīng)用于數(shù)據(jù)集成,數(shù)據(jù)共享問題
實(shí)時(shí)計(jì)算--流處理邢隧,解決pull方式的沉重低效店印,與高延遲
簡(jiǎn)單說上面幾點(diǎn)就是 log解決了
協(xié)調(diào),同步倒慧,數(shù)據(jù)集成(共享)按摘,解耦讥邻,過程中處理 五大問題
協(xié)調(diào):通過log傳輸信息,使得各個(gè)系統(tǒng)統(tǒng)一對(duì)一件事物的決策確定
同步:子系統(tǒng)只關(guān)注主系統(tǒng)的數(shù)據(jù)變化事件log院峡,而不關(guān)注應(yīng)用對(duì)數(shù)據(jù)的操作兴使。
數(shù)據(jù)集成:各系統(tǒng)共享數(shù)據(jù),數(shù)據(jù)源提供可積壓照激,可重復(fù)消費(fèi)消息发魄,可記錄客戶端消費(fèi)位置的log日志集群實(shí)現(xiàn)。
解耦:消費(fèi)者與生產(chǎn)者解耦俩垃,互相不關(guān)注對(duì)方的存在励幼,消費(fèi)者以log獲知事件的發(fā)生,并可實(shí)現(xiàn)削峰填谷口柳,消費(fèi)者可擴(kuò)增消費(fèi)能力苹粟,或削弱消費(fèi)能力,而生產(chǎn)者不必調(diào)整生產(chǎn)能力跃闹。
過程中處理:實(shí)時(shí)計(jì)算的奧妙在于拓展了數(shù)據(jù)源嵌削,對(duì)于二級(jí)消費(fèi)者,甚至三級(jí)消費(fèi)者望艺,可能消費(fèi)的數(shù)據(jù)是一級(jí)消費(fèi)者苛秕,二級(jí)消費(fèi)者組裝后的數(shù)據(jù),但是三級(jí)消費(fèi)者無需關(guān)注中間處理過程找默。實(shí)時(shí)計(jì)算在于在事件最終落地之前艇劫,實(shí)時(shí)的做了合并,修改惩激,分析等操作店煞。通過log,實(shí)時(shí)計(jì)算組件可構(gòu)建一個(gè)完善的數(shù)據(jù)流风钻。
分布式系統(tǒng)中的logs
解決了兩個(gè)重要的分布式數(shù)據(jù)系統(tǒng)中的問題:
1顷蟀,有序的數(shù)據(jù)變化 :redis aof數(shù)據(jù)同步,mysql主從
2魄咕,數(shù)據(jù)分布式化 集群方式存儲(chǔ)數(shù)據(jù)
數(shù)據(jù)集成中的log
數(shù)據(jù)集成是把不同來源衩椒、格式蚌父、特點(diǎn)性質(zhì)的數(shù)據(jù)(基礎(chǔ)數(shù)據(jù)哮兰,簡(jiǎn)單加工)在邏輯上或物理上有機(jī)地集中,從而為企業(yè)提供全面的數(shù)據(jù)共享苟弛。例如集團(tuán)下子公司A喝滞,與集團(tuán)下子公司B的數(shù)據(jù)需要共享。
可見膏秫,數(shù)據(jù)是整個(gè)系統(tǒng)應(yīng)用中右遭,最底層的支持,一個(gè)可靠的數(shù)據(jù)源是構(gòu)建一個(gè)好的數(shù)據(jù)集成系統(tǒng)的關(guān)鍵。
數(shù)據(jù)源可以是各種數(shù)據(jù)庫里的表窘哈,也可以是一個(gè)消息中間件內(nèi)整合了的log日志吹榴,消息中間件作為數(shù)據(jù)集成的的數(shù)據(jù)源,比純的數(shù)據(jù)庫中的數(shù)據(jù)作為數(shù)據(jù)集成的源頭有如下優(yōu)點(diǎn):
1滚婉,可實(shí)時(shí)消費(fèi)图筹,減少了對(duì)數(shù)據(jù)倉庫大批量pull的繁雜,消費(fèi)者可根據(jù)自己索引快速增量pull數(shù)據(jù)让腹。
2远剩,消息中間件統(tǒng)一過濾,規(guī)范的事件log格式骇窍,避免數(shù)據(jù)倉庫中對(duì)數(shù)據(jù)的處理方式不對(duì)問題
3瓜晤,多數(shù)據(jù)源覆蓋困難(kafka使得消費(fèi)者與生產(chǎn)者解耦,消費(fèi)者無需關(guān)注多數(shù)據(jù)源腹纳,只需關(guān)注kafka數(shù)據(jù)集群)
定義良好的log結(jié)構(gòu)痢掠,以及一個(gè)好的可積壓的消息中間件是數(shù)據(jù)源構(gòu)建的關(guān)鍵。
實(shí)時(shí)計(jì)算中的log
實(shí)時(shí)計(jì)算中的log算是對(duì)數(shù)據(jù)集成中的log進(jìn)行的一種拓展嘲恍,經(jīng)過程序處理的log志群,傳遞給消費(fèi)者,而log本身是否經(jīng)過處理蛔钙,是否是原生log锌云,對(duì)于消費(fèi)者來說是透明的。
事件驅(qū)動(dòng)架構(gòu)下的log作用:
分布式系統(tǒng)構(gòu)建復(fù)雜吁脱,最好的處理辦法是各盡其責(zé)桑涎,各個(gè)組件完善自己的功能,大家協(xié)同合作兼贡,各系統(tǒng)可通過log進(jìn)行溝通攻冷,數(shù)據(jù)共享,降低自身復(fù)雜度遍希。
在分布式系統(tǒng)中等曼,log應(yīng)解決的問題:
數(shù)據(jù)一致性問題
節(jié)點(diǎn)數(shù)據(jù)同步
提供提交語義,來表明多系統(tǒng)對(duì)某件事情達(dá)成共識(shí)
提供可訂閱的數(shù)據(jù)源
數(shù)據(jù)恢復(fù)能力
負(fù)載均衡能力