不懂就问,感觉现在没有 es 的类似替代,维护 es 好麻烦,难道就没有用 golang rust 这种新一点的语言写一个这样的项目吗?是不是那样会更好,为啥没有?
1
yyyxxx109876 216 天前 3
为什么你不用 golang 或者 rust 这种新一点的语言写一个类似 es 的程序啊
|
2
hmmmbiubiubiu OP 哈哈 我感觉能力差点意思
|
3
hmmmbiubiubiu OP @yyyxxx109876 我的能力还驾驭不了感觉
|
4
pchalme 216 天前 3
|
5
itstudying 216 天前
有呀 zincsearch go 写的,目前也就是正在研究替换 es 中。 es 太耗资源了。。。
|
6
lsk569937453 216 天前 1
最近在用 rust 造轮子,
网关:https://github.com/lsk569937453/silverwind redis:https://github.com/lsk569937453/rcache echo-server:https://github.com/lsk569937453/echo-server curl:正在造 总结:欲造轮子,起码得先把原有的技术架构/源码搞懂,es 这种复杂的等大神吧 |
7
BeiChuanAlex 216 天前
想到一个曾经听到的一句话。
《任何框架都值得用新语言重写一遍》 |
8
privil 216 天前
@itstudying #5 后面又用 rust 重新搞了 openobserve ,日志的话真挺好
|
9
itstudying 216 天前
@itstudying #5 补充一下,兼容 DSL 语法,资源占用非常低,二进制文件直接部署,基本文章搜索功能能完全替换。https://github.com/zincsearch/zincsearch 。
|
10
lzgshsj 216 天前
为什么问之前不搜一下呢。。。
zincsearch 就在用着,就一个二进制文件,挺轻量化的 |
11
nothingistrue 216 天前
写不涉及 UI ,大规模调度而非精细调控资源的平台级别应用,老实用 Java ,别闹。.NET 的顺位都比楼主说得这俩顺位高。
|
12
diagnostics 216 天前
因为要轻量的,压根不会用 ES 的索引设计,例如 Tempo
|
13
vagusss 216 天前 2
换个语言也不一定能解决"维护 es 好麻烦"这种问题, 复杂度并不会凭空消失
|
14
princelai 216 天前
我不用 es,但我知道用 rust 写的 polars 替代 pandas,速度快很多,语法也很方便,ruff,rust 写的格式化工具也好用,pydantic,rust 写的 python 数据类型验证工具,用 fastapi 时候都会用这个,其他的还有 lance 数据库,一个 arrow 格式的列数据库,看测试能力还不错,不过我还没有用,这些常用的未来应该都会有的吧
|
15
linauror 216 天前
zincsearch 试用了一下,感觉最精简,期待针对于 UI 搜索上的迭代
|
16
FrankAdler 216 天前 via Android
而且 zincsearch v2 的 api 是兼容 es 的
|
17
chengxiao 216 天前
https://www.meilisearch.com/
Meilisearch 项目不大的话这个不错 文档很 nice |
18
crackidz 216 天前
好多的啊....你搜索一下能找到很多的
|
19
CaptainD 216 天前
es 主要是支持的功能太多,所以看起来很麻烦,只用个日志检索,其实没必要 es ,比如 Meilisearch 和 zincsearch 都不支持复杂检索式,我们的需求就没法满足
|
20
PiersSoCool 216 天前
目的是什么,省钱 & 需求,首先需求肯定不是,省钱的话看看能省多少。
|
21
luozic 216 天前
es 的功能是累计的,不需要 es 的全部功能,只是部分功能,sonic https://github.com/valeriansaliou/sonic
========================= 对于又需要 es 的大部分功能,又想着新语言重写的,自己去看 es 是多大的一个代码项目,要重写即使有啥辅助你也得有多少人组织起来干活 https://github.com/elastic/elasticsearch/commits/main |
22
jiangwei2222 216 天前 via Android 1
1.因为 es 基于 lucene 引擎,lucene 就是 java 写的,如果重写的话就得连 lucene 一起重写了。工程量巨大,而且看不到任何优势
2.在 es 的使用场景中,java 多占用那点内存根本忽略不计,比如我现在公司 es 集群都是大几十核,几百 G 内存的机器,干嘛要在乎编程语言那点性能? 3.高性能在于代码设计,es 都迭代这么多年了,能优化的都优化了,你现在哪怕用汇编语言写一个 es 也不一定比现在性能好 4.正经公司都有专业的运维人员,在专业运维看来,es 对运维很友好 |
23
mark2025 216 天前
|
24
rahuahua 216 天前
@lsk569937453 好奇问下 github 上提到的 rcache 和 redis 性能压测对比差异的主要原因是什么呀
|
25
rahuahua 216 天前
@jiangwei2222 性能优化的话,c/c++/rust 肯定是优势巨大,比如早期的数据库对比,es 也有对比性能提升很大,至于为什么没有替换掉,就像你说的生态起来了,大公司也不需要这些性能优化,小公司根本没到性能瓶颈,但不代表没有性能优化
|
26
BBCCBB 216 天前
|
27
luozic 216 天前
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 |
28
DefoliationM 216 天前 via Android
有 https://github.com/quickwit-oss/tantivy
go - bleve |
29
luozic 216 天前
@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 |
30
wdlth 216 天前
除了 ES 和底层的 Lucene ,还有分析器、分词器、检索插件等等一堆东西,写完还得做各个平台的测试验证,要完善的东西多着呢,难道用 Rust/GO 就容易维护了?
|
31
1018ji 216 天前
我还是用 es 吧,生产又不花我的钱
|
33
luozic 216 天前
@wysnxzm 他问的问题有问题,完整的 copy 一个,
1.如果不是配套 io_uring dpdk 等可以大力提升性能的东西,别人为啥要做, 2.并且现在开源的都是 es 的子集, 3.完整的复制一套需要的成本 收益从哪里获取? 学习 scylladb 这种开源 收费都搞的? 关键是 elastic search 这一坨 还需要功能完整,还不想出钱做的大部分不是中国的公司? |
34
luozic 216 天前
反而是 redis 这种,工程规模小,可以快速获取收益的---dpdk/io_uring 的,现在一堆开源的竞争方案。国内也有不少
|
35
isnullstring 216 天前
ES 出来这么久,用其他语言重新实现一次,怕是又要好多年才赶得上
|
36
kneo 216 天前 via Android
@jiangwei2222 这几条我看没一条是有说服力的。
1. 实现一个类似 es 的产品,es 用 lucene 不等于别人也一定要用 lucene 。 哪怕真实现一个 lucene 也不难,根本不是难点。这东西架构很清晰,测试完备,也没有什么移植性的困难,照着抄就是了。甚至用工具代码转译都行。 2. 逻辑完全不对。你这话就相当于来句“用 java 的谁在乎那点内存啊”,然后得出结论:“用别的语言做这个没有意义”。 3. 该优化的都优化了?拿个汇编写也没你快?说的我都笑了。同样的逻辑:Python 这么多年了,该优化的都优化了…… 4. 问问 op 同意不? |
37
sdsaaeee 216 天前
meilisearch 啊,golang 写的
|
39
hmmmbiubiubiu OP @kneo 哈哈 感觉 golang 或者 rust 更更好的压榨 CPU 。不一定 1:1 复制 es 至少在实现上会更优秀一些。另外 es 这么久了肯定有一些历史包袱吧
|
41
luozic 216 天前
确定搞了个高性能的,投资大量的方案,能收回投入?
scylladb 可是一直有个大力应用和给钱的 uber discord compast , 国内用户还比这几个高,也大量用 elastic search 好几个。 好几年了,有听说啥支持 els 重写为高性能的 c++/rust golang 版本的? |
42
luozic 216 天前
@jiangwei2222 scylladb 可一点都不同意你的说法,discord 的人也不会同意你的描述
https://www.infoq.cn/article/iyivdO40iQ0wEKk4O94I?utm_source=related_read_bottom&utm_medium=article 这个就是用 dpdk c++重写了 Cassandra 。 那堆 python 验证算法,之后用 c++/rust 重写算子的 AI 可不少 |
43
zzl22100048 216 天前
|
44
javaisthebest 216 天前
看我 ID
有的时候 你的思考下 为什么这些中间件选择了 java 而不是 java 选择了这些中间件 |