AWS 从 Elastic“抢”来的开源替代品 OpenSearch,成功了吗?
2021 年初,开源搜索和数据分析引擎 Elasticsearch 背后的母公司——Elastic 宣布变更 Elasticsearch 和 Kibana 的开源许可证,将原本的 Apache License 2.0 变更为双授权许可,即 Server Side Public License (SSPL) + Elastic License,两者都不是符合 OSI 定义的开源 License。
SSPL 是 MongoDB 设计的许可证,它基于 GPLv3,被认为是 Copyleft License,其核心条款是 “如果将程序的功能或修改后的版本作为服务提供给第三方,那么必须免费公开提供服务源代码”。
Elastic License 是非商业许可证,核心条款是如果将产品作为 SaaS 使用则需要获得商业授权。
当时 Elastic 公司称此举主要是限制云服务提供商(如 AWS)在没有回馈的情况下将 Elasticsearch 和 Kibana 作为一项服务提供给他人使用,以保护 Elastic 在开发免费和开放产品方面的持续投资。但变更许可证也意味着 Elasticsearch 和 Kibana 不再是真正的“开源软件”(OSI 定义的开源)。
随后,AWS 宣布创建了一个自称真正开源的 Elasticsearch 分支——OpenSearch,并获得了包括红帽、SAP、Capital One 和 Logz.io 等在内的多个组织和厂商的支持。
OpenSearch 是一个由社区驱动的开源搜索和分析套件,包括企业安全、异常检测、告警、机器学习、SQL、索引状态管理等功能,fork 自 Apache License 2.0 许可的 Elasticsearch 7.10.2 和 Kibana 7.10.2。它由一个搜索引擎守护程序 (OpenSearch)、一个可视化和用户界面 (OpenSearch Dashboards) 以及 Open Distro for Elasticsearch 的高级功能组成。
AWS 介绍称,他们推出的 OpenSearch 删除了 Elasticsearch 中受 Elastic 商业许可证限制的功能、代码和商标,以兼容 Apache License 2.0,自称这是每个人都可以构建和创新的基础,任何人无需签署 CLA (Contributor License Agreement) 即可为项目贡献代码。
当时有人认为 AWS 的行为是在赤裸裸地 “抢劫” 开源项目,但也有人认为 Elastic 从最初的变更开源协议,到后面限制用户正常使用客户端,不仅违背了开源精神,更是有拿用户当做筹码的意味。
现在距 OpenSearch 诞生已经两年了,这个基于 Elasticsearch 的开源分支取得了怎样的成绩?
根据 OpenSearch 年初发布的年度报告,截至 2022 年底,OpenSearch、OpenSearch Dashboards 和客户端库的总计下载量已突破 1 亿,共有 496 名贡献者提交了 8760 次 PR。
BigData 博客近日也对 OpenSearch 和 Elasticsearch 进行了详细的对比,对比项包括 repo 的提交数量、功能、许可证和限制等。
他们计算了自 2021 年 4 月 22 日以来两者在 master/main 分支上所做的提交(统计数据于 2023 年 4 月收集)。统计结果显示,Elasticsearch 仓库有将近 2 万次提交,其中 6 千次提交到 Elasticsearch 核心("server"文件夹),还有一些提交到附属模块。
# total commits in repo since fork ➜ elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' | wc -l 19527 # total commits to the main codebase (server folder) since fork ➜ elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l 6130 # total commits to main modules (various surrounding functionality not under x-pack) since fork # https://github.com/elastic/elasticsearch/tree/main/modules ➜ elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l 1437 # just as means of comparison, the amount of work made on x-pack features is not negligible ➜ elasticsearch git:(master) git log --oneline --all --since='Apr 22 2021' -- x-pack/ | wc -l 7294
对比 OpenSearch,它提交到核心的代码量少 3 倍以上,重要模块则减少约 14 倍,这些模块包括脚本语言、重新索引功能、提取管道处理器等。
➜ OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' | wc -l 3727 ➜ OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- server/ | wc -l 1966 # total commits to main modules (surrounding functionality not under x-pack) since fork # https://github.com/opensearch-project/OpenSearch/tree/main/modules ➜ OpenSearch git:(main) git log --oneline --all --since='Apr 22 2021' -- modules/ | wc -l 470
因此,与 Elasticsearch 发布的版本(主要和次要)相比,OpenSearch 发布的版本更少。
功能方面,OpenSearch 和 Elasticsearch 在基本功能和性能上没有太大的差异。虽然 Elasticsearch 提供了更丰富的功能,但需要客户额外付费,某些类似功能 Elasticsearch 收费 OpenSearch 则免费提供。
企业采用方面,Adobe 决定在 Adobe Commerce 套件中用 OpenSearch 取代 Elasticsearch。此外,OpenSearch 已进入 DB-Engines 数据库流行度排名前五十。
因此有观点认为,基于 Elasticsearch 的开源分支 OpenSearch 在某种意义上取得了成功。
那么问题来了,你选择 OpenSearch 还是 Elasticsearch?

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linda Yaccarino 代替马斯克成为推特新 CEO
琳达·亚卡里诺 (Linda Yaccarino) 接替了埃隆·马斯克 (Elon Musk),成为 Twitter 的新任 CEO 。 Linda Yaccarino 在 NBCUniversal 担任了12 年 广告销售主管,在位期间领导了公司内部的转型工作,在推动广告收入和建立战略合作伙伴关系方面发挥了关键作用,使 NBCUniversal 成为媒体领域的主导力量。 她的专长在于驾驭不断变化的媒体格局、利用新兴趋势和促进创新,在媒体和广告行业颇负盛名 上周六 Linda 发了上任 CEO 后的首条推文,表达了对马斯克的感激之情,以及迫不及待为 Twitter 的发展和转型做出贡献的兴奋,并强调需要集体的努力来实现这些目标。 马斯克将 Linda Yaccarino 的主要业务重点定义为监督业务运营,而他自己则专注于产品设计和新技术。
- 下一篇
云原生背景下如何配置 JVM 内存
背景 前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事; 在这之前我也没怎么在意过这个问题,正好这次排查分析的过程做一个记录。 首先我查看了监控面板里的 Pod 监控: 发现确实是快满了,而此时去查看应用的 JVM 占用情况却只有30%左右;说明并不是应用内存满了导致 JVM 的 OOM,而是 Pod 的内存满了,导致 Pod 的内存溢出,从而被 k8s 杀掉了。 而 k8s 为了维持应用的副本数量就得重启一个 Pod,所以看起来就是应用运行一段时间后就被重启。 而这个应用配置的是 JVM 8G,容器申请的内存是16G,所以 Pod 的内存占用看起来也就 50% 左右。 容器的原理 在解决这个问题之前还是先简单了解下容器的运行原理,因为在 k8s 中所有的应用都是运行在容器中的,而容器本质上也是运行在宿主机上的一个个经常而已。 但我们使用 Docker 的时候会感觉每个容器启动的应用之间互不干扰,从文件系统、网络、CPU、内存这些都能完全隔离开来,就像两个运行在不同的服务器中的应用。 其实这一点也不是啥黑科技,Linux 早就支持 2.6.x 的版本...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启