DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

原文链接

cockroachdb 在整个架构上,分为计算层和存储层。存储层管理 key-value 存储,支持分布式事务这些东西。key-value 是有序的,然后逻辑上按 range 进行划分,一段 range 的数据再物理上分布到具体的存储节点上面。每一块 range 的 key-value 数据会有多份副本,这样在分布式环境下,部分副本挂掉的时候数据不会丢失。

独享计算层,共享存储层。上层的 SQL 是租户之间物理隔离的,下面的 kv 存储是由所有租户去共享的。/tenant-id/table-id/index-id/key

但这个随之而来,有个问题是,存储资源的带宽如何去划定,共享存储资源,也就是共享存储带宽

原文链接

无序的不可能性

混沌之海里必然存在有序的岛屿——只要这片海足够大。

结构必然会自发地从混沌(只要它的规模够大!)中浮现,有时候它会以最出乎意料的方式出现在我们的日常生活中

所以,如何利用规模够大的情况,去构建一种策略,让系统按照某种有序的方式运转?

原文链接

Log-Structured Merge-tree

why lsm:

  • fast writes
  • tunable read-write performance
  • good space utilization

原文链接

区分了read-write quorum system以及majority系统之间的区别

img

针对

  • 加入节点 d,即从 {a,b,c} 变成 {a,b,c,d}。
  • 删除节点 a,即从 {a,b,c,d} 变成 {b,c,d}。

的情况,针对其中的网络隔离的情况,read-write符合替换,但majority达不到要求

join consensus算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
M(abc) x M(bcd) = {
ab ∪ bc,
ab ∪ cd,
ab ∪ bd,
bc ∪ bc,
bc ∪ cd,
bc ∪ bd,
ac ∪ bc,
ac ∪ cd,
ac ∪ bd,
} = {
abc,
abcd,
abd,
acd,
bc,
bcd,
} = {M(a,b,c,d),{b,c}}