设计一个基于socket或基于http的服务器,服务内容是提供一种简单的key/value映射关系的管理与查询。
下面的所有操作都是通过结构体Node来传递的:
本场景中需要client和server两个程序
client:
client端有两种操作
int AddNode(const struct Node *node);//将制定的node保存到server上 int GetNode(struct Node *node);//下载已有的node到客户端,需要保证key完整
server:
server端接收client的两种请求,然后坐到:
1、当内从中保存的node数目到阈值时,顶起将node保存成磁盘文件
2、client端在执行add时,如果对应的key已经存在于server端,那么覆盖原有的值。
进阶设计:
1、用LRU cache去加速查找磁盘文件的速度
2、考虑如何支持多个client同时访问,用互斥锁等工具来避免数据被破坏。
3、在整个传递过程中增加超时机制
4、用bloomfilter去加速查找磁盘文件的速度
5、如果server程序有可能以外退出,如何保证未写到磁盘的node在重新启动server之后可以被成功恢复
浙公网安备 33010602011771号