日志写入commit record,整个事务就是成功的,重启后根据已经写入磁盘的日志信息恢复现场。缺陷是所有对数据的真实修改都必须发生在事务提交之后,即日志写入了commit record之后。。
学习笔记凤凰架构

批处理系统,又名批处理操作系统。批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。
分布式数据库

分布式系统利用多个节点的硬件资源,完成了本可以在单点系统上实现的任务。从用户的角度看,分布式系统就好像一个单独的计算机一样,只不过拥有更好的性能和稳定性,同时又易于扩展。为了达到这一目的,同样的一份数据会以副本(Replication)的形式保存在多个节点上。
分布式数据库

使用分布式系统与在一台计算机上编写软件有着根本的区别,主要的区别在于,有许多新颖和刺激的方法可以使事情出错。在这一章中,我们将了解实践中出现的问题,理解我们能够依赖,和不可以依赖的东西。
分布式数据库

数十年来,事务(transaction) 一直是简化这些问题的首选机制。事务是应用程序将多个读写操作组合成一个逻辑单元的一种方式。从概念上讲,事务中的所有读写操作被视作单个操作来执行:整个事务要么成功(提交(commit))要么失败(中止(abort),回滚(rollback))。如果失败,应用程序可以安全地重试。对于事务来说,应用程序的错误处理变得简单多了,因为它不用再担心部分失败的情况了,即某些操作成功,某些失败(无论出于何种原因)。
分布式数据库

如果复制中的数据不会随时间而改变,那复制就很简单:将数据复制到每个节点一次就万事大吉。复制的困难之处在于处理复制数据的变更(change),这就是本章所要讲的。我们将讨论三种流行的变更复制算法:单领导者(single leader),多领导者(multi leader)和无领导者(leaderless)。几乎所有分布式数据库都使用这三种方法之一。
分布式数据库

通常情况下,每条数据(每条记录,每行或每个文档)属于且仅属于一个分区。有很多方法可以实现这一点,本章将进行深入讨论。实际上,每个分区都是自己的小型数据库,尽管数据库可能支持同时进行多个分区的操作。
分布式数据库

网络编程模型通常有如下几种:Reactor, Proactor, Asynchronous, Completion Token, and Acceptor-Connector. 本文主要对最主流的Reactor模型进行介绍。通常网络编程模型处理的主要流程如下
reactor

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。
IO模型

微服务是一个很有用的系统架构,但是即便是它的支持者,也会承认这将导致一个巨额的微服务额外代价,这意味着,只在极为复杂的系统中微服务架构才能发挥作用。这巨额代价的本质实际上是对一系列服务进行管理的开销,对于简单的应用来说,整体架构反而更加有利。这成为了整体架构先行(monolith-first)策略的一个有力的论据——在创建一个新的应用的时候,即便你认为在将来它将更适合采用微服务架构,你在最初仍然应该先采用整体架构。
MartinFlower文章笔记