针对搜索引擎查询服务的流量模型分析及测试

标签:
搜索引擎查询服务流量模型it |
分类: 网络 |
文/邓宏波
搜索引擎,本质上说,是一种在Web上应用的软件系统,并采用B/S/S结构的高性能计算应用模型。它以一定的策略在Web上搜集和发现信息,在对信息进行处理和组织后,为用户提供Web信息查询服务。
为了有效地做到这一点,搜索引擎通常由三个功能模块构成;即网页搜集,预处理和查询服务。在实际工作中这三个部分是相对独立的,形成了搜索引擎工作的三个阶段(如图1所示)。
http://www.h3c.com.cn/res/201102/28/20110228_1164348_image001_709445_30008_0.png图1 搜索引擎三段式工作流程
- 网页搜集阶段:根据设定的策略,从Web上抓取海量的网页(亿量级),建立搜索引擎系统的网页数据库。
- 预处理阶段:对前一阶段搜集到的海量网页,实施“关键词提取”、“网页消重”、“链接分析”、“网页重要程度计算”等四项工作,最后得到下一阶段的查询子系统需要的数据——倒排文件。
- 搜索查询服务阶段:根据用户的查询请求,从倒排文件中搜索关键词和文档编号,得到一个集合,并根据此集合生成“列表”。这个列表就是我们看到的搜索结果。
本文将重点介绍搜索引擎的查询服务,并给出一个可能的硬件部署模型,基于此来定义对搜索引擎应用数据中心内的网络设备的测试需求。
查询服务的基本工作原理
作为搜索引擎三个步骤的最后环节,查询服务子系统负责把前两个阶段建立好的索引网页库、索引词表、倒排表提供给用户服务,这个交互的过程是通过查询代理完成的。查询代理(也称为 UI 用户接口)接受用户的查询请求,在倒排索引中查找符合要求的文档返回,如图2所示。
http://www.h3c.com.cn/res/201102/28/20110228_1164349_image002_709445_30008_0.png图2 搜索引擎的系统概貌
以一个在分布式架构中的查询过程的来说明这个阶段的工作过程。如图3所示
http://www.h3c.com.cn/res/201102/28/20110228_1164350_image003_709445_30008_0.png图3 搜索引擎检索分布式系统架构
当用户执行查询时,由WWW查询服务器(UI)把用户输入的查询串发送给每一个索引节点。各索引节点独立在本机上执行查询,再把检索结果中排序最前的K(如K=100)个结果返回给WWW查询服务器。WWW查询服务器负责结果数据的收集、合并、重新排序,并访问文档服务器、提取摘要,格式化生成查询结果页面返回给查询用户。
搜索引擎应用数据中心的网络部署
搜索引擎应用的网络部署,本质上说是遵循数据中心网络部署的经典架构按照分层/分区原则进行设计。
以查询服务子系统为例,可将UI服务器(或查询服务器)部署在一个ServerFarm内,构成一个功能区域,并将文档/索引节点服务器(BS服务器)部署在另一个ServerFarm内构成另一个功能区域,两个ServerFarm通过核心区域的骨干交换机互联。如图4所示
http://www.h3c.com.cn/res/201102/28/20110228_1164351_image004_709445_30008_0.png图4 搜索引擎数据中心典型组网拓扑及流量路径
- 服务器以GE链路上联;
- 出于性能考虑,AGG_L3SW_x 交换机采用高端交换机,如H3C S9500或S12500;
- 同样出于性能考虑,核心层交换机Core_SW_x 采用高端交换机
- 组网设计内不作通常企业办公网络中的汇聚层设计,服务器接入后直接联入核心;
- 接入层SW和核心层SW间通过10GE链路互联;
- 为减少链路带宽的收敛比,防止网络出现带宽瓶颈,需要根据AGG_L3SW_x的背板带宽选择接入服务器线卡的类型,以SW9500为例,建议使用24口的线速卡接入服务器;
由于高端交换机的机架式结构,满足了服务器群的高密度接入需求,并且最大限度的减少的网络带宽瓶颈。
搜索引擎应用查询服务的流量模型
搜索引擎的评价标准
评价一个搜索引擎应用系统,有两个基本的考虑——效果和效率。
“效果”也常常称为“质量”,指检索返回结果集合的准确性(或者相关性)和完整性。通常有两个衡量指标:查准率和查全率。由于这两项指标和流量模型没有关系,因此这里不作关注。
“效率”也称“性能”,最重要的指标就是系统的查询响应时间(response time)和系统的查询吞吐率(throughput)。响应时间是指从用户向系统提交查询到开始看到结果的时间间隔;吞吐率是指系统在单位时间(秒)内可以服务的最大用户查询数量。它包括两层次含义:
- 在单位时间里系统能够承受、不会导致“拒绝服务”的查询的数量。
- 在单位时间里能够接受、并满足服务质量的查询数量。
所谓“满足服务质量”是指是满足响应时间要求。例如,一个系统设计的平均响应时间为3秒,吞吐率为20,这意味着它每秒钟能接受20个查询,并在3秒钟左右的时间内给出所有查询结果。 这两个指标既独立也相关。“响应时间”是对单个用户查询表现出的性能,“吞吐率”体现了系统的整体性能,也称作系统的并发度。因此,对性能问题的讨论可以归结为系统在满足一定响应时间条件下的吞吐率。
在实际使用的搜索引擎中,为了提高响应时间,索引词表是驻留在内存中的,用户近期查询过的结果信息也是缓存在内存中的,如图5所示。
http://www.h3c.com.cn/res/201102/28/20110228_1164352_image005_709445_30008_0.png图5 搜索引擎检索系统缓存结构
可见,作为承载基础的网络设备将面临从内存至网络的I/O流量,这意味着高速率的流量传送需求。
以下结合搜索引擎应用数据中的网络部署,分析查询业务流量方向的数据流量路径。
http://www.h3c.com.cn/res/201102/28/20110228_1164353_image006_709445_30008_0.png图6 搜索引擎检索业务流量路径
如图6所示,Server A 为UI 服务器,UI 界面服务器维持与所有后端的索引节点/文档节点服务器群(下面简称为BS服务器)的TCP长连接,当收到来自用户的搜索请求后,以单播的形式向后端发送搜索请求。后端集群内的服务器在收到请求后搜索本地缓存并响应给UI服务器。UI服务器接收到响应后作进一步处理返回给用户。
【上图中,红色虚线表示用户的搜索请求;粉红色虚线表示UI 服务器以单播的形式分发的搜索请求;绿色虚线表示BS服务器响应的搜索结果】
从这一单次搜索过程可以看出,一次搜索业务在服务器群之间是一对多的关系,并且从索引节点服务器返回的流量带有并发性。
根据搜索引擎应用的规模,后端的索引节点/文档节点服务器群的数量通常在300台或者更多。
基于以上的分析说明,单次的搜索业务的关键流量特征及其需求为以下几点:
1、 并发性
所有的BS服务器在收到UI服务器的请求后,几乎会同时得到搜索结果并发回给UI服务器。如果BS服务器集群越空闲,并发性越明显。
2、 报文分片的不可丢失性
根据搜索的对象的热门程度的不同,BS服务器搜索到的内容会有差别。对于热门词汇搜索结果,在实际测量过程中发现通常可达到30KB左右,因此在TCP层存在分片。这些分片一个都不能丢失,否则就会导致UI服务器到BS服务器的一次查询请求/响应的失败。
3、突发性
也与BS服务器忙闲程度及查询服务系统的缓存机制有关的,伴随着并发性响应性的,还有突发性。服务器均使用GE上行,对每个响应的应用层包大小30KB,20个左右的1500字节的帧。GE链路亚毫秒级时间内即可传输完毕。这种突发性流量也称为Bursts流量。
4、一对多
一台UI 服务器 对应多台的BS服务器。(BS服务器的数量取决于搜索引擎应用的规模。这里我们假定以300台BS服务器来进行计算)。
图7为这种Bursts 流量的示意图。一个UI请求即会产生下图中的一个Burst。多个查询请求就构成了Bursts 流量。
http://www.h3c.com.cn/res/201102/28/20110228_1164354_image007_709445_30008_0.png图7 Bursts流量示意图
根据实测值,我们在多次执行单次热门词汇搜索,统计得出大致的单台BS服务器响应的应用层内容大小为30KB左右,下层分片后大致20帧左右。客户的BS服务器集群规划数量300台。
以一级搜索方式,BS服务器集群300台,高频词汇的单次UI搜索请求将产生300×20=6000个1.5KB的帧。
在整个数据路径上(查询数据返回方向),以Burst流量形式,多对一流量分布,链路速率不匹配条件下,6000个1518字节的帧以线速转发,并且不能丢失任何一个帧。
如图4所示,在查询数据返回方向上,存在3个交换节点。
ServerFarm_2 的AGG_L3SW_1交换节点:
在这个节点上部署S9512,配置2块10GE接口卡,用于上行链路及其同ServerFarm_2 的AGG_L3SW_2的10GE互联,最大可配置10块24口的GE接口卡,提供240个索引节点/文档节点服务器的接入。由于集群中的服务器采用双上行,因此最多可接入服务器120台。
根据上面的单一查询请求返回数据的计算,AGG_L3SW_1需要转发的帧数:
Burst Size=20帧每台服务器 × 120台服务器=2400 帧 【Frame Size = 1518字节 】
而AGG_L3SW_1的上行链路为10GE链路,因此其输出能力为:
10Gbps / ( 8Byte 前导位+1518Byte 帧长度 + 12Byte帧间隙 ) × 8 = 812743 帧/秒 【Frame Size = 1518 字节】
因此,对于ServerFarm_2 的AGG_L3SW_1交换节点,其面对的转发需求为:
GE链路到10GE链路、120对1的多对一流量分布、Burst Size 2400 ,1518字节帧的Burst 流量转发。
核心层 的Core_SW_1交换节点:
在此节点上,随着ServerFarm的扩展,可能形成这样的流量:10GE链路到10GE链路的,多对一流量分布,Burst Size=入接口数量*2400,1518字节帧的 Burst 流量转发。
ServerFarm_1 的AGG_L3SW_1交换节点:
在此节点上的流量特征为:一对一流量分布、10GE链路到1GE链路、Frame Size 1518字节、Burst Size 6000 (假设 索引节点/文档节点服务器数量300台,每台服务器返回查询结果30KB,之前的数据路径上无丢包)的Burst流量转发。
虽然整个Burst流量的所需带宽不足74Mbps(出接口为1Gbps),但是由于高速链路到低速链路的链路速率不匹配情况,因此存在一个明确的挑战:那就是ServerFarm_1的AGG_L3SW_1在此种流量特征下,具备6000帧以上的背对背转发能力。
有针对性地测试
通过对搜索引擎应用流量特征(以查询子系统业务为例)、数据中心网络部署的分析,我们可以明确的知道整个网络设备的应用环境和测试需求。下一步就需要在测试中确认网络设计、网络设备或/和调优后的关键性能,是否能满足现在及其未来的应用需求增长的裕量。因此,需要结合前面的应用分析、网络分析,抽象/隔离出关键的测试场景。另一个重要内容是测试依据,其来源之一是用户,比如用户现在需要网络及其网络设备具备多大的转发能力,另一个来源就是RFC,并且是最基础的RFC,如RFC 1242(Benchmarking Terminology for Network Interconnection Devices)、RFC 2285(Benchmarking Terminology for LAN Switching Devices)、RFC 2544(Benchmarking Methodology for Network Interconnect Devices)。结合搜索引擎应用查询子系统业务及其数据中心网络部署,在查询结果返回流量路径下,存在两个关键的交换节点,可提取出两种(基本)特定测试拓扑及其测试需求:
1、10GE链路到10GE链路、多对一流量分布、Frame Size 1518字节的背靠背单次Burst流量测试(Burst Size=入接口数量×索引节点/文档节点服务器数量×每台服务器响应的查询结果帧数)及其Bursts 流量测试。
2、10GE链路到1GE链路、一对一流量分布、Frame Size 1518字节的背靠背单次Burst流量测试(Burst Size根据搜索引擎应用查询服务子系统中索引节点/文档节点服务器数量及其每台服务器响应的查询结果大小确定),及其Bursts 流量测试。
结束语
网络根据层次划分,有核心层、汇聚层及其接入层;根据网络功能区域可有数据中心、办公接入等等区域。部署在不同网络层次、网络功能区域的网络设备,需要面对不同的功能、性能需求,进一步而言,即使都是部署在同类型的功能区域,比如数据中心,由于需要承载不同的应用,网络设备也必须满足差别巨大的性能需求。通常某款交换设备的内部各项参数可适应大部分的场景需求,但是对于关键性的数据中心场景,我们需要根据特定的应用,通过有针对性的测试来保证网络设备能够满足性能需求。