面试ip查找问题
现在有一台服务器内存是4G,硬盘无限大,服务器上存储了大量nginx 或者apache的访问日志,如何查询一个ip是否在服务器中访问过(注意不能借助第三方组建或者中间件工具,redis mysql es 等)
检索指定ip是否访问过?
- 在服务器协议个程序读取指定目录一条一条文件进行过滤找到了就通知在哪一个文件,
- 直接使用grep检索指定目录
如何检索一批ip是否访问过?
- 同样写一个程序一个文件一行读取后会被ip组进行比较
- 使用sed awk grep 进行检索
如果需要将这个功能封装成一个服务
- 使用布隆过滤器 判断是否一定不存在,一定不存在的pass 存在的再进行检索
- 将ipv4的数据分段,每一段是一个文件树的一层,组成一颗矮胖的二叉树
- 使用bitmap将所有数据读取到内存中后使用内存做索引,直接用bitmap检索ip段是否出现