Linkedln、Netflix等知名應(yīng)用都通過(guò)實(shí)時(shí)響應(yīng)用戶和系統(tǒng)事件,來(lái)提高靈活度和響應(yīng)速度。在大規(guī)模系統(tǒng)中,需要能高效地監(jiān)控、管理和處理大量的事件流。Kafkal具以及諸如統(tǒng)一日志處理的創(chuàng)新模式可幫助我們?yōu)榛谑录南到y(tǒng)創(chuàng)建連貫的數(shù)據(jù)處理架構(gòu)。
《事件流實(shí)戰(zhàn)》講解如何使用統(tǒng)一日志模式,來(lái)聚合、存儲(chǔ)和處理事件流。在這本實(shí)用指南中,你將看到Lambda架構(gòu)、流聚合和事件重放處理等重要的系統(tǒng)設(shè)計(jì),還將看到擴(kuò)展、彈性和高級(jí)流模式!
讀完《事件流實(shí)戰(zhàn)》,你將能設(shè)計(jì)出易于構(gòu)建、部署和維護(hù)的由數(shù)據(jù)驅(qū)動(dòng)的大型應(yīng)用。
《事件流實(shí)戰(zhàn)》主要內(nèi)容:
校驗(yàn)與監(jiān)控事件流
事件分析
事件建模
Apache Kafka與Amazon Kinesis的使用示例
讀者對(duì)象:
適合具有Java、Scala或Python編程經(jīng)驗(yàn)的讀者。
“事件”對(duì)于開(kāi)發(fā)者而言是個(gè)熟悉的詞,各種開(kāi)發(fā)框架、編程語(yǔ)言中都或多或少有“事件”的概念,但很少有書籍談及如何運(yùn)用事件對(duì)系統(tǒng)建模!傲鳌钡母拍钜嗍侨绱,計(jì)算機(jī)世界中充斥著各種流:輸入輸出流、網(wǎng)絡(luò)流,還有最近幾年出現(xiàn)的流計(jì)算。而《事件流實(shí)戰(zhàn)》把事件與流的概念結(jié)合在一起,展示了一種嶄新的架構(gòu);通過(guò)流這種數(shù)據(jù)架構(gòu)在系統(tǒng)之間傳遞事件,不僅解除了系統(tǒng)間的耦合,也為系統(tǒng)帶來(lái)了更好的擴(kuò)展性,同時(shí)數(shù)據(jù)分析師可以自由地開(kāi)展各種分析。
在充斥著數(shù)據(jù)的環(huán)境中編寫一個(gè)真實(shí)可用的應(yīng)用程序猶如在火焰中參加彩蛋射擊游戲。每一步都需要你組合事件流、批量歸檔,用戶與系統(tǒng)都需要實(shí)時(shí)地響應(yīng)。統(tǒng)一日志處理是一種用來(lái)應(yīng)對(duì)批量與準(zhǔn)實(shí)時(shí)流數(shù)據(jù)處理、事件日志與聚合、統(tǒng)一事件流數(shù)據(jù)處理的綜合架構(gòu)。通過(guò)從多個(gè)數(shù)據(jù)源高效地創(chuàng)建一個(gè)單獨(dú)的統(tǒng)一事件日志,統(tǒng)一日志處理能讓大規(guī)模的數(shù)據(jù)驅(qū)動(dòng)應(yīng)用變得更易于設(shè)計(jì)、部署與維護(hù)。本書讀者對(duì)象
本書適合有Java使用經(jīng)驗(yàn)的程序員。Scala與Python的使用經(jīng)驗(yàn)可以幫助你更好地理解書中的一些概念,但并不是必需的。
Alexander Dean開(kāi)發(fā)開(kāi)源的事件處理與分析平臺(tái)Snowplow。Valentin Crettaz是一名擁有25年經(jīng)驗(yàn)的獨(dú)立IT咨詢顧問(wèn)。
金中浩,曾在花旗銀行、中國(guó)平安、360金融擔(dān)任軟件工程師與系統(tǒng)架構(gòu)師,現(xiàn)為Thought Works高級(jí)咨詢顧問(wèn)。在15年的職業(yè)生涯中一直從事金融行業(yè)的軟件開(kāi)發(fā)與系統(tǒng)架構(gòu)工作,擅長(zhǎng)函數(shù)式編程與數(shù)據(jù)分析,堅(jiān)信技術(shù)能讓生活變得更美好。
第I部分 事件流與統(tǒng)一日志
第1章 事件流
1.1 術(shù)語(yǔ)定義
1.1.1 事件
1.1.2 持續(xù)事件流
1.2 探尋我們熟悉的事件流
1.2.1 應(yīng)用級(jí)日志
1.2.2 站點(diǎn)分析
1.2.3 發(fā)布/訂閱消息
1.3 統(tǒng)一持續(xù)事件流
1.3.1 古典時(shí)代
1.3.2 混合時(shí)代
1.3.3 統(tǒng)一時(shí)代
1.4 統(tǒng)一日志的應(yīng)用場(chǎng)景
1.4.1 用戶反饋環(huán)路
1.4.2 整體系統(tǒng)監(jiān)控
1.4.3 應(yīng)用系統(tǒng)版本在線升級(jí)
1.5 本章小結(jié)
第2章 統(tǒng)一日志
2.1 深入統(tǒng)一日志
2.1.1 統(tǒng)
2.1.2 只可追加
2.1.3 分布式
2.1.4 有序性
2.2 引入我們的應(yīng)用
2.2.1 識(shí)別關(guān)鍵事件
2.2.2 電子商務(wù)中的統(tǒng)一日志
2.2.3 首個(gè)事件建模
2.3 配置統(tǒng)一日志
2.3.1 下載并安裝Apache Kafka
2.3.2 創(chuàng)建流
2.3.3 發(fā)送和接收事件
2.4 本章小結(jié)
第3章 使用Apache Kafka進(jìn)行事件流處理
3.1 事件流處理入門
3.1.1 為什么要處理事件流?
3.1.2 單事件處理
3.1.3 多事件處理
3.2 設(shè)計(jì)第一個(gè)流處理程序
3.2.1 將Kafka作為黏合劑
3.2.2 明確需求
3.3 編寫一個(gè)簡(jiǎn)單的Kafka Worker
3.3.1 配置開(kāi)發(fā)環(huán)境
3.3.2 應(yīng)用配置
3.3.3 從Kafka讀取事件
3.3.4 向Kafka寫入事件
3.3.5 整合讀取與寫入
3.3.6 測(cè)試\"
3.4 編寫單事件處理器
3.4.1 編寫事件處理器
3.4.2 更新mam方法
3.4.3 再次測(cè)試
3.5 本章小結(jié)
第4章 使用Amazon Kinesis處理流事件
4.1 向Kinesis寫入事件
4.1.1 系統(tǒng)監(jiān)控與統(tǒng)一日志
4.1.2 與Kafka的術(shù)語(yǔ)差異
4.1.3 配置事件流
4.1.4 事件建模
4.1.5 編寫代理程序
4.2 從Kinesis讀取事件
4.2.1 Kinesis的框架與SDK
4.2.2 使用AWSCLI讀取事件
4.2.3 使用boto監(jiān)控Kinesis stream
4.3 本章小結(jié)
第5章 有狀態(tài)的流式處理
……
第II部分 針對(duì)流的數(shù)據(jù)工程
第III部分 事件分析