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