您好,登錄后才能下訂單哦!
隨著公司業(yè)務的高速發(fā)展以及數(shù)據(jù)爆炸式的增長,當前公司各產(chǎn)線都有關于搜索方面的需求,但是以前的搜索服務系統(tǒng)由于架構與業(yè)務上的設計,不能很好的滿足各個業(yè)務線的期望,主要體現(xiàn)下面三個問題:
基于現(xiàn)狀,對行業(yè)內的搜索服務做出充分調研,確認使用 Elasticsearch 做底層索引存儲,同時重新設計現(xiàn)有搜索服務,使其滿足業(yè)務方對維護性、定制化搜索排序方面的需求。
滬江搜索服務底層基于分布式搜索引擎 ElasticSearch,ElasticSearch 是一個基于 Lucene 構建的開源,分布式,Restful 搜索引擎;能夠達到近實時搜索,穩(wěn)定,可靠,快速響應的要求。
搜索服務整體分為5個子系統(tǒng)
眾所周知,全量更新的功能在搜索服務中是必不可少的一環(huán)。它主要能解決以下三個問題
基于上面提到的問題,我們與業(yè)務方合作實現(xiàn)了全量索引。但是在這個過程中,我們也發(fā)現(xiàn)一個通用的問題。在進行全量更新的時候,其實增量更新也在同時進行,如果這兩種更新同時在進行的話,就會有遇到少量增量更新的數(shù)據(jù)丟失。比如說下面這個場景
最后,針對上面這個場景,我們提出通過 zookeeper 分布式鎖來暫停 index consumer 的消費,具體步驟如下
這樣的話,我們就不用擔心在創(chuàng)建索引的這段時間內,數(shù)據(jù)會有缺少的問題。相信大家對于這種方式解決全量與增量更新數(shù)據(jù)有所體會。
數(shù)據(jù)量爆炸式的增加,導致我們 ES 集群最終還是遇到了容量不足的問題。在此背景下,同時結合 ES 本身提供的無縫擴容功能,我們最終決定對線上ES集群進行了在線的無縫擴容,將從原來的 3 臺機器擴容為 5 臺,具體步驟如下
本章主要介紹公司搜索服務的整體架構,重點對全量更新中數(shù)據(jù)一致性的問題, ES 在線擴容做了一定的闡述,同時列舉了一些公司在部署 ES 上做的一些優(yōu)化。本文主要目的,希望大家通過閱讀滬江搜索實踐,能夠給廣大讀者帶來一些關于搭建一套通用搜索的建議
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。