架构-快速构建一个搜索系统

快谈如何快速构建一个简单的搜索系统,话不多说,马上开始。

Let‘s Go!


背景

为什么要构建一个搜索系统?最主要是解决什么问题?用户打开你的网站,没有一个搜索功能,不能从你的网站中快速的找到想要的信息,可能用户很容易就会流失掉。在搜索的时候,大部分用户都最多只知道自己想要大体信息,如:在想买饼干的时候,查找“饼干”,搜索系统就是需要猜测用户想要的是什么,然后把系统里面存在的信息与用户想查找的信息进行匹配之后。得到结果再返回给用户的一个系统。通过这个你来我往的交流过程之后,用户可能会对系统产生信任感,从而把用户留住。

系统架构

struct

优点:

  • 可搜索数据与原业务数据进行了解耦
  • 可快速地扩展搜索系统的各组件。
  • 只需由四个组件(图中实线的组件)即可快速地实现,实现第一期即可快速上线
  • 支持多地部署。

缺点:

  • 数据更新有一定延迟(后期可通过 即时数据异步更新 解决)
  • 同步服务需要人工维护(后期可通过增加 同步服务管理系统 解决)

系统功能实现顺序推荐

第一期

  • 业务数据访问接入
  • 数据初始化
  • 定期同步数据更新

第二期

  • 服务监控
  • 日志监控

第三期

  • 即时数据异步更新
  • 数据监控及管理服务

后续扩展

  • 大数据推荐与搜索结果混合展示

最后

服务框架是随着业务发展不断演变的,我们会有1.0、1.5和2.0架构的迭代。要前瞻性地谋划和实施,要考虑未来三年、五年的容量。有一些系统瓶颈可能是要提前解决的,每一个场景不一样,根据特定的场景选择最合适的方案。

Written on January 19, 2018