王奇 顧問軟體工程師 目前從事 PaaS 中間件服務(Redis / MongoDB / ELK 等)開發工作,對 NoSQL 資料庫有深入的研究以及豐富的二次開發經驗,熱衷對 NoSQL 資料庫領域内的最新技術動态的學習,能夠把握行業技術發展趨勢。
Elasticsearch 是一款廣泛使用的開源分布式全文搜尋引擎,源于 Apache Lucene[1],許可證為 Apache 2.0。由于出色的搜尋引擎、高擴充性和豐富的統計分析能力,深受使用者喜愛。
基于 Lucene 的 Elasticsearch
2010 年開源的 Elasticsearch 随着全球搜尋引擎業務的飛速發展,也變得更加流行。在國内外積累了大量的核心使用者并受到社群的強烈歡迎。根據 DB-Engines[2] 網站對于 Search Engine 類資料庫的流行度趨勢統計,2016 年至今 Elasticsearch 始終保持第一。
Search Engine 流行趨勢
Elastic 成立于 2012 年,是很多來自矽谷的開源軟體獨角獸公司之一。Elasticsearch 的成功離不開 Elastic 公司的成功營運。随着雲計算技術的不斷發展壯大,以 AWS 為首的雲廠商 SaaS 模式 趨于火熱,越來越多的使用者願意接受 SaaS 模式。部分雲廠商将開源産品以服務的方式釋出并盈利,但并未回饋開源。
Elastic 公司在這樣的背景下,決定有針對性的修改了許可授權,各大雲廠商們面臨在非授權的情況下,将無法繼續更新 Elasticsearch 版本的困境(舊版本不影響)。
Elasticsearch 版本協定說明
AWS 沒有選擇與 Elastic 合作,而是在 2019 年開始嘗試新的可能。2021 年 AWS 正式開源了基于 Elasticsearch 的 OpenSearch 項目,并在 AWS 商店正式推出了 OpenSearch[3] 服務來取代原有的 Elasticsearch 服務。
這一系列事件,對全球雲廠商對開源軟體的使用也許會産生深遠的影響。接下來我們梳理一下整個事件的時間線。
2010 年 2 月
Elastic 釋出了 Elasticsearch,源于 Apache Lucene,許可證為 Apache 2.0。
2018 - 2019 年
Elastic 修改了 Kibana(配套可視化工具) 和 Elasticsearch 的開源協定( ALv2 -> SSPL & Elastic 雙授權),意味着 7.10.2 版本後不再提供開源版本。
2019 年 3 月
AWS 推出 Open Distro for Elasticsearch(OpenSearch 的前身),一個 100% 的開源發行版。
2021 年 4 月
AWS 宣布推出 OpenSearch 項目,基于 7.10.2 版本建立分支,并重構了所有 ODFE 插件與 OpenSearch 配合使用,ODFE 在 1.13 版本結束。
2021 年 9 月
AWS 将 AWS Electicsearch Service 服務更新為 AWS OpenSearch Service。
事件中,以 Elastic 公司修改開源協定為重要轉折點。
ELv2:由 Elastic 制定的源代碼許可。該協定适用于 Elastic 的分發版以及 Elasticsearch 和 Kibana 所有免費和付費功能的源代碼。ELv2 的目标是在盡可能寬松的情況下防止濫用。該許可允許免費使用、修改、建立衍生作品和重新分發,但有三個基本的限制條件:
不得将産品作為托管服務提供給其他人
不得規避許可密鑰功能或删除/隐藏受許可密鑰保護的功能
不得删除或隐藏任何許可協定、版權或其他聲明
SSPL:由 MongoDB 制定的源代碼許可。針對雲服務提供商做出了限制,即要求雲服務提供商在未對項目做出貢獻的情況下,不得釋出自己的開源産品即服務。SSPL 允許使用者以自由且不受限制的方式使用并修改代碼成果,唯一的要求是:如果将産品以作為一種服務進行傳遞,那麼必須同時公開釋出所有關于修改及 SSPL 之下管理層的源代碼。
Elastic 公司決定修改開源協定,并不會對個人使用者使用造成影響,隻會限制雲服務廠商将開源産品轉化為軟體即服務的形式。對于沒有獲得授權的雲廠商來說,除了提供到最後一個開源版本的 Elasticsearch 服務之外,就需要開始考慮其他替代方案了。
目前各大雲廠商主要采取的如下兩種方案:
PlanA - 與 Elastic 達成商業授權協定,深度合作。
PlanB - 未獲得商業授權的雲廠商,繼續使用基于 ALv2 協定下的 Elasticsearch 的開源(OSS)版本,并嘗試尋找新的替代方案。
目前為止,與 Elastic 達成合作的雲服務供應商:Microsoft、Google、阿裡巴巴、騰訊、Clever Cloud 等。
OpenSearch 是一個社群驅動的開源搜尋和分析套件,源自 Apache 2.0 許可的 Elasticsearch 7.10.2 和 Kibana 7.10.2。它由一個搜尋引擎守護程序 OpenSearch 和一個可視化和使用者界面 OpenSearch Dashboards 組成。OpenSearch 使人們能夠輕松攝取、保護、搜尋、聚合、檢視和分析資料。
OpenSearch 官網
項目早期,Open Distro 的核心仍然是普通的 Elasticsearch。Amazon 對 Open Distro 所做的是為 Elasticsearch 和 Kibana 添加功能。
OpenSearch 實際上是 Elasticsearch 的一個分支。
一方面 OpenSearch 正在從開源 Elasticsearch 停止的地方開始,代碼中任何有 Elasticsearch 或 Kibana 引用的地方,最後都會更改為 OpenSearch 。另一方面 Open Distro 所有功能都将添加到 OpenSearch,OpenSearch 後續将緻力于保持其分支開源,并得到 AWS 的支援。
如果說 Elasticsearch 提供了非常棒的能力,利用它的大資料工具來幫助進行全棧監控、自動化、資料重新平衡、IP 過濾等的各種規模的組織,那麼 OpenSearch 就是緻力于聚合、檢視和分析資料的企業的洞察引擎解決方案。
從方案的角度講,兩者都提供了大資料解決方案,且底層實作一緻。
從功能的角度講,OpenSearch 覆寫了開源版 Elasticsearch 的所有功能,并為其提供媲美 Elasticsearch X-Pack 的商業能力。
無論 Elasticsearch 還是 OpenSearch,使用者的核心需求是搜尋、安全、監控、告警、跨叢集同步等叢集服務,後者也可以完全滿足需求。
從 2021 年 4 月 12 日推出 OpenSearch 項目以來,截止到現在已更新至 1.1.0 版本,雖然該版本已媲美 X-Pack 部分功能。但是目前實踐上還需要更多的驗證。
随着 1.1.0 的推出,OpenSearch 已經在向自己的方向前進。有許多已推出的功能和增強功能,包括:
添加碎片級後壓架構,以提高 OpenSearch 索引的可靠性。
添加許多新的可觀測功能,以幫助您分析跟蹤和日志資料。
OpenSearch 的 k-NN 插件将為更新的FAISS算法增加支援,以提高性能。
異常檢測将增加信号導緻特定異常的可見性。
擴叢集複制同步能力。
在 OpenSearch 服務推出後,Elastic 官網也對該服務為使用者提出了一些熱門問題[4],并做出了自己的诠釋。
什麼是 OpenSearch 項目?
為什麼 OpenSearch 項目 fork 是從 Elasticsearch 和 Kibana 建立的?
Amazon OpenSearch Service 是否具有 Elasticsearch 中沒有的任何功能?
在雲廠商們各自的生态環境下,開發者将采用不同的模式來完成産品的疊代,從不同的産品視角來滿足不同的使用者需求。
可預見在未來很長一段時間裡, Elasticsearch 仍然會繼續引領潮流,占據該領域的霸主地位。而 OpenSearch 依托于 AWS ,相信也會成為一個優秀的搜尋引擎解決方案。
許可協定限制了在雲廠商的使用,開源則提供了更多的可能。當雲廠商無法使用 Elasticsearch 後續版本的時候,或許可以考慮 OpenSearch。
[1]. Apache Lucene:http://lucene.apache.org
[2]. DB-Engines:https://db-engines.com
[3]. OpenSearch:https://opensearch.org
[4]. What is opensearch: https://www.elastic.co/what-is/opensearch
盤點 | 主流雲原生資料庫技術方案
高可用 | Xenon:後 MHA 時代的選擇