本文是GitHub热门项目系统设计入门的学习笔记第1篇,本篇记录了Anki记忆软件和一些基本的理论概念。
工具
Anki
Anki是一个卡片式的用于帮助记忆的软件,它的数据文件是以.apkg结尾的,这种数据文件叫做抽认卡堆。系统设计入门里提供了抽认卡堆,帮助我们记忆一些核心概念,我们可以在手机上或者电脑上下载一个Anki并打开抽认卡堆。目前系统设计入门里提供的抽认卡堆都是英文的。
基本概念
可扩展性(Scalability)
简单来说,如果系统的性能(Performance)的增长与资源的增加是成比例的,服务就是可扩展的。另一个角度来看待性能与可扩展性:
- 如果你的系统有性能问题,对于单个用户来说是缓慢的;
- 如果你的系统有可扩展性问题,单个用户较快但在高负载下会变慢;
CAP理论
在一个分布式计算系统中,只能同时满足下列的两点:
- 一致性(Consistency):每次访问都能获得最新数据但可能会收到错误响应
- 可用性(Availability): 每次访问都能收到非错响应,但不保证获取到最新数据
- 分区容错性(Partition Tolerance): 在任意分区网络故障的情况下系统仍能继续运行
这里没有举例子,因此感觉对于之前没有概念的人来说不太好理解,推荐再看一下这篇【CAP 理论常被解释为一种“三选二”定律,这是否是一种误解】。
一致性模式
- 弱一致性
- 最终一致性
- 强一致性
可用性模式
故障切换
- Active-Passive
- Active-Active
复制
- 主-从
- 主-主
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。