針對特殊功能的最佳化建議 -- 搜尋
搜尋新特性是 Commerce V7 FEP2 期間引入 WebSphere Commerce 產品的功能特性,可以提供大資料集下 具有良好可拓展性的快速搜尋功能。搜尋新特性提供了一個完整整合的第三方搜尋引擎的運行時架構,並圍繞 該架構提供了包括產品目錄搜尋、業務管理等其他功能共同構成了一個完整的解決方案。由於搜尋方塊架提供功 能豐富的擴充性,未來的新功能特性都可以選擇基於該架構來開發,因此如何更好的最佳化搜尋效能就顯得更加 重要。由於 WebSphere Commerce 產品中預設整合了基於 Lucene 庫開發的 Solr 搜尋引擎,如無特別指明 ,本文提供的搜尋引擎最佳化建議是針對 Solr 給出的。本章節將按照如下圖 1 所示按步驟介紹各部分的最佳化 過程。為簡略起見,下文將 WebSphere Commerce 簡稱為 Commerce。
圖 1. 搜尋運行時環 境部署步驟
搜尋生產環境規劃與部署的最佳化
WebSphere Commerce 網站拓撲規劃
Commerce 搜尋新特性整合了開源免費的搜尋引擎 Solr,將之部署為一個獨立的 WAS 應用,所以在對整個 Commerce 網站做容量規劃時需要將該應用所需的伺服器資源考慮在內。通常建議考慮採用水平方式,獨立服 務器運行 Solr 應用,這樣可以避免對 Commerce 應用所在伺服器的容量有所影響。這種拓撲所帶來的成本, 除了所需額外伺服器資源外,是需要消耗一部分內網網路頻寬來傳輸 Commerce 與 Solr 應用之間的請求與響 應的資料,考慮企業內網網速及頻寬情況,應是可以承受的。或者考慮垂直方式將 Solr 應用放在同一個 Commerce 所在伺服器的一個獨立 JVM 中。這樣可以節省伺服器成本已經內網頻寬,但佔用消耗同一伺服器容 量。
Solr 應用同時還需要 Web 服務器支援,通常我們建議部署獨立的 Web 服務器給 Solr 叢集使用 ,這樣做的好處是避免共用 Commerce 的 Web 服務器所帶來的安全性潛在風險,以及 Solr 查詢請求需要額 外經過防火牆而導致的效能問題,但獨立部署新的 Web 服務器需要額外的硬體採購,包括負載平衡等方面的 考慮,這一點需要在客戶實施環境具體情況具體分析來做決策。
Solr 應用拓撲規劃
在大型網站上,通常會有幾千或上萬並發訪問量,單獨一個 Solr 運行時 JAVA 虛擬機器很難保證處理這麼 多訪問的效能,因此可以對 Solr 採用與 Commerce 類似的水平或者垂直 WAS 伺服器擴充,並將之合并到一 個叢集中。並且通過配置單一主服務節點控制搜尋索引資料在叢集中的同步,如圖 2 所示。主節點只用於索 引建立更新目的,Commerce 生產環境並不訪問主節點,而是只訪問從節點。每次主節點產生了更新都會被所 有從節點檢測到而被"拉"過去完成資料的複製更新。
圖 2. Solr 主從配置示意圖