Yang's Blog

计算机的时钟(四):TrueTime

本系列文章主要介绍计算机系统中时钟的处理。主要内容包含NTP,Lamport逻辑时钟,向量时钟,TrueTime等。本文是第四篇,介绍TrueTime。 计算机的时钟(一):NTP协议 计算机的时钟(二):Lamport逻辑时钟 计算机的时钟(三):向量时钟 在本系列上面的文章中我们介绍过NTP协议,使用网络来同步真实世界的物理时间(Wall Clock)。由于广域网的复杂网络状况,...

计算机的时钟(三):向量时钟

本系列文章主要介绍计算机系统中时钟的处理。主要内容包含NTP,Lamport逻辑时钟,向量时钟,TrueTime等。本文是第三篇,介绍向量时钟。 在《计算机的时钟(二):Lamport逻辑时钟》中,我们介绍过对于任意两个事件a和b,如果 a → b,那么 C (a) < C (b),但是反向并不成立,C(a) < C(b)推不出来a→b。本文介绍的向量时钟(Vector Clo...

雪花算法把玩

雪花算法(snowflake)是Twitter提出的一种在分布式系统中生成唯一ID的算法。格式如下: 算法生成的是一个64位整型数字,由四部分组成: 首位始终填0。 接下来41位是从某个时间点开始计算的时间戳,单位为毫秒,可以不重复使用69年。 接下来10位是WorkerID,可以分配1024个节点。 最后12位是顺序增长的序列号,每个节点每毫秒可以生成4096个ID...

计算机的时钟(二):Lamport逻辑时钟

本系列文章主要介绍计算机系统中时钟的处理。主要内容包含NTP,Lamport逻辑时钟,向量时钟,TrueTime等。本文是第二篇,介绍Lamport逻辑时钟。 在分布式系统中,不同的服务分布在不同的机器上,如何确定不同机器上的两个事件发生的先后顺序呢?在《计算机的时钟(一):NTP协议》中我们介绍过NTP协议存在误差,所以不能通过不同机器上的本地时间来确定顺序。Lamport逻辑时钟是解决...

计算机的时钟(一):NTP协议

本系列文章主要介绍计算机系统中时钟的处理。主要内容包含NTP,Lamport逻辑时钟,向量时钟,TrueTime等。本文是第一篇,介绍NTP协议。 电脑的时钟 不知道你注意过没有,假如隔了好几天打开你的电脑,任务栏的时间依然是显示正确的,即使你的电脑没有联网,这是如何做到的? 计算机的主板上有一个石英晶体振荡器和一个纽扣电池。石英晶体振荡器的频率是32768Hz每秒。在通电的时候,...

从单机事务到分布式事务

什么是事务 单机事务 redo日志 undo日志 MVCC 脏读 不可重复读 幻读 事务流程 分布式事务协议 两阶段提交 第一阶段Pre...

OceanBase原理与实现分析

最近看了《大规模分布式存储系统:原理解析与架构实践》,主要介绍了OceanBase数据库的原理和实现,是一本难得的好书。本文介绍书中的关键内容以及自己的想法。如果你有充足的时间,建议直接读原书,没必要花时间阅读本文,如果没有的话,可以阅读本文了解OceanBase的整体架构和关键内容。另外书中的内容是基于OceanBase 0.4版本的,0.4发布于2012年,距今已经8年,一些内容上可能有...

每个人都应该知道的性能参数

假设你是系统开发人员,如何估算出你设计开发的系统的性能?可能很多人都没有事先估算过自己系统的性能,而是等到开发完成后进行性能压力测试。但是如果在架构设计上就有问题,等到开发完再去修改架构代价就太大了。那么有没有办法在设计完系统架构后就估算出这个架构的性能呢?或者说我们设计了几套系统架构,如何判断这几个架构的性能优劣? 这个问题的关键点是需要知道常见硬件的性能参数。 如何使用这个表呢?...

Python程序性能分析和火焰图

之前做过一个Python程序,用来解析Excel文件,经过一串复杂的处理,导出成其他不同格式的文件。随着需要处理的Excel文件越来越多,程序的执行时间也越来越长,需要对性能进行优化。 性能优化首先要找到瓶颈在什么地方,才能做针对性的优化。Python的性能剖析主要有下面几种方法: cProfile line_profiler pyflame pyinstrumen...

如何高效阅读

我看书的效率一直不高,经常会遇到以下问题: 一本书看了好几个月还没看完 同时看好几本书,导致每本书的印象都不深,并且进度慢 看到一本不错的书就会立即购买,导致我的Kindle里面已经积攒了好几十本要看的书 一本书看完后,过一两个月,内容差不多就忘光了 最近看到《麦肯锡精英高效阅读法》,书很薄,但介绍的高效阅读方法却很有效,而且容易实践操作,值得介绍一下。 确保最基本的...