项目
分布式 Web 搜索引擎
用 Java 实现的爬虫、索引器、PageRank、KVS 与类 RDD 的 Flame 计算层。
JavaConcurrencyNetworkingDistributed SystemsCustom KVSRDD-style Compute
概览
端到端的分布式搜索平台:自研爬虫、索引器、PageRank、带副本的键值存储、多线程 Web 服务器,以及名为 Flame 的 RDD 风格计算层。
问题
从零构建一个可用的搜索栈,意味着要在多台机器上协调爬取、存储、排序与服务,而且不能依赖现有的分布式框架。
我做了什么
用 Java 实现每一层:礼貌的多线程爬虫、索引器、PageRank、自研的分区 + 副本键值存储、多线程 Web 服务器,以及驱动索引与排序作业的 Spark-RDD 风格计算层 Flame。
架构
- 爬虫 — 带礼貌策略与 URL 前沿队列的多线程抓取器
- KVS — 分区、带副本的键值存储,自定义传输协议
- Flame — 基于 KVS 的类 RDD 计算层,提供 map / filter / fold 原语
- 索引器 + PageRank — 生成可搜索索引与排序分数的 Flame 作业
- Web 服务器 — 提供搜索界面的多线程请求处理器
技术亮点
- 在存储、计算与服务各层实现自定义网络、并发 I/O、分区、副本与分布式计算原语。
- 端到端调试爬虫、索引器、PageRank、存储与服务器之间的交互,提升整条流水线的可靠性。
成效
- 在不依赖现有分布式框架的前提下构建出可用的全栈搜索平台,从原始套接字到排序完整走过搜索系统的每一层。