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 ..........................