千万级数据的分类搜索引擎(四)

来源:互联网 发布:淘宝电子设备回收 编辑:程序博客网 时间:2024/06/02 17:05

后台服务程序ListKernel---线程模型

     List分类检索服务器有4个线程,主工作线程有2个,状态上报线程一个,数据更新线程一个。

    为了减少服务器上下文切换开销,状态上报线程和数据更新线程都是定时运行,大部分时间都是sleep状态

   状态上报线程:每分钟探测一次ListKernel的运行状态,判断进程是否在运行,如果没有则重起Listkernel.同时接收ListMonitor的控制命令,判断是否有控制台操作,有则响应。每分钟还会上报一次数据,listKernel的当前运行状态,负载...

    数据更新线程:每5秒运行一次,主动连接流水DB,每次处理3000条数据更新记录,按照seqno大小顺序处理。

    请求接收线程:接收请求命令,做初步的校验,然后判断命令类型,将正确的请求包放到一个环形缓冲队列中。

   请求处理线程:搜索的主工作线程,从环形buffer中取出请求,判断是否超时,如果超时则丢掉,防止暴雪效应。解析请求字段,对命令请求作过滤,排序,聚类。最后再封装成一个响应包,发送回去。

图示如下:

   线程之间没有加锁,环形buffer使用了一个冗余节点来避免互斥。

  整个listKernel的设计思想就是“简洁”,以达到较高的处理效率。

原创粉丝点击