VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

这篇具有很好参考价值的文章主要介绍了VictoriaLogs:一款超低占用的 ElasticSearch 替代方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

image.png

背景

前段时间我们想实现 Pulsar 消息的追踪流程,追踪实现的效果图如下:VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

实现其实比较简单,其中最重要的就是如何存储消息。

消息的读取我们是通过 Pulsar 自带的 BrokerInterceptor 实现的,对这个感兴趣的朋友后面会单独做一个分享。

根据这里的显示内容我们大概需要存储这些信息:

  • 客户端地址

  • 消息发布时间

  • 分发消费者、订阅者名称

  • ACK 消费者、订阅者名称

  • 消息 ID 最终捋了下:VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

都以两个 consumer 计算:
一条消息占用内存:140+ 535*2 + 536*2 =2282byte存储三天:TPS * 86400 * 3=TPS*259200
总存储:2282*TPS*259200≈ 百GB

根据我们的 TPS 计算,三天的大概会使用到 上百 G 的存储,这样首先就排除了 Redis 这种内存型数据库。

同样的换成 MySQL 存储也不划算,因为其实这些数据并不算那么重要。

做了几个技术选型都不太满意,不是资源开销太大就是没有相关的运维经验。

后面在领导的提醒下,我们使用的 VictoriaMetrics 开源了一个 VictoriaLogs,虽然当时的版本还是 0.1.0,使用过他们家 Metrics 的应该都会比较信任他们的技术能力,所以就调研了一下。

具体的信息可以查看官方文档:https://docs.victoriametrics.com/VictoriaLogs/

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索
image.png

简单来说就是它也是一个日志存储数据库,并且有着极低的资源占有率,相对于 ElasticSearch 来说内存、磁盘、CPU 都是几十倍的下降率。

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索
image.png

通过官方的压测对比图会发现确实在各方面对 ES 都是碾压。VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

官方宣传的第一反应是不能全信,于是我自己压测了一下,果然 CPU 内存 磁盘的占用都是极低的。

同时也发现运维部署确实简单,直接一个 helm install 就搞定,就是一个二进制文件,不会依赖第二个组件。

按照刚才同样的数据存储三天,只需要不到 6G 的磁盘空间,我们生产环境已经平稳运行一段时间了。VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索因为我们是批量写入数据的,所以在最高峰 20K 的 TPSCPU 使用不到 0.1 核,内存使用最高 120M,这点确实是对 ES 碾压了。

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索磁盘占用也是非常少。

这些有点得归功于它有些的压缩、编解码算法,以及 Golang  带来的相对于 Java 的极低资源占用。

还存在的问题

如果一切都这么完美的话那 VictoriaLogs  确实也太变态了, 自然他也有一些不太完美的地方。

分词功能有限

首先第一个是分词功能有限,只能做简单的搜索,无法做到类似于 ES 的各种分词,插件当然也别想了。

不支持集群

当前版本不支持集群部署,也就是无法横向扩展了;不过幸好他的的单机性能已经非常强了。

这也是目前阶段部署简单的原因。

过期时间无法混用

VictoriaLogs 支持为数据配置过期时间自动删除,有点类似于 Redis,它会在后台启动一个协程定期判断数据是否过期,但只能对所有数据统一设置。

比如我想在 VictoriaLogs 中存放两种不同类型的数据,同时他们的过期删除时间也不相同;比如一个是三天删除,一个是三月后删除。

这样的需求目前是无法实现的,只能部署两个 VictoriaLogs.

默认无法查询所有字段

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索
image.png

由于 VictoriaLogs  可以存储非结构化数据,默认情况下只能查询内置的三个字段,我们自定义的字段目前没法自动查询,需要我们手动指定。

这个倒不是致命问题,只是使用起来稍微麻烦一些;社区也有一些反馈,相信不久就会优化该功能。VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

  • https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4780

  • https://github.com/VictoriaMetrics/VictoriaMetrics/issues/4513

没有官方 SDK

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索
image.png

这也是个有了更好的一个功能,目前只能根据 REST API 自己编写。

总结

当前我们只用来存储 Pulsar 链路追踪数据,目前看来非常稳定,各方面资源占用极少;所以后续我们会陆续讲一些日志类型的数据迁移过来,比如审计日志啥的。

之后再逐步完善功能后,甚至可以将所有应用存放在 ElasticSeach 中的日志也迁移过来,这样确实能省下不少资源。

总得来说 VictoriaLogs  资源占用极少,如果只是拿来存储日志相关的数据,没有很强的分词需求那它将非常合适。

截止到目前最新版也才 0.3.0 还有很大的进步空间,有类似需求的可以持续关注。

往期推荐

k8s 常见面试题

新手如何快速参与开源项目

从 Pulsar Client 的原理到它的监控面板

使用 ChatGPT 碰到的坑

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

点分享

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

点收藏

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

点点赞

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案,elasticsearch,大数据,搜索引擎,全文检索

点在看文章来源地址https://www.toymoban.com/news/detail-675528.html

到了这里,关于VictoriaLogs:一款超低占用的 ElasticSearch 替代方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 清理Elasticsearch占用的内存和磁盘空间

    一,遇到OutOfMemoryError问题 打开Kibana,发现连不上Elasticsearch了,提示Cannot connect to the Elasticsearch cluster,检查: 发现是Elasticsearch service dead挂了。 继续检查错误日志/var/log/elasticsearch/elasticsearch.log 疑似Elasticsearch内存溢出。 通过 确实发现系统内存几乎100% ; 进一步的对各程序的

    2024年04月16日
    浏览(51)
  • Elasticsearch磁盘占用大于95% 导致索引自动置为只读的解决方法

    应用系统在更新或者插入elasticsearch的时候报错 看错误信息大意是要操作的索引是只读的,不能进行插入或删除。 原因是当Elasticsearch所在磁盘占用大于等于95%时,Elasticsearch会把所有相关索引自动置为只读。(Elasticsearch官方文档有介绍) 解决方案有两种: 1.清理磁盘,使占用

    2024年02月06日
    浏览(45)
  • 超低成本FPGA JTAG方案

    今天给大家带来一款超低成本的FPGA JTAG方案,硬件核心是用树莓派Pico,使用相关芯片自己制作JTAG则非常便宜,RP2040某宝的报价只有4元,所以自己制作成本非常低廉,当然使用Pico成本也不是很高,所以今天就以Pico为例讨论怎么制作JTAG并验证。 首先按照GitHub 说明(https://gi

    2024年02月03日
    浏览(54)
  • copilot收费高,推荐一款vscode替代插件

    copilot好不好用?废话!非常好用!!但是。。收费太TM贵了。。。 所以!推荐一款类似copilot的vscode插件! 插件的功能是根据你的代码上下文,提供智能的代码补全和生成建议。插件的名字叫做**mainPilot**。可以直接在 vscode插件市场安装 。 插件市场直接搜 mainPilot 。  mainPi

    2024年02月10日
    浏览(41)
  • Elasticsearch-head访问 elasticsearch 报错 401 解决方案

    配置 值 系统 MacOS es 版本 8.3 401 报错本质没有权限, 先记住这个事.然后顺着这个思路去解决, 因为 elasticsearch 在启动时会运行 xpack(这东西是什么, 这里不做讨论) 当你第一次运行 elasticsearch 的时候它会 给你用户名, 密码, 以及 kibana 的 token(30分钟有效期)等, 这次运行之后你就会

    2024年01月17日
    浏览(33)
  • ElasticSearch置顶方案

    最近系统有个需求,希望工作流的审批人被催办后就要置顶在最前面, 工作流列表我是用es的,一开始想用pinned实现,但用pinned的话,每页都会置顶在前面,我的需求只是想让他优先排在前面,翻页后正常显示 后面找到这个,通过把匹配到数据的分数提高,然后用sort进行排

    2024年02月13日
    浏览(34)
  • Elasticsearch 数据迁移方案

    倘若准备将自建的 elasticsearch 迁移K8s,或者的迁移到其他elasticsearch集群,可以根据自己的业务需要选择适当的迁移方案, 针对业务可以停服或可以暂停写操作场景 ,可以使用以下几种方案完成数据迁移: COS 快照,全程Cloud Object Storage logstash elasticsearch-dump 各种迁移方案对比

    2024年02月16日
    浏览(37)
  • Elasticsearch数据存储优化方案

    优化Elasticsearch数据存储有助于提升系统性能、降低成本、提高数据查询效率以及增强系统的稳定性和可靠性。通常我们再优化Elasticsearch数据存储会遇到一些问题,导致项目卡壳。以下是优化Elasticsearch数据存储的一些重要作用: 1、问题背景 在某些场景中,我们可能会考虑绕

    2024年04月09日
    浏览(38)
  • ElasticSearch数据的同步方案

      当订单数据量规模足够大或查询统计足够复杂时,通常会采用MySQL + NoSQL的架构方案,这种方案需要将MySQL中数据同步到其它介质,比如ClickHouse、ES等。订单数据的同步面临着诸多挑战,尤其是异构介质,下面会从”数据同步面临的挑战“和以及”订单数据特点“两个维度来

    2024年02月07日
    浏览(42)
  • elasticsearch查询异常解决方案

    {\\\"error\\\":{\\\"root_cause\\\":[{\\\"type\\\":\\\"security_exception\\\",\\\"reason\\\":\\\"missing authentication token for REST request [/]\\\",\\\"header\\\":{\\\"WWW-Authenticate\\\":\\\"Basic realm=\\\"security\\\" charset=\\\"UTF-8\\\"\\\"}}],\\\"type\\\":\\\"security_exception\\\",\\\"reason\\\":\\\"missing authentication token for REST request [/]\\\",\\\"header\\\":{\\\"WWW-Authenticate\\\":\\\"Basic realm=\\\"security\\\" charset=\\\"UTF-8\\\"\\\"}},\\\"sta

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包