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

70 天前
 hmmmbiubiubiu

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

5571 次点击
所在节点    程序员
45 条回复
luozic
70 天前
es 的功能是累计的,不需要 es 的全部功能,只是部分功能,sonic https://github.com/valeriansaliou/sonic
=========================

对于又需要 es 的大部分功能,又想着新语言重写的,自己去看 es 是多大的一个代码项目,要重写即使有啥辅助你也得有多少人组织起来干活
https://github.com/elastic/elasticsearch/commits/main
jiangwei2222
70 天前
1.因为 es 基于 lucene 引擎,lucene 就是 java 写的,如果重写的话就得连 lucene 一起重写了。工程量巨大,而且看不到任何优势
2.在 es 的使用场景中,java 多占用那点内存根本忽略不计,比如我现在公司 es 集群都是大几十核,几百 G 内存的机器,干嘛要在乎编程语言那点性能?
3.高性能在于代码设计,es 都迭代这么多年了,能优化的都优化了,你现在哪怕用汇编语言写一个 es 也不一定比现在性能好
4.正经公司都有专业的运维人员,在专业运维看来,es 对运维很友好
mark2025
70 天前
rahuahua
70 天前
@lsk569937453 好奇问下 github 上提到的 rcache 和 redis 性能压测对比差异的主要原因是什么呀
rahuahua
70 天前
@jiangwei2222 性能优化的话,c/c++/rust 肯定是优势巨大,比如早期的数据库对比,es 也有对比性能提升很大,至于为什么没有替换掉,就像你说的生态起来了,大公司也不需要这些性能优化,小公司根本没到性能瓶颈,但不代表没有性能优化
BBCCBB
70 天前
luozic
70 天前
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
70 天前
luozic
70 天前
@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
70 天前
除了 ES 和底层的 Lucene ,还有分析器、分词器、检索插件等等一堆东西,写完还得做各个平台的测试验证,要完善的东西多着呢,难道用 Rust/GO 就容易维护了?
1018ji
70 天前
我还是用 es 吧,生产又不花我的钱
wysnxzm
70 天前
@wdlth #30 总有人把工程问题理解成语言问题,没办法
luozic
70 天前
@wysnxzm 他问的问题有问题,完整的 copy 一个,
1.如果不是配套 io_uring dpdk 等可以大力提升性能的东西,别人为啥要做,
2.并且现在开源的都是 es 的子集,
3.完整的复制一套需要的成本 收益从哪里获取? 学习 scylladb 这种开源 收费都搞的? 关键是 elastic search 这一坨 还需要功能完整,还不想出钱做的大部分不是中国的公司?
luozic
70 天前
反而是 redis 这种,工程规模小,可以快速获取收益的---dpdk/io_uring 的,现在一堆开源的竞争方案。国内也有不少
isnullstring
70 天前
ES 出来这么久,用其他语言重新实现一次,怕是又要好多年才赶得上
kneo
70 天前
@jiangwei2222 这几条我看没一条是有说服力的。

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

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

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

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

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

https://www.v2ex.com/t/1033793

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

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

© 2021 V2EX