一淘网系统架构

一淘的系统架构

      一淘有三个数据来源:互联网、外部合作方和淘宝主站。其中,互联网数据通过crawl的方式获得,而后两者则通过feed的方式提供。
  

       抓取系统的功能包括:网页抓取、抓取调度、域名解析、死链检测、JavaScript执行等。目前,一淘的资讯、话题、问答combo中的大部分数据都是通过抓取系统从互联网获得的。它是一淘一个重要的“原料厂”。
  离线处理系统是一个功能众多、可灵活定制的Pipeline,其主要功能有:网页编码识别与转换、网页解析与内容抽取、购物相关站点发现、列表页识别、网页分类与消重、链接提取与合并、关键词提取、众多网页静态feature的提取。它是一淘的“加工厂”。
  存储系统负责存储抓取系统和离线处理系统的产出,同时向这两个“厂”提供高性能、大容量的存取服务。目前我们采用的是Hadoop+HBase的体系结构,将网页、链接、图片进行了分类存放。存储系统是一淘存放原料、半成品的“核心仓库”。相关报道
  就在此前不久,淘宝还曾对搜索规则进行调整,调整中加强了对商品陈列、商品类目管理、商品描述等方面规范和要求,可以认定卖家是否重复铺货及故意放错类目、重复开店甚至炒作信用等行为,并一度还引起卖家抗议。此次淘宝推出全网搜索引擎则被认为是在搜索领域的深化。
  淘宝在商品搜索上已经拥有一定优势。据FT中文网报道,握有70%网购份额、90%C2C份额的淘宝在封了百度搜索后发展到现在,其商品搜索,无论是质还是量,都是百度现在不能比的。而网购已成搜索越来越重要的下一个应用。
  在线引擎负责对一淘前端搜索请求返回查询结果,它生成索引的数据来自存储系统。在线引擎是一淘面向用户的“成品生产车间”。值得一提的是,一淘采用了阿里集团新一代的HA2引擎技术,HA2结合了开源引擎和阿里上一代引擎技术的设计优点,在支持全文检索的同时,兼备了商品搜索的各种功能。它目前提供的主要特性有:
  数据规模:支持的数据规模从一台机器(partition)到几百台机器;更新速度:支持全量数据更新,以及最快支持分钟级的增量更新;数据类型:允许用户定义各种的数据类型,从单字段到几十个字段。字段的类型可以是text, string, number等;查询语法:支持简单的单一条件查询, 以及复杂的各种条件组合查询、过滤;相关性计算:支持最多三阶段相关性计算,提供丰富的信息供用户自定义每一个阶段的算分方法;统计导航:支持对检索到的结果做灵活的分组统计和智能导航。一淘前端负责向终端用户展现搜索结果页,它是一淘的“门店”,设有各式各样橱窗:商品、淘吧、资讯、论坛、问答、图片、网页等。保证这个门店正常运转的机制包括:
  Bootstrap:负责查询词合法性检查、编码识别与转换、停止词和违禁词过滤。Query Planner:负责查询词重写(Query Rewrite)、主辅词识别、商品类目预测、Combo排序、大小写转换、同义词和多义词,等等。RMOD:负责向各类后端服务接口发起并发请求,并将返回结果进行整合用于页面展现。Cache:负责分布式缓存搜索结果数据,从而缩短响应时间,提高前端系统的吞吐量。此外,为了一淘团队的运营效率,我们还在构建一套“从收集Query和Click日志开始,进行数据统计、关联分析、异常报警和人工调整等相关流程”的以Query为中心的运营工具。
  一淘的小二们深知:如何使我们打造的这些橱窗所展现的内容具有越来越精准的 “导购相关性”,是一淘面向用户的核心价值。如何进入朝这个方向持续发展的正循环呢?我们目前的思路是:构建一套结合“Query分析”和“网页分析”的多层次排序模型,在保证相关性的前提下,灵活快速地调整模型结构以适应变化的业务需求。
  专家分析
  有网购专家认为,淘宝推全网搜索引擎是为大淘宝整体的战略布局考虑,提供独立的搜索入口,一淘网将原来“小淘宝”中的搜商品和买商品的买家从小淘宝分离出来,为大淘宝将流量输送链梳理清晰。
  据悉,根据艾瑞预测,2009年网络购物交易规模为2483亿元,同比增长93.7%。可以预见的是未来五年内,网络购物交易额规模占社会消费品零售总额的比重将突破5%,网络购物对于传统零售市场的贡献将会日趋加


1,Hadoop

一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。

 起源

   Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作为 Lucene 的子

  

hadoop logo

项目 Nutch 的一部分正式引入。它受到最先由 Google Lab 开发的 MapReduce 和 Google File System 的启发。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中。
  Hadoop 是最受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep 一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 Hadoop 在设计时就考虑到这些问题,因此能大大提高效率。

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。

诸多优点

  Hadoop 是一个能够对大量数据进行分布式处理的 软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

  Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

集群系统

  Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。即使是分布式开发的新手也可以迅速使用Google的基础设施。核心组件是3个:
  1、GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。Google根据自己的需求对它进行了特别优化,包括:超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等。GFS把文件分成64MB的块,分布在集群的机器上,使用Linux的文件系统存放。同时每块文件至少有3份以上的冗余。中心是一个Master节点,根据文件索引,找寻文件块。详见Google的工程师发布的GFS论文。
  2、MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。
  3、BigTable。一个大型的 分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。
  以上三个设施Google均有论文发表。

2,HBase

HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值