从 RAID 到分布式系统的副本分布

从 RAID 到分布式系统的副本分布

我们知道,在面对大规模数据的计算和存储时,有两种处理思路:

  • 垂直扩展(scale up):通过升级单机的硬件,如 CPU、内存、磁盘等,提高计算机的处理能力。
  • 水平扩展(scale out):通过添加更多的机器到分布式系统中,提高整个系统的处理能力。

在分布式技术尚未成熟的时候,小型机、中型机、大型机、超级计算机逐步升级的方案几乎是大型公司的唯一选择,但是这种垂直扩展是有天花板的,硬件升级的速度远远比不上数据规模的增速,即使是超级计算机也无法满足人们对计算资源的需求。…

继续阅读 “从 RAID 到分布式系统的副本分布”

浅谈 MySQL 中的事务和 ACID

浅谈 MySQL 中的事务和 ACID

所谓事务(Transaction),就是通过确保成批的操作要么完全执行,要么完全不执行,来维护数据库的完整性。举一个烂大街的例子:A 向 B 转账 1000 元,对应的 SQL 语句为:(没有显式定义事务)

UPDATE deposit_table set deposit = deposit - 1000 WHERE name = 'A';
UPDATE deposit_table set deposit = deposit + 1000 WHERE name
继续阅读 “浅谈 MySQL 中的事务和 ACID”
TCP 超时与重传

TCP 超时与重传

上一篇介绍 TCP 的文章「TCP 三次握手,四次挥手和一些细节」反馈还不错,还是蛮开心的,这次接着讲一讲关于超时和重传那一部分。

我们都知道 TCP 协议具有重传机制,也就是说,如果发送方认为发生了丢包现象,就重发这些数据包。很显然,我们需要一个方法来猜测是否发生了丢包。最简单的想法就是,接收方每收到一个包,就向发送方返回一个 ACK,表示自己已经收到了这段数据,反过来,如果发送方一段时间内没有收到 ACK,就知道…

继续阅读 “TCP 超时与重传”

TCP 三次握手,四次挥手和一些细节

TCP 三次握手,四次挥手和一些细节

上一次讲了 UDP 协议,从这次开始,就要讲 TCP 协议了,因为 TCP 协议涉及到的东西很多,一篇文章概括不完,所以我把 TCP 协议的内容分成好几个部分,逐个击破。

TCP 报文段结构

一谈到 TCP 协议,大家最先想到的词就是面向连接可靠。没错,TCP 协议的设计就是为了能够在客户端和服务器之间建立起一个可靠连接。

在讲连接过程之前,我们先来看看 TCP 的报文段结构,通过这个结构,我们可以知道 TCP 能够提供什么信息:


这里有几点是需要注意的:…

继续阅读 “TCP 三次握手,四次挥手和一些细节”

UDP 协议那点事儿

UDP 协议那点事儿

最近在回顾计算机网络的知识,以前上课没有认真学,只记得几个高大上的术语,所以趁着这次回顾,把学到的知识用博客的形式记录下来,一来加深自己的印象,二来希望让你对这些基础知识有一个更深入的了解。当然,我会尽量把 UDP 协议讲清楚,讲明白,让你“不虚此行”。


UDP( User Datagram Protocol )协议,翻译过来就是用户数据报协议 ,跟 TCP 协议一样,都是位于 OSI 模型的传输层。不过比起 TCP 协议,UDP…

继续阅读 “UDP 协议那点事儿”

从发展史理解操作系统设计需求

从发展史理解操作系统设计需求

尽管操作系统发展史不是研究操作系统的重点,但是在这一发展过程中,衍生出了许许多多与操作系统相关的重要概念,如果知道这些概念出现在怎样的背景下,以及产生的原因,在后期学习中就不会觉得一些概念出现的比较突兀。除此之外,了解操作系统的发展史,理解设计需求,有助于我们站在计算机的角度思考问题。

ENIAC 与串行处理

计算机的发展可以追溯到 1946 年,世界上第一台通用计算机「ENIAC」 诞生在这一年的 2 月14 日(这天正好是情人节)。…

继续阅读 “从发展史理解操作系统设计需求”