分布式搜索系统

一 30th, 2013

分布式搜索系统,解决数据库没法满足的需求

最近参与的一个项目,有个很变态的需求。业务方需要从商品库中根据不同的属性进行筛选出指定的商品出来,而商品的属性大家都知道是非常多的,而且本身商品库中的数据量就不小(具体数据我就不说了).

抽象下这个需求,可以描述如下: 现在有一张数据量非常大的表A,其属性字段有50个左右,其数据量就当作1亿条记录吧。有需求建索引的字段大概有40个,其查询的响应需求也是非常高的。

面对这种变态的需求,直接操作数据库进行查询肯定是不靠谱的,在技术选型的时候,我们想到了搜索引擎的做法。

通过ETL开发工程师将每天需要的产品数据抽取出来,保存为文件格式。然后通过分布式搜索系统对其建索引,对外提供查询。

我们采用的技术方案涉及到的具体技术有:Hadoop,Hive,Zookeeper,Solr。除了Hadoop和Hive之前有过接触之外,像Zookeeper和Solr也是第一次接触,还有蛮多东西需要去了解的。不过幸运的是,这些都是Hadoop的正式子项目, 网上的文档及资料也都非常丰富。

Hadoop:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

Hive: 它是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

ZooKeeper: 它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Solr:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

选用的技术已经确定,后面需要做的就是将这些框架进行封装,然后将其打通串联起来,形成一个有效的系统。当然现在还刚刚只是开始,接下来的才是最艰难的时刻!





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51704

订阅本站:http://www.wangyuxiong.com/feed

分类: 分布式系统与计算 架构设计         标签: , , ,
  1. 新浪微博rss
    十一 10th, 201300:26

    最后实现效果怎么样呢?

    • metaboy
      十一 16th, 201314:09

      效果应该来说非常不错,现在很多业务线都会使用这种方式来做。

无觅相关文章插件,快速提升流量