eBay Architecture(7)–Partition Everything[Search Engine]

我所在的就是search group。听Randy讲这一段的时候还是理解的不错的。同样的,从功能切分和横向扩展两个方面来谈Search Engine的Partition。

  • Functional Segmentation

Search是个read only的操作,所以search这一块是从transaction databases中独立出来的。

Read-only search function decoupled from write-intensive transactional databases .

  • Horizontal Split

搜索引擎内部也必须做Horizontal Split的:

image

  1. Search index divided into grid of N slices (“columns”) by modulo of a key.
  2. Each slice is replicated to M instances (“rows”).
  3. Aggregator parallelizes query to one node in each column, aggregates results.

我们知道在搜索引擎中,索引是很重要的,但是eBay有那么多的物品,包含所有物品的Index根本没有办法放进一台机器里面。所以我们只能把完整的很大的索引切分成small chunks。每一个index chunk放到一个"column"里面。而每个column里面都有很多rows,一个col里面的一个row就是一个搜索节点,同一个column里面的搜索节点都是完全一样的。

当我们的Index变大的时候,我们可以使用更多的Partition,也就是更多的Column。当我们要servef更多的traffic,或者更多耗资源的Query的时候,我们可以在每个Column里面加入更多的row。

对用户来说,他看到的是一个搜索引擎,而不是N个Column,为了返回用户完整的搜索结果(因为每个Column只能返回1/N的结果),所以注意到上面图上有一种叫aggregator的组件。外部的query先到aggregator,  aggregator把query送到每一个Column,当然每个Column里面只有一个节点server query(The aggregator send this query to one machine each of the columns),然后每个column里面server query的那个节点把结果返回给aggregator,aggregator把所有column返回的信息收集起来,汇总后返回用户。

我想不单单eBay是这样的,Google也一样。关于Google的架构,这里我提供两篇文章,有兴趣的同学可以看看:

  1. The Anatomy of a Large-Scale Hypertextual Web Search Engine
  2. WEB SEARCH FOR A PLANET:THE GOOGLE CLUSTER ARCHITECTURE

在现场,有位同事问了一个非常好的问题,事实上,我在平时做Production Support的时候也碰到过这样的问题:

Question:

Aggregator使得Partition 成N份(暂且假设N=20)的index看起来像一个完整的index。但是从网络上来讲,当一个query到达的时候,aggregator需要连接所有的Column,也就是说当N=20的时候,对于一个Query,aggregator会打开20个不同的network port。如果Traffic很高的情况下,Aggregator会不会因为打开了太多的network port而导致资源耗尽?

[非常经典,大家想想-:)]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值