从数据库和分布式系统浅谈日志那些事

本文探讨了日志在数据库和分布式系统中的重要性。日志作为按时间顺序记录事件的数据结构,用于保持数据一致性、同步远程副本及解决分布式系统的一致性问题。在数据库中,日志用于崩溃恢复和数据复制;在分布式系统中,状态机复制原理展示了日志如何帮助实现跨节点的一致性。同时,文章也区分了物理日志和逻辑日志以及主动-主动和主动-被动两种处理和复制方法。
摘要由CSDN通过智能技术生成

一.什么是日志?

日志可能是最简单的存储抽象。它是按时间排序的仅附加的,完全排序的记录序列。看起来像这样:
在这里插入图片描述
记录被追加到日志的末尾,并且读取从左到右进行。每个条目均分配有唯一的顺序日志条目号。

记录的顺序定义了“时间”的概念,因为左边的条目定义为比右边的条目更早。日志条目号可以视为条目的“时间戳记”。首先,将这种顺序描述为时间概念似乎有些奇怪,但是它具有方便的特性,即它可以与任何特定的物理时钟分离。当我们进入分布式系统时,此属性将变得至关重要。

记录的内容和格式对于此讨论而言并不重要。另外,我们不能只是继续向日志中添加记录,因为我们最终将用完空间。我会再回到这一点。

因此,日志与文件或表并没有什么不同。文件是字节数组,表是记录数组,日志实际上只是一种表或文件,其中记录按时间排序。

在这一点上,您可能想知道为什么值得谈论这么简单的事情?追加记录序列与数据系统有什么关系?答案是日志有特定的用途:它们记录发生的情况和时间。对于分布式数据系统,从很多方面来说,这是问题的核心。

但是,在我们走得太远之前,让我澄清一下令人困惑的事情。每个程序员都熟悉日志的另一种定义-应用程序可能使用syslog或log4j将非结构化的错误消息或跟踪信息写到本地文件中。为了清楚起见,我将其称为“应用程序日志记录”。应用程序日志是我正在描述的日志概念的退化形式。最大的区别是文本日志主要供人类阅读,而我描述的“日志”或“数据日志”是为程序访问而构建的。

(实际上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值