读书笔记 - I heart logs

读书笔记 - I heart logs_第1张图片

作者Jay Kreps是前LinkedIn的Principle Staff Engineer,现Confluent CEO,在大数据处理领域深耕多年。我感觉这本书还是很好的,虽然只有40多页,但是我觉得内容挺多的,没凑字数的废话。

整理下我个人的takeaway:

对日志的认知

"log"这个词吃了命名的亏,以为人们习惯把代码里调错的各种print当成log,所以没把它当回事。但事实上log的核心是数据,不应该是给人看的,而是给机器读的。log记录的是什么时候发生了什么——而这恰恰就是分布式系统最核心要处理的内容。

log在分布式系统中可以用于两种场景:

  1. 一种是state-machine replica,就是类似于pub/sub,写入一个顺序
  2. 另一种是primary backup,利用log做状态备份
    读书笔记 - I heart logs_第2张图片

日志服务应该作为一个独立的服务,并以此可以成为以下系统的基础:

  1. 数据整合,比如支持各种各样团队不同需求的数据可视化
  2. 实时数据处理,比如批处理、流处理
  3. 分布式系统的整体设计,这本书里介绍了如何利用log去对分布式系统架构进行解耦

基于日志服务的系统建设

对日志的需求遵循以下“Maslov需求金字塔”的顺序,上层建筑依赖于下层基础:

  1. 最底层 Acquisition / Collection:数据采集相关,大部分公司在这层就不行了
  2. 再上层是 Semantics:统一格式才能有统一处理
  3. 再上层是 Understanding:如何理解或者帮助人们更好的理解数据,比如一系列的数据分析和可视化。
  4. 最上层是 Automation: 终极需求是基于数据做自动决策,不需要人的干预
    读书笔记 - I heart logs_第3张图片

数据整合

如何使用一套数据服务现代公司形形色色各种team的各种各样的需求?- 使用log结合pub/sub的模式,不同team可以订阅自己关注的事件。这样也能实现互相之间的独立。

批量处理

为了兼顾实时性和数据的完整性,很多人是如下使用一套批处理一套流处理的方式处理数据(http://bit.ly/beat-cap):
读书笔记 - I heart logs_第4张图片
但是这样维护成本很大,其实可以都使用流的处理方式,如下图所示,新的一批处理好把请求导向新的,把旧的删除就好了(即部署数据如同部署服务一样?):
读书笔记 - I heart logs_第5张图片

你可能感兴趣的:(日志,读书笔记,大数据)