分布式搜索引擎设计框架
 
  本搜索引擎主要基于Redis,采用python编写的主从模式分布式搜索引擎,利用Redis内存高速存储读取信息的特点,通过Redis进行各个主机进程之间的信息通信,达到mater对slave,的命令传输控制。
 
  本搜索引擎采用主从模式的分布式结构。其中mas-ter命令主要以数据包的形式存储在Redis数据库中,slave通过对数据包的读取分析,完成大量的数据运算,降低mater的工作负担,然后将运算结果传递给masteromaster只需要对slaves传递的信息进行筛选与汇总,进行任务的再分配,充分利用各个机器的性能,达到分布式运算分析的目的,避免资源浪费,且构成一个准确高效的分布式整体。
分布式搜索引擎设计框架
  数据在redis服务器中以队列的形式存储,master向队列尾部添加数据,slave从队列头部读取数据。通过这样的形式,一方面可以避免因资源竞争而导致分布式系统死锁,保证了程序的可行性;另一方面确保了资源能在有限的时间内被读取到,避免资源浪费的情况发生。在re-dis数据库中时常存在这样3个队列:
 
  nrq=RedisQueue();
 
  srq=RedisQueue();
 
  trq=RedisQueue();
 
  其中,nrq是需要被处理的数据队列,sqr是已经被处理的数据队列,trq是存储共享的tag队列。Slave通过读取trq队列获得当前唯一的工作序号tag,nrq队列中的数据出队让salve获取,这样的工作流程避免了资源抢占的冲突;然后slave运算的结果会人队存储在srq中,再出队到master,让master进行数据汇总,完成分布式系统的工作。通过以上系统机制,Map-reduce的实现也成为可能。master对数据进行Map操作,将<key,value>类型数据块存放到nrq队列中,并由slave读取;slave完成对<key,value>的运算后,将结果存人srq队列中由master获取来实现。