跳至主要內容
分布式共识

分布式共识

什么是分布式共识

共识 (distributed consensus) 是分布式系统中最基本的问题,用来保证一个分布式系统的可靠性以及容错能力。简单来说,分布式共识性是指多个服务器的保持状态一致

共识问题通常形式化如下:一个或多个节点可以提议(propose) 某些值,而集群中的所有有效节点根据共识算法进行协商,最终决议(decides) 采纳某个节点的提议。

而共识算法必须满足以下性质:


钝悟...大约 8 分钟分布式分布式协同分布式协同综合分布式协同共识广播epochquorum
分布式分区

分布式分区

什么是分区

分区通常是这样定义的,即每一条数据(或者每条记录,每行或每个文档)只属于某个特定分区。实际上,每个分区都可以视为一个完整的小型数据库,虽然数据库可能存在一些跨分区的操作。

在不同系统中,分区有着不同的称呼,例如它对应于 MongoDB, Elasticsearch 和 SolrCloud 中的 shard, HBase 的 region, Bigtable 中的 tablet, Cassandra 和 Riak 中的 vnode ,以及 Couch base 中的 vBucket。总体而言,分区是最普遍的术语。


钝悟...大约 22 分钟分布式分布式协同分布式协同综合分布式协同分区分区再均衡路由
分布式复制

分布式复制

复制是指:在多个节点上保存相同数据的副本,每个副本具体的存储位置可能不尽相同。复制方法可以提供冗余:如果某些节点发生不可用,则可以通过其他节点继续提供服务。复制也可以帮助提高系统性能。

复制数据,可能出于各种各样的原因:

  • 提高可用性 - 即使部分组件(可能是多台机器,甚至整个数据中心)出现故障,系统也能保持正常运行。
  • 降低访问延迟 - 将数据放置在距离用户较近的地方,从而实现更快地交互。
  • 提高读吞吐量 - 采用多副本读取,大幅度提高系统读操作的吞吐量。

钝悟...大约 54 分钟分布式分布式协同分布式协同综合分布式协同复制主从多主无主
分布式事务

分布式事务

事务简介

什么是事务

在数据存储环境中,可能会出现各种各样的问题:

  • 数据库软件或硬件可能会随时失效(包括正在执行写操作的过程中)。
  • 应用程序可能随时崩愤(包括一系列操作执行到中间某一步)。
  • 应用与数据库节点间的连接可能会随时中断,数据库节点间也存在同样问题。
  • 多个客户端可能同时写入数据库,导致数据覆盖。
  • 客户端可能读到一些无意义的、部分更新的数据。
  • 客户端之间由于边界条件竞争所引入的各种奇怪问题。

钝悟...大约 43 分钟分布式分布式协同分布式协同综合分布式协同事务互斥ACID2PC3PCTCC本地消息表消息事务SAGAXA
分布式锁

分布式锁

什么是分布式锁

在计算机科学中,锁是在并发场景下用于强行限制资源访问的一种同步机制,即用于在并发控制中通过互斥手段来保证数据同步安全。

分布式锁,顾名思义,应用于分布式场景下,它和单进程中的锁并没有本质上的不同,只是控制对象由一个进程中的多个线程变成了多个进程中的多个线程;此外,临界区的资源也由进程内共享资源变成了分布式系统内部共享资源。

如何实现分布式锁

JDK 虽然提供了大量锁工具,但是只能作用于单一 Java 进程,无法应用于分布式系统。为了解决这个问题,需要使用分布式锁。

分布式锁的解决方案大致有以下几种:

  • 基于数据库实现
  • 基于缓存(redis,memcached 等)实现
  • 基于 Zookeeper 实现 ✅

注:推荐基于 ZooKeeper 实现分布式锁,具体原因看完本文即可明了。


钝悟...大约 17 分钟分布式分布式协同分布式协同综合分布式协同
分布式会话基本原理

分布式会话基本原理

由于 Http 是一种无状态的协议,服务器单单从网络连接上无从知道客户身份。

会话跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话。常用会话跟踪技术是 Cookie 与 Session。

Cookie

由于 Http 是一种无状态的协议,服务器单从网络连接上无从知道客户身份。

所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。


钝悟...大约 10 分钟分布式分布式协同分布式协同综合分布式调度会话