为什么没有人用 golang 或者 rust 这种新一点的语言写一个类似 es 的程序啊

2024-04-19 08:46:28 +08:00
 hmmmbiubiubiu

不懂就问,感觉现在没有 es 的类似替代,维护 es 好麻烦,难道就没有用 golang rust 这种新一点的语言写一个这样的项目吗?是不是那样会更好,为啥没有?

7255 次点击
所在节点    程序员
45 条回复
luozic
2024-04-19 11:40:29 +08:00
es 的功能是累计的,不需要 es 的全部功能,只是部分功能,sonic https://github.com/valeriansaliou/sonic
=========================

对于又需要 es 的大部分功能,又想着新语言重写的,自己去看 es 是多大的一个代码项目,要重写即使有啥辅助你也得有多少人组织起来干活
https://github.com/elastic/elasticsearch/commits/main
AutumnVerse
2024-04-19 11:46:11 +08:00
1.因为 es 基于 lucene 引擎,lucene 就是 java 写的,如果重写的话就得连 lucene 一起重写了。工程量巨大,而且看不到任何优势
2.在 es 的使用场景中,java 多占用那点内存根本忽略不计,比如我现在公司 es 集群都是大几十核,几百 G 内存的机器,干嘛要在乎编程语言那点性能?
3.高性能在于代码设计,es 都迭代这么多年了,能优化的都优化了,你现在哪怕用汇编语言写一个 es 也不一定比现在性能好
4.正经公司都有专业的运维人员,在专业运维看来,es 对运维很友好
mark2025
2024-04-19 11:52:53 +08:00
rahuahua
2024-04-19 11:53:34 +08:00
@lsk569937453 好奇问下 github 上提到的 rcache 和 redis 性能压测对比差异的主要原因是什么呀
rahuahua
2024-04-19 11:56:35 +08:00
@jiangwei2222 性能优化的话,c/c++/rust 肯定是优势巨大,比如早期的数据库对比,es 也有对比性能提升很大,至于为什么没有替换掉,就像你说的生态起来了,大公司也不需要这些性能优化,小公司根本没到性能瓶颈,但不代表没有性能优化
BBCCBB
2024-04-19 12:06:24 +08:00
luozic
2024-04-19 12:08:37 +08:00
Lines of Code Report| v 2.00 T=55.34 s (458.9 files/s, 80943.9 lines/s)
--- | ---

Language|files|blank|comment|code
:-------|-------:|-------:|-------:|-------:
Java|19926|447750|382756|2927572
AsciiDoc|2293|58597|16202|266892
YAML|1808|24913|4338|228077
Text|272|4521|0|26813
Gradle|427|3009|3312|18242
XML|85|597|1192|9831
Properties|44|195|461|8876
Groovy|62|1414|717|8061
CSV|32|0|0|6413
TOML|13|791|1041|4241
Smalltalk|21|440|0|3974
Markdown|116|1229|249|3157
SVG|129|0|18|1870
ANTLR Grammar|7|353|126|1586
Bourne Shell|48|397|418|1506
XSD|6|112|40|1499
Velocity Template Language|16|81|277|871
Python|4|91|68|433
DOS Batch|17|131|41|406
Bourne Again Shell|19|129|98|392
Dockerfile|8|82|72|313
CSS|3|30|3|294
INI|8|25|0|294
SQL|12|6|561|285
TypeScript|5|62|11|244
PowerShell|3|27|21|154
Lisp|1|10|0|78
C|1|15|14|57
HTML|4|2|14|45
JavaScript|2|6|1|31
C/C++ Header|1|5|7|5
Freemarker Template|2|0|0|5
Mustache|1|0|0|5
diff|1|0|8|5
--------|--------|--------|--------|--------
SUM:|25397|545020|412066|3522527
DefoliationM
2024-04-19 12:17:03 +08:00
luozic
2024-04-19 12:24:51 +08:00
@jiangwei2222 还真不是,了解一下 dpdk 加持的 scylladb
https://opensource.docs.scylladb.com/stable/using-scylla/migrate-scylla.html#

甚至 io_uring 这种新的系统层面的东西。现代系统和硬件已经进化太多了,但是现在的大部分软件 中间件还是基于 c10k 的主要技术编制的,根本无法充分利用新硬件 新系统特性
https://github.com/0voice/kernel_new_features/blob/main/io_uring/%E6%96%87%E7%AB%A0/%E6%B5%85%E6%9E%90%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E4%B9%8Bio_uring.md
wdlth
2024-04-19 14:27:48 +08:00
除了 ES 和底层的 Lucene ,还有分析器、分词器、检索插件等等一堆东西,写完还得做各个平台的测试验证,要完善的东西多着呢,难道用 Rust/GO 就容易维护了?
1018ji
2024-04-19 14:39:51 +08:00
我还是用 es 吧,生产又不花我的钱
wysnxzm
2024-04-19 14:52:59 +08:00
@wdlth #30 总有人把工程问题理解成语言问题,没办法
luozic
2024-04-19 15:48:23 +08:00
@wysnxzm 他问的问题有问题,完整的 copy 一个,
1.如果不是配套 io_uring dpdk 等可以大力提升性能的东西,别人为啥要做,
2.并且现在开源的都是 es 的子集,
3.完整的复制一套需要的成本 收益从哪里获取? 学习 scylladb 这种开源 收费都搞的? 关键是 elastic search 这一坨 还需要功能完整,还不想出钱做的大部分不是中国的公司?
luozic
2024-04-19 15:50:40 +08:00
反而是 redis 这种,工程规模小,可以快速获取收益的---dpdk/io_uring 的,现在一堆开源的竞争方案。国内也有不少
isnullstring
2024-04-19 16:03:11 +08:00
ES 出来这么久,用其他语言重新实现一次,怕是又要好多年才赶得上
kneo
2024-04-19 16:30:21 +08:00
@jiangwei2222 这几条我看没一条是有说服力的。

1. 实现一个类似 es 的产品,es 用 lucene 不等于别人也一定要用 lucene 。
哪怕真实现一个 lucene 也不难,根本不是难点。这东西架构很清晰,测试完备,也没有什么移植性的困难,照着抄就是了。甚至用工具代码转译都行。

2. 逻辑完全不对。你这话就相当于来句“用 java 的谁在乎那点内存啊”,然后得出结论:“用别的语言做这个没有意义”。

3. 该优化的都优化了?拿个汇编写也没你快?说的我都笑了。同样的逻辑:Python 这么多年了,该优化的都优化了……

4. 问问 op 同意不?
sdsaaeee
2024-04-19 16:59:34 +08:00
meilisearch 啊,golang 写的
rust
2024-04-19 17:13:00 +08:00
@sdsaaeee #37 要不是我昨天刚改完它的代码,我就信你了,这货明明是 Rust 写的
hmmmbiubiubiu
2024-04-19 17:20:16 +08:00
@kneo 哈哈 感觉 golang 或者 rust 更更好的压榨 CPU 。不一定 1:1 复制 es 至少在实现上会更优秀一些。另外 es 这么久了肯定有一些历史包袱吧
Xinu
2024-04-19 17:24:54 +08:00
@pchalme 这个中文搜索基本不可用,分词完全不行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1033793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX