如何设计一个基于Paxos的KV存储系统

1978年5月11日,《光明日报》发表本报特约评论员文章《实践是检验真理的唯一标准》,由此引发了一场关于真理标准问题的大讨论。

在各个平台,以并发笔记的ID分享过很多关于共识算法的内容了,所以接下来我准备分享Paxos的实战内容,如何基于Paxos设计一个分布式系统。

当然,这篇文章最主要的目的是:希望有更多感兴趣的小伙伴参与到这个项目来,我们可以一起讨论如何优化Paxos。

Klein介绍

1. 介绍

Klein是一个基于Paxos分布式共识类库,我使用它实现了KV存储、缓存。

项目地址(点击阅读原文跳转):https://github.com/shihuili1218/klein

你可以独立部署Klein,像使用Redis一样使用它;但是仅仅是这样的话,也太没有新意了,它有趣的地方在于:Klein可以内嵌入你的项目中,你可以不依赖任何中间件,保证各个成员之间的数据一致。

基于此,你可以有无限多的想法,例如用Klein来实现KV存储,或者用它来实现分布式缓存,甚至用它来实现分布式锁,etc anything.

9de82c3d99916d431994f239e7260488.gif

2. 玩点不一样的

众所周知,Paxos是存在一些局限的,诸如活锁、RPC交互次数过多,这使得Paxos让人望而却步。尽管对于这些问题,已经有了标准的解决方案,但是不玩些花样,造什么轮子呢?

  • 是否真的能支持并行协商?

  • Confirm阶段(应用状态转移)是否真的可以异步执行?

  • 如何为一个运行的系统创建快照?

  • Group的拆分是否有必要完全隔离?

  • 到底哪个提案会达成共识?

3. 愿景

愿景呢,当然是希望维护一个标准的共识类库,开箱即用。

同时希望可以进入Apache孵化器。

进度

1. Paxos

  • •  写请求、乱序协商,顺序确认【完成】

  • •  读请求,使用协商log完成【完成】

  • •  批量协商【完成】

  • •  优化prepare阶段【完成】

  • •  快照【完成】

  • •  拆分Group,proposer等角色无须隔离,只需隔离instance【完成】

  • •  增加Master:成员变更、优化读请求【进行中】

  • •  成员自动发现(调研)

  • •  数据对齐:成员上线、落后成员对齐

  • •  NWR

  • •  confirm优化读请求

  • •  不存在干扰key,无需执行一轮Prepare

2. 缓存

  • •  读、写、等基础功能【完成】

  • •  配合持久化实现LRU

  • •  TTL自动过期

3. 待优化

  • •  LogManager行锁

  • •  监控协商效率

  • •  监控线程池指标(DefaultTimer, ThreadExecutor)

白嫖几个打工人302715bbd99d7c257c7717509d49121e.gif

我了解到进入Apache孵化器,需要几个主要的维护者,另外所需的导师和推荐人,我正在寻找。

如果有希望进入Apache孵化器,参与者你将获得:

  • •  Apache账号

  • •  免费的Idea授权,无须在Google中搜索“idea 破解码”了

  • •  闪耀的个人简历

退居其次,未能进入Apache孵化器,你也获得丰富的共识经验,定期讨论共识算法所面临的问题,以及优化方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值