Xunsearch 分为后端服务和前端开发包两大部分,这两个部分允许部署在不同服务器中。
后端是采用 C/C++ 开发的守护进程,包括索引服务器(xs-indexd)、搜索服务器(xs-searchd)。 索引服务器用于集中处理索引变动,并自动调用工具程序优化和更新数据库;搜索服务器 借鉴了 nginx 的作法,使用进程、线程混合工作模式处理高并发的搜索请求。
通常在二次开发时并不需要去关心后端的实现,只要在我们提供的前端开发包基础上开发即可。
前端开发包通常使用脚本语言编写,负责协商前端调用与后端服务通讯,我们称之为 SDK 开发包。理论上支持各种包含 socket 通讯实现的脚本语言,但目前我们只提供了 PHP 语言,以后再陆续考虑和开发其它语言。非常欢迎有能力有意愿的朋友提供、贡献其它语种的代码。
下面是我们用字符直接制作的一张架构简图。
==============================
| Your Search Application |
==============================
/\ /\
................ /||\ ............ /||\ ....................
: || || :
: +-----------------------------+ :
: | [PHP] | other lang (TODO) | :
: |-----------------------------| :
: | SDK: (xunsearch devkit) | :
: +-----------------------------+ :
: / \ :
: / \ :
: +-----------------+ +-------------------+ :
: | Index-server | | Search-server | :
: |-----------------| |-------------------| :
: | xs-indexd | | xs-searchd | :
: | xs-import | | 1*master | :
: | xs-logging | | N*worker(M*thread)| :
: +-----------------+ +-------------------+ :
: | | :
: | | :
: +-----------------------------+ :
: | Xapian-core + scws | :
: +-----------------------------+ :
: | | | :
: +------------+ +--------+ +---------------+ :
: | Local Disk | | Memory | | Remote socket | :
: +------------+ +--------+ +---------------+ :
: :
...................... Xun Search ..........................