导航

项目简述

Posted on 2014-03-06 16:38  生存在夹缝中  阅读(219)  评论(0)    收藏  举报

 

  设计一个基于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之后可以被成功恢复