重新思考日志:业务系统竟然是一个大数据库?

2020 年 8 月 08 日

重新思考日志:业务系统竟然是一个大数据库?

《I Heart Logs 》出版于 2014 年,是一本很短小的书。作者 Jay Kreps,是前 LinkedIn 的 Principal Staff Engineer,也是 LinkedIn 许多著名开源项目的负责人及联合作者,如 Kafka、Voldemort 等。他是现任 Confluent 的 CEO,主要工作在于围绕实时数据提供企业级服务支持。这本书算是 Jay Kreps 过去多年实践的思考结晶。本文主要是对书中的一些看法、观点的梳理,有兴趣可以阅读原著或博客。

注:本文大部分图片、内容来自于原著或原博客。

日志即数据

在讨论日志之前,首先要明确日志的含义。这里的日志并非指我们常用的非结构化或半结构化的服务日志,而更接近数据库中常见的结构化的提交日志 (commit log/journal/WAL),这些日志通常是只往后追加数据,这里的序号暗含着逻辑时间,标识着连续日志产生的逻辑先后顺序:

a-structured-log

数据库中的日志

日志在数据库中常常被用来实现故障恢复、数据复制、最终一致性等。一个事务提交成功与否在日志提交成功时就可以确定,只要 WAL 落盘,便可告诉客户端提交成功,即便数据库发生故障,也能从 WAL 日志中恢复数据;日志 (如 BinLog) 的 pub/sub 机制可以用来在主节点与复制节点之间同步数据,通过同步的进度可以知道不同复制节点的同步进度,此外日志的逻辑顺序保证了主节点与复制节点之间数据的一致性。

原文链接:【 https://www.infoq.cn/article/QLrFHTKoKwDtGMSF0ISy 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2020 年 8 月 08 日 10:00 4713

评论 4 条评论

发布
用户头像
哈哈,看到一个亮点 job_version_n++
2020 年 08 月 17 日 14:45
回复
用户头像
理论上有一些道理,实际上实施难度巨大,基本没有可操作性
2020 年 08 月 15 日 22:24
回复
是的,不过抽象的角度很不错
2020 年 08 月 15 日 23:57
回复
用户头像
成功
2020 年 08 月 09 日 02:58
回复
没有更多评论了
  • 《Spotify 的入云之旅》系列之一——事件传输系统

    当Spotify的用户打开客户端听歌或者搜索音乐人,用户的任何一个触发的事件都会传送回Spotify的服务器。事件传输系统(也即,日志收集系统)是个有趣的项目,确保全球用户使用Spotify客户端所产生的事件都完全、安全的发送到数据中心。在本系列文章中,将讲述Spotify在这方面所做过的工作,而且会详细解说Spotify新的事件传输系统架构,并回答“为什么Spotify会基于Google云平台管理建立自己的新系统?”。

  • Structured Streaming:如何用 DataFrame API 进行实时数据分析?

    Spark在2016年的2.0版本中推出的Structured Streaming是基于什么样的思想,又是如何应用的?

    2019 年 5 月 27 日

  • 推荐阅读:分布式数据调度相关论文

    这些论文和相关的工程实践以及开源项目,相信可以让你在细节方面对分布式中最难的一块——数据调度方面有更多的认识。

    2018 年 1 月 9 日

  • 深入对比 Spark 与 Flink:帮你系统设计两开花

    Spark和Flink都在某种程度上统一了批处理和流处理,那么它们都有哪些异同点呢?

    2019 年 6 月 5 日

  • SOA 中的数据联邦技术解密

    关于如何在SOA环境中有效地访问数据,已经有了大量的文章,而Oracle的Dain Hansen最近在SOA杂志 上发表的文章《Demystifying Data Federation for SOA》不失为是对这些文章的一个很好总结。同时,正如标题所暗示的,它也是一篇关于数据联邦的很好介绍。

  • Kafka 不只是个消息系统

    Confluent联合创始人兼CEO Jay Kreps发表了一篇博客,给出了Kafka的真正定位——它不只是个消息系统,它还是个存储系统,而它的终极目标是要让流式处理成为现代企业的主流开发范式。

  • 消息传输的设计方式

    这几天拜读了郭斯杰的《Messaging,Storage,or both?》一文,大有感触,作者分享了自己过去几年时间里在工作中使用Apache Pulsar、DistributedLog,以及BookKeeper的实际经验。本文我将会解读他的这篇文章,并且加入我自己的实际理解和使用经验。

  • 分布式计算模式之 Stream:一门背锅的艺术

    我与你介绍了流计算的工作原理,并分析了Storm的核心组件,以加深你对流计算的理解。

    2019 年 10 月 28 日

发现更多内容

《代码整洁之道》原则整理

insight

编程

媒体的经营 04 | 难在:有所表达,影响决策

邓瑞恒Ryan

创业 媒体 技术社区

MongoDB入门笔记

编程随想曲

sql mongodb

Spring IOC 和 DI

再见孙悟空

spring

有问必答(2020-03-28):活着是为了什么?

冯夷

生活

OKR实践中的痛点(2):对不qi,对不qi

大叔杨

OKR Scrum 敏捷 敏捷开发

高并发下作余额扣减的一些经验

流沙

后端

小小说

冯夷

讲一个程序员如何副业月赚三万的真实故事

非著名程序员

程序员 副业 副业赚钱 提升认知

Ruoyi Vue前后端分离版本添加UReport设计器

赵欣

Vue Ruoyi uReport

Windows中使用vagrant+virtual box创建Docker

Java收录阁

Docker vagrant

如何写作一本书(1):写前须知

英子编辑

技术 写作 读书

设计一个地铁路线规划小工具

流沙

开源 后端

Angular的遍历,默写一遍。

玉龙BB

前端 angular 前后端分离 集合

一篇文章教你服务器OOM后如何快速定位处理问题

Java OOM 系统故障

我的第一个 100K app

道哥

ios swift 自由职业 独立开发者 App

「颜值即正义」那些管UI小姐姐要来的网站

童欧巴

CSS 效率工具 前端 前端开发 UI

有问必答(2020-04-24):如何做时间管理/任务管理?

冯夷

你问我答

技术“大跃进”进行中

冯夷

基础设施

使用Kubeadm搭建Kubernetes集群

Java收录阁

Kubernetes k8s

做成事情,唯有实干,没有捷径

Yolanda

有问必答(2020-04-23):为什么读书?怎么读书比较高效?

冯夷

你问我答

一文学会设计模式

this_is_for_u

c++ 互联网 极客 设计模式 架构模式

一个平凡者的阅读故事

卷尚

ELK环境搭建

for

elasticsearch Logstash Kibana ELK

关于需求评审和讲解的一些思考

Yezhiwei

程序猿 Windows 10 日常使用软件推荐

夏天

程序员 日常软件 windows

怎样打造用户喜爱的产品

孙苏勇

思考 产品设计 读书

使用Vue+Highcharts绘制中国地图

双城笔录

Vue 前端

回"疫"录(7):关键时刻稳住别浪

小天同学

疫情 回忆录 现实纪录 纪实

万物皆逝

冯夷

生活

重新思考日志:业务系统竟然是一个大数据库?-InfoQ