分布式搜索引擎設計框架
 
  本搜索引擎主要基于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獲取來實現。