项目

分布式 Web 搜索引擎

用 Java 实现的爬虫、索引器、PageRank、KVS 与类 RDD 的 Flame 计算层。

JavaConcurrencyNetworkingDistributed SystemsCustom KVSRDD-style Compute
分布式 Web 搜索引擎架构预览

概览

端到端的分布式搜索平台:自研爬虫、索引器、PageRank、带副本的键值存储、多线程 Web 服务器,以及名为 Flame 的 RDD 风格计算层。

问题

从零构建一个可用的搜索栈,意味着要在多台机器上协调爬取、存储、排序与服务,而且不能依赖现有的分布式框架。

我做了什么

用 Java 实现每一层:礼貌的多线程爬虫、索引器、PageRank、自研的分区 + 副本键值存储、多线程 Web 服务器,以及驱动索引与排序作业的 Spark-RDD 风格计算层 Flame。

架构

  • 爬虫 — 带礼貌策略与 URL 前沿队列的多线程抓取器
  • KVS — 分区、带副本的键值存储,自定义传输协议
  • Flame — 基于 KVS 的类 RDD 计算层,提供 map / filter / fold 原语
  • 索引器 + PageRank — 生成可搜索索引与排序分数的 Flame 作业
  • Web 服务器 — 提供搜索界面的多线程请求处理器

技术亮点

  • 在存储、计算与服务各层实现自定义网络、并发 I/O、分区、副本与分布式计算原语。
  • 端到端调试爬虫、索引器、PageRank、存储与服务器之间的交互,提升整条流水线的可靠性。

成效

  • 在不依赖现有分布式框架的前提下构建出可用的全栈搜索平台,从原始套接字到排序完整走过搜索系统的每一层。