分布式系统

分布式系统:数据分布方式

哈希方式 1. 将哈希值与机器中的机器建立映射关系,将不同哈希值的数据分布到不同的机器上 2. 缺点: 1. 扩展性不高,一旦集群规模扩展,几乎所有的数据需要被迁移并重新分布 1. 解决方式,将对应关系作为元数据由专门的元数据服务器管理 2. 数据倾斜问题 data skew 按数据范围分布 1. 将数据按特征值的值域范围划分为不同的区间,使得集群中每台服务器处理不同区间的数据 2. 当某个区间的数据量突破某个阈值时,将区间分裂拆分为两个区间 3. 需要元服务器,维护数据分布信息 按数据量分布 将数据视为顺序增长的文件,并按照一定大小划分为 chunk,需要元数据服务器记录数据分布信息 一致性哈希

  • zgljl2012
2 min read
分布式系统

分布式系统:一致性级别

分布式系统一致性级别 强一致性 任何时刻任何用户或任何节点都可以读到最近一次成功更新的数据。 实现强一致性的一致性算法 1. Two-Phase Commit, 两阶段提交 2. Three-Phase Commit,三阶段提交 3. Paxos 4. Raft Paxos 是目前最重要、应用最广的算法。 > 世界上只有一种一致性协议,就是Paxos, 其他协议要么是paxos的简化,要么是错误的 当然,严格地讲,Paxos 和 Raft 应该是共识算法,没有一致性强弱之分 单调读一致性 任何时刻,任何用户一旦读到某个数据在某次更新后的值,

  • zgljl2012
1 min read
clojure

Clojure安装与入门

clojure是lisp语言在java上的方言,clojure视代码为数据,且拥有一套lisp宏系统。 Clojure提倡不可变性与持久数据结构,并鼓励程序员显式地管理标识及其状态。对利用不可变值及显式时间进展构造进行编程的专注旨在促进更加健壮的(尤其是多线程)程序的开发。 Clojure的类型系统是完全动态的,但人们近期也开始探索其基于渐进类型化的实现。 安装 Leiningen 这是一个用于管理、运行clojure的工具。 Mac/Linux wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein chmod 755 ./lein sudo ./lein /usr/bin/

  • zgljl2012
2 min read
zgljl2012@gmail.com