亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3628 | 回復: 0
打印 上一主題 下一主題

億級數據的高并發(fā)通用搜索引擎架構設計[轉載] [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-01-05 09:59 |只看該作者 |倒序瀏覽
曾經在七月,寫過一篇文章──《
基于Sphinx+MySQL的千萬級數據全文檢索(搜索引擎)架構設計
》,前公司的分類信息搜索基于此架構,效果明顯,甚至將很大一部分帶Where條件的MySQL SQL查詢,都改用了Sphinx+MySQL搜索。但是,這套架構仍存在局限:一是MySQL本身的并發(fā)能力有限,在200~300個并發(fā)連接下,查詢和更新就比較慢了;二是由于MySQL表的主鍵與Sphinx索引的ID一一對應,從而無法跨多表建立整站查詢,而且新增加類別還得修改配置文件,比較麻煩;三是因為和MySQL集成,無法發(fā)揮出Sphinx的優(yōu)勢。
  最近,我設計出了下列這套最新的搜索引擎架構,目前已經寫出“搜索查詢接口”和“索引更新接口”的beta版。經測試,在一臺“奔騰四 3.6GHz 雙核CPU、2GB內存”的普通PC機,7000萬條索引記錄的條件下,“搜索查詢接口”平均查詢速度為0.0XX秒(查詢速度已經達到百度、谷歌、搜狗、中國雅虎等搜索引擎的水平,詳見文章末尾的“附2”),并且能夠支撐高達5000的并發(fā)連接;而“索引更新接口”進行數據分析、入隊列、返回信息給用戶的全過程,高達1500 Requests/Sec。
  “隊列控制器”這一部分是核心,它要控制隊列讀取,更新MySQL主表與增量表,更新搜索引擎數據存儲層Tokyo Tyrant,準實時(1分鐘內)完成更新Sphinx增量索引,定期合并Sphinx索引。我預計在這周寫出beta版。

  圖示說明:
  1、搜索查詢接口:
 、佟eb應用服務器通過HTTP POST/GET方式,將搜索關鍵字等條件,傳遞給搜索引擎服務器的search.php接口;
 、冖邸earch.php通過Sphinx的API(我根據最新的Sphinx 0.9.9-rc1 API,改寫了一個C語言的PHP擴展sphinx.so),查詢Sphinx索引服務,取得滿足查詢條件的搜索引擎唯一ID(15位搜索唯一ID:前5位類別ID+后10位原數據表主鍵ID)列表;
 、堍、search.php將這些ID號作為key,通過Memcache協(xié)議一次性從Tokyo Tyrant中mget取回ID號對應的文本數據。
 、蔻摺earch.php將搜索結果集,按查詢條件,進行摘要和關鍵字高亮顯示處理,以JSON格式或XML格式返回給Web應用服務器。
  2、索引更新接口:
 、、Web應用服務器通過HTTP POST/GET方式,將要增加、刪除、更新的內容告知搜索服務器的update.php接口;
  ⑵、update.php將接收到的信息處理后,寫入TT高速隊列(我基于Tokyo Tyrant做的一個隊列系統(tǒng));
  注:這兩步的速度可達到1500次請求/秒以上,可應對6000萬PV的搜索索引更新調用。
  3、搜索索引與數據存儲控制:
  ㈠、“隊列控制器”守護進程從TT高速隊列中循環(huán)讀取信息(每次50條,直到末尾);
  ㈡、“隊列控制器”將讀取出的信息寫入搜索引擎數據存儲層Tokyo Tyrant;
  ㈢、“隊列控制器”將讀取出的信息異步寫入MySQL主表(這張主表按500萬條記錄進行分區(qū),僅作為數據永久性備份用);
 、琛ⅰ瓣犃锌刂破鳌睂⒆x取出的信息寫入MySQL增量表;
 、、“隊列控制器”在1分鐘內,觸發(fā)Sphinx更新增量索引,Sphinx的indexer會將MySQL增量表作為數據源,建立增量索引。Sphinx的增量索引和作為數據源的MySQL增量表成對應關系;
  ㈥、“隊列控制器”每間隔3小時,短暫停止從TT高速隊列中讀取信息,并觸發(fā)Sphinx將增量索引合并入主索引(這個過程非?欤,同時清空MySQL增量表(保證了MySQL增量表的記錄數始終只有幾千條至幾十萬條,大大加快Sphinx增量索引更新速度),然后恢復從TT高速隊列中取出數據,寫入MySQL增量表。
  本架構使用的開源軟件:
  1、Sphinx 0.9.9-rc1
  2、Tokyo Tyrant 1.1.9
  3、MySQL 5.1.30
  4、Nginx 0.7.22
  5、PHP 5.2.6
  本架構自主研發(fā)的程序:
  1、搜索查詢接口(search.php)
  2、索引更新接口(update.php)
  3、隊列控制器
  4、Sphinx 0.9.9-rc1 API的PHP擴展(sphinx.so)
  5、基于Tokyo Tyrant的高速隊列系統(tǒng)
  附1:MySQL FullText、Lucene搜索、Sphinx搜索的第三方對比結果:
  1、查詢速度:
  MySQL FullText最慢,Lucene、Sphinx查詢速度不相上下,Sphinx稍占優(yōu)勢。
  

  2、建索引速度:
  Sphinx建索引速度是最快的,比Lucene快9倍以上。因此,Sphinx非常適合做準實時搜索引擎。
  3、詳細對比數據見以下PDF文檔:  

下載文件
點擊這里下載文件


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/109602/showart_2139697.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP