SFE(Sonew Front End)详解

SFE概述和目的

    SFE(Sonew Front End)是在线系统的前端服务器,基于Apache模块来开发,它接收Web的查询请求,去SOLR系统取得和查询最相关的UID, 再去Desc DB 取得这些UID的描述信息,最后返回搜索的XML结果给Web前端。

 

Online总体结构

SFE(Sonew Front End)详解

 

SFE模块划分

SFE(Sonew Front End)详解

    按功能将SFE划分成以上模块

QueryParse:负责Query的解析分词,SFE支持参数的处理

Client: 负责连接需要的后台服务,取得服务结果

Description: 负责连接HBase取得具体的描述,动态摘要,飘红等处理

Mixing:负责小产品之间的结果混合

SonewEngine:核心处理模块,负责调用其他模块,XML结果输出

AsyncClient架构

SFE(Sonew Front End)详解

每个Cliet都是一个有限状态机,每个状态(SN)都对应一个处理函数(FN), 在处理函数中实现状态的转移

ClientMgr相当于一个容器,它遍历其中的所有Client,执行每个Client的处理函数(根据其状态),执行对每个Client的状态转移,直到所有的Client都在终结状态(DONE或FAIL)

Client可以嵌套其他的Client,实现复杂的处理

每个client必须定义所有的状态和对应的转换函数

每个转换函数必须被定义成如:int FUNC(FPMessage*)

转换函数用来推进client的状态

例:

      setStatFunc(s1, this, &Client::func);

                    Client为该对象或者它的父类

例:PubNote流程

客户端类关系

SFE(Sonew Front End)详解

ASolrClient状态与转换函数

setStatFunc(ASCS_START, this, &ASolrClient::start);

setStatFunc(ASCS_READ, this, &ASolrClient::read);

setStatus(ASCS_START);

APubNoteClient状态与转换函数 

setStatFunc(ASCS_START, this, &APubNoteClient::start);

setStatFunc(DESC, this, &ACommonClient::retr_descs);

setStatFunc(WAIT_DESC, this,&ACommonClient::wait_descs); setStatus(ASCS_START);

ACommonClient状态与转换函数

setStatFunc(ASCS_START, this, &ACommonClient::start);

setStatFunc(DESC, this, &ACommonClient::retr_descs);

setStatFunc(WAIT_DESC, this, &ACommonClient::wait_descs);

setStatus(ASCS_START);

ADescClient状态与转换函数

setStatFunc(ASCS_START, this, &ADescClient::start);

setStatFunc(ASCS_READ, this, &ADescClient::read);

setStatus(ASCS_START);

 

流程图地址:

http://r.photo.store.qq.com/psb?/V12VvuOZ4bHLE3/B.5fbZp6QX9oEvE*.gcNMNt1INU0PF0UAr5Z3mj6xcQ!/r/dCwAAAAAAAAA

 

你可能感兴趣的:(new)