-
Notifications
You must be signed in to change notification settings - Fork 0
pika移除sharding模式方案设计及任务划分
pika当前支持sharding模式和classic经典模式,但是当前的sharding模式一方面是性能跟不上,问题比较多,另外sharding模式的有,slot、partition、table等概念,非常混乱,我们打算删除sharding模式,用codis+classic模式实现分布式。 sharding模式的代码已经基本上删除完成,但是适配codis去做集群,需要删除classic经典模式下的table和partition的概念,具体的slot、partition、table之间的关系变化如下图所示:
原来的逻辑:
改动后的逻辑:
本次主要是要删除sharding模式的代码,同时将classic模式下的table、partition概念去除掉,统一用db和slot。
主要拆分成2个部分
1.删除sharding模块的相关代码(该部分已经完成)
2.去除classic经典模块的table和partition概念,统一用db替代,classic经典模式下一个pika_server会启动一个db,对应五种类型的blackwidow。
主要涉及到的模块及文件主要有:
管理类命令实现: pika_admin.h/cc
命令映射表实现: pika_command.h/cc
Geo命令实现 pika_geo.h/cc
pika_cmd_table_manager.h/.cc
kv数据实现: pika_kv.h/cc
bitmap相关实现: pika_bit.h/cc
list数据结构实现: pika_list.h/cc
hash数据结构实现 pika_hash.h/cc
set数据结构实现 pika_set.h/cc
zset数据结构实现 pika_zset.h/cc
meta数据实现: pika_meta.h/pika_meta.cc
定义pika_server pika_server.h/cc
配置文件: pika_conf.h/cc
pika_repl_client.cc/.h
pika_repl_server.cc/.h
pika_repl_bgworker.cc/.h
pika_rm.cc/.h
pika_consensus.cc/.h
pika_data_distribution.cc/.h
pika_stable_log.h/.cc
任务划分
任务 | 负责人 | 预完成时间 |
---|---|---|
命令实现部分 | ||
数据结构部分 | ||
启动及配置部分 | ||
功能实现部分 | ||
命令实现部分需要将原来命令中的传入参数partition的去除,改成不需要传递参数的方式: 例:
修改成为
与命令实现部分的修改方法类似,将传入参数中的partition概念去掉,将调用处使用的partition换成db
修改成为
函数实现部分 修改成为
这一部分相对前两部分的修改较为复杂,需要将
1、xcache 实现:
https://github.com/XimalayaCloud/xcache
2.pika在2018年12月之前的pika代码是可以直接适配codis的,代码连接: https://github.com/OpenAtomFoundation/pika/tree/pika_codis