62 lines
1.7 KiB
Markdown
62 lines
1.7 KiB
Markdown
# 9.1 Kvstore
|
||
|
||
## 需求
|
||
1. ntyco需要作为kvstore的submodule,通过git clone一次下载。 **完成**。
|
||
2. README需要包含编译步骤,测试方案与可行性,性能数据。
|
||
3. 全量持久化保存数据集。 **BUG FIX,完成**。
|
||
4. 持久化的性能数据。
|
||
5. 特殊字符,可以解决redis的resp协议。 **完成**。
|
||
```
|
||
简单字符串
|
||
+OK\r\n
|
||
错误
|
||
-ERR message\r\n
|
||
整数
|
||
:1000\r\n
|
||
批量字符串
|
||
$6\r\nfoobar\r\n
|
||
数组
|
||
*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n
|
||
```
|
||
6. 实现配置文件,把日志级别,端口ip,主从模式,持久化方案。 **完成**。
|
||
7. 持久化落盘用io_uring,加载配置文件用mmap。
|
||
8. 主从同步的性能,开启与关闭性能做到。
|
||
9. 主从同步600w条,出现的coredump。
|
||
10. 主从同步用ebpf实现。
|
||
11. 内存池测试qps与虚拟内存,物理内存。
|
||
12. 实现一个内存泄露检测组件。
|
||
|
||
|
||
## 环境安装与编译
|
||
```shell
|
||
# xml
|
||
sudo apt install libxml2 libxml2-dev
|
||
# hiredis client
|
||
sudo apt install -y libhiredis-dev
|
||
|
||
git clone git@gitlab.0voice.com:lianyiheng/9.1-kvstore.git
|
||
cd 9.1-kvstore/
|
||
make
|
||
```
|
||
|
||
## 测试
|
||
|
||
### 面试题
|
||
1. 为什么会实现kvstore,使用场景在哪里?
|
||
2. reactor, ntyco, io_uring的三种网络模型的性能差异?
|
||
3. 多线程的kvstore该如何改进?
|
||
4. 私有协议如何设计会更加安全可靠?
|
||
5. 协议改进以后,对已有的代码有哪些改变?
|
||
6. kv引擎实现了哪些?
|
||
7. 每个kv引擎的使用场景,以及性能差异?
|
||
8. 测试用例如何实现?并且保证代码覆盖率超过90%
|
||
9. 网络并发量如何?qps如何?
|
||
10. 能够跟哪些系统交互使用?
|
||
|
||
|
||
### 架构设计
|
||

|
||
|
||
|
||
|