楊文杰 倪平波 宋衛(wèi)平 楊帆
摘 ?要:移動互聯(lián)網(wǎng)的興起,帶動了互聯(lián)網(wǎng)生態(tài)圈的整體發(fā)展。隨著用戶量的激增,隨之而來的是大量用戶的數(shù)據(jù)產(chǎn)生,如何從海量數(shù)據(jù)中快速精準地檢索出需要的信息,成為當前互聯(lián)網(wǎng)時代需要解決的問題。當今主流搜索引擎Elasticsearch(文中簡寫為ES)是一款基于apache lucene的開源搜索引擎產(chǎn)品,由于它具有開源、分布式、實時、方便的接口、易于擴展等特點,被廣泛運用于國內(nèi)外知名組織和公司。該文將從“ES服務化”基于開源ES基礎上實現(xiàn)服務化(多租戶權限管理、查詢請求QPS限制、海量日志檢索、集群高負載自我保護、多租戶資源隔離)。
關鍵詞:服務化 ?多租戶 ?資源隔離 ?Elasticsearch
中圖分類號:TP391 ? ? ? ? ?文獻標識碼:A 文章編號:1672-3791(2020)08(c)-0064-03
Abstract: The rise of the mobile Internet has driven the overall development of the Internet ecosystem. With the large increase in the number of users, a large number of user-related data is generated. How to quickly and accurately retrieve the required information from the massive data has become a problem that needs to be solved in the current Internet age. Today's mainstream search engine Elasticsearch (hereinafter abbreviated as ES) is an open source search engine based on apache lucene. It is widely used at home and abroad because of its open source, distributed, real-time, universal interface and secondary development. Well-known organizations and companies. This article will implement services based on open source ES from "ES service" (multi-tenant rights management, query request QPS limit, massive log retrieval, cluster high load self-protection, multi-tenant resource isolation).
Key Words: Servitization; Multi-tenant; Resource isolation; Elasticsearch
當今互聯(lián)網(wǎng)技術向開源、可擴展、高可用、分布式發(fā)展,移動互聯(lián)網(wǎng)設備繁多,適配和可用性成為現(xiàn)代企業(yè)痛點。企業(yè)級開發(fā)人員在選擇搜索引擎時往往考慮高可用、安全、可擴展等功能,調(diào)研了權限管理插件x-pack、search-guard等,插件都為商用的原因,都無法滿足企業(yè)級權限的需求,企業(yè)級權限要細化到用戶、角色、組織機構,以及用戶行為記錄。
1 ?Elasticsearch服務化的優(yōu)勢
搜索引擎的工作流程是將搜索文檔進行分詞,然后對每一個詞建立一個索引,形成倒排文件。當用戶查詢時,搜索程序會在倒排文件中查找,在查找的同時會計算每個關鍵詞與文檔的相關度等,然后根據(jù)相關度的大小對包含關鍵詞的所有文檔進行排序,最后返回用戶結果[1]。
現(xiàn)有ES搜索引擎能夠方便提供各種應用集成和調(diào)用,提供便捷的分布式方案,對海量數(shù)據(jù)進行實時處理,并進行精準的數(shù)據(jù)分析,提供相關度的查詢,開箱即用既能滿足大型企業(yè)應用,也能滿足中小型企業(yè)應用,24h提供搜索服務。但是,還是會面臨以下問題。
(1)無權限管理服務,如果把直接寫ES的權限放開給業(yè)務方,帶來的安全隱患是非常大的。(2)Elasticsearch針對各業(yè)務的流量無法控制,當級別低的業(yè)務占用了級別高業(yè)務的流量,將造成核心業(yè)務延遲,用戶體驗不佳。(3)在多業(yè)務并發(fā)寫入時,無法做到一致性,導致核心數(shù)據(jù)受影響。(4)對錯誤反饋信息無法統(tǒng)一,無法精確定位錯誤來源。(5)對于多個業(yè)務需要各自部署自己的Elasticsearch,如使用統(tǒng)一的Elasticsearch,沒辦法解決權限和數(shù)據(jù)隔離,可見Elasticsearch搜索引擎并沒有達到人們理想的期望,這也促進了將ES進行服務化的迫切需求。
2 ?Elasticsearch服務化的工作原理
(1)Elasticsearch是通過Restful接口進行交互,通過插件的方式進行無侵入式,二次開發(fā)和集成。(2)構建插件功能,實現(xiàn)符合安全的租戶維護、權限分配、權限驗證等功能。(3)對所有Elasticsearh操作進行,請求攔截,根據(jù)業(yè)務配置依據(jù),檢查單位時間內(nèi)單個業(yè)務組件請求搜索引擎的次數(shù),如果超過業(yè)務閾值,進行用戶自定義的相應操作。(4)業(yè)務請求搜索引擎失敗時,插件端攔截錯誤信息,進行統(tǒng)一的錯誤提示,使上層調(diào)用層有明確的錯誤信息展示,易于快速定位問題、解決問題。
3 ?Elasticsearch服務化設計方案
(1)數(shù)據(jù)接入Elasticsearch不需要改造業(yè)務現(xiàn)有架構(依然走公司統(tǒng)一數(shù)據(jù)收集方式)。(2)減少 client 的并發(fā)連接。Elasticsearch不管寫入還是搜索,都是配了線程池,并發(fā)連接過多,非常容易把寫入線程池打滿,導致拒絕請求。(3)提高寫入效率。通過 transport bulk模式實現(xiàn)寫入,相比filebeat的http方式從寫入效率上來說,有比較大的提升。(4)增強可控性,當集群數(shù)據(jù)量非常大的時候,如果要對集群做升級或者重啟,如果同時還在大量寫數(shù)據(jù),分片恢復的時間非常漫長。但是可以與大頭業(yè)務協(xié)商,暫停寫入(只需要把服務端的數(shù)據(jù)攝入停止即可,不用業(yè)務客戶端操作),操作集群,恢復寫入)[3]。(5)集群升級完全不用業(yè)務方做適配[3]。(6)數(shù)據(jù)攝入監(jiān)控很好收斂,故障定位非常明確。
以上雖然表面上增加了系統(tǒng)的復雜度,和一定程度的寫入延遲,但是都是可接受的。對于復雜度并沒有過多的增大,由于與內(nèi)部數(shù)據(jù)流的對接,對業(yè)務來說反而更加簡單。雖然實時性犧牲了一些(整條鏈路數(shù)據(jù)延時在1min以內(nèi)),但還是可接受的。
4 ?搜索引擎未來的展望
隨著互聯(lián)網(wǎng)時代的來臨,人類面臨著前所未有的信息過載問題。為了方便人們從海量數(shù)據(jù)中快速精準地檢索感興趣的信息,Web搜索引擎應運而生。在互聯(lián)網(wǎng)發(fā)展的早期,數(shù)據(jù)量比較小,單機索引就能支撐一個完整的應用。此時Apache Lucene憑借其精巧的代碼設計、優(yōu)異的性能、豐富的查詢接口,以及眾多的衍生搜索產(chǎn)品(如ApacheSolr、Nutch等),在開源搜索領域大放異彩。隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)量快速膨脹, 此時對搜索引擎提出了分布式、準實時、高容錯、可擴展、易于交互等諸多要求?;贚ucene的簡單二次開發(fā)已經(jīng)滿足不了日常的搜索需求,ElasticSearch的誕生則很好地滿足了上述大數(shù)據(jù)時代的搜索產(chǎn)品需求。
參考文獻
[1] 張光異.基于Elasticsearch的房源搜索系統(tǒng)的設計與實現(xiàn)[D].華中科技大學,2019.
[2] 張月.基于ElasticSearch的分布式搜索引擎的設計與實現(xiàn)[D].北京交通大學,2019.
[3] Radu Gheorghe.Elasticsearch實戰(zhàn)[M].北京:人民郵電出版社,2018:3-13,40-41,238-250.
[4] 王偉,魏樂,劉文清,等.基于ElasticSearch的分布式全文搜索系統(tǒng)[J].電子科技,2018,31(8):56-59,65.
[5] 李敏.基于搜索引擎優(yōu)化技術與模板引擎技術的網(wǎng)站優(yōu)化策略初探[J].通訊世界,2017(9):45-46.
[6] 李瑤,周仕洵.搜索引擎關鍵詞的選擇方法分析[J].現(xiàn)代國企研究,2017(12):194,262.
[7] 吉喆基于Elasticsearch的實時大數(shù)據(jù)統(tǒng)計分析平臺的研究與設計[J].華南理工大學,2019.
[8] 欽蔣錄,沈宏良.基于Elasticsearch的校內(nèi)全文搜索平臺的研究與實現(xiàn)[J].現(xiàn)代計算機:專業(yè)版,2018(34):98-102.
[9] 段晨迪.基于Elasticsearch面向MOCC的垂直搜索引擎設計與實現(xiàn)[D].北京交通大學,2019.