C++自制Redis数据库(二)部分设计前置问题

来源:互联网 发布:网络协议栈是什么 编辑:程序博客网 时间:2024/06/11 22:09

单机设计前置问题

1.各种数据结构如何设计,以适应所有功能。

2.服务器如何保存数据库。

3。服务器如何保存具体的数据,多少在内存。

4.如何对待依靠时间戳来判定数据的可靠性。

5.接着是如何应用时间来清除老的键值对。

6.如何设计内存管理模块

7.过期的键如何删除

8.日志如何处理会更高效

9.AOF RDB持久化如何实现

10.如何从文件中恢复数据到内存

11.事务极多的情况下,是否需要队列

12. 文件事件与事件事件的调度

13.网络编程设计,消息的数据结构,分包发送消息

14.服务器接受到消息后,如何读取命令然后做哪些预备工作开始执行命令

简单多机设计前置问题

1.设计存储系统的时候需要考虑如何通过读取持久化介质中的数据来恢复内存信息,从而恢复到宕机前的某个一致性状态。包括从core dump 中恢复信息。

2.进程重启后从core dump 文件中恢复内存信息。

3.网络永远是不可靠的,只有接受到对方回复的信息才能确定消息发送成功。

4.系统设计的时候必须考虑网络出现异常并采取相应的处理措施

5.磁盘故障需要考虑多台服务器,当一个服务器磁盘故障后,我们需要从另一个服务器读取文件,恢复数据。

6.副本是多机存储系统容错的唯一手段。

7.设计之初就需要进行性能估计,不然会出现重大设计失误。

8.如何处理超时问题,服务器处理了请求但是客户端没有接受,如何处理

9.一致性问题如何解决。

10.如何衡量其性能。

11.数据如何均衡散列数据到多台服务器,保证大作业用户的效率。

12.如何实现简单负载均衡功能,心跳包是如何实现的。

13.复制数据的时候如何同步副本,必须数据备份好之后才能提供写完成操作。

14.强同步方式,与异步同步方式。

15.容错问题如何解决,故障检测(心跳,租约)

16.多个节点之间如何同步,迁移数据

 

 

查看原文:http://zmrlinux.com/2016/02/05/c%e8%87%aa%e5%88%b6redis%e6%95%b0%e6%8d%ae%e5%ba%93%ef%bc%88%e4%ba%8c%ef%bc%89%e9%83%a8%e5%88%86%e8%ae%be%e8%ae%a1%e5%89%8d%e7%bd%ae%e9%97%ae%e9%a2%98/

0 0