<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>VictoriaLogs on Yeqown</title>
    <link>https://www.yeqown.xyz/tags/VictoriaLogs/</link>
    <description>Recent content in VictoriaLogs on Yeqown</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 11 Dec 2025 14:05:17 +0800</lastBuildDate>
    <atom:link href="https://www.yeqown.xyz/tags/VictoriaLogs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>VictoriaLogs 设计与实现</title>
      <link>https://www.yeqown.xyz/2025/12/11/%E7%90%86%E8%A7%A3VictoriaLogs%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/</link>
      <pubDate>Thu, 11 Dec 2025 14:05:17 +0800</pubDate>
      <guid>https://www.yeqown.xyz/2025/12/11/%E7%90%86%E8%A7%A3VictoriaLogs%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0/</guid>
      <description>&lt;p&gt;Victoria Logs 简单易上手，非常适合中小团队使用，同时也适用于存储大量数据且成本敏感的场景，比如日志存储。&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;官方建议：如果可以接受在单节点上垂直扩展来满足业务需求，那么就不必使用集群模式。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;p&gt;本文包含大量源码片段，若不关注细节，可只阅读 &lt;a href=&#34;#%e6%9e%b6%e6%9e%84%e6%a6%82%e8%a7%88&#34;&gt;架构概览&lt;/a&gt; 和 &lt;a href=&#34;#%e5%ad%98%e5%82%a8%e6%a8%a1%e5%9e%8b&#34;&gt;存储模型&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;!-- more --&gt;&#xA;&lt;h2 id=&#34;架构概览&#34;&gt;架构概览&lt;a class=&#34;anchor&#34; href=&#34;#%e6%9e%b6%e6%9e%84%e6%a6%82%e8%a7%88&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Victoria Logs 的集群架构如下：&lt;/p&gt;&#xA;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://www.yeqown.xyz/images/victorialogs/vl-architecture.svg&#34; alt=&#34;Victoria Logs 架构图&#34;&gt;&#xA;    &lt;figcaption&gt;Victoria Logs 架构图&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;通过 vlagent 完成类似 Replica 的功能，将日志数据复制到多个 vlstorage 组件中，实现高可用和数据冗余。&lt;/li&gt;&#xA;&lt;li&gt;通过 vlinsert 执行日志数据的写入策略。&lt;/li&gt;&#xA;&lt;li&gt;通过 vlselect 来聚合多个 vlstorage 组件中的日志数据，实现查询功能。&lt;/li&gt;&#xA;&lt;li&gt;通过 vlstorage 可以无缝的实现扩展存储容量，而不用考虑数据迁移（rebalance）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;vlstorage 的缩容稍微复杂一些，这里提供一种方案：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;先将需要缩容的 vlstorage 节点从 vlinsert 的 &lt;code&gt;storageNode&lt;/code&gt; 列表中移除，vlselect 中保留；&lt;/li&gt;&#xA;&lt;li&gt;利用 Victoria Logs 的数据保留功能，让数据随逐步过期，直到待删除节点上的数据全部过期；&lt;/li&gt;&#xA;&lt;li&gt;最后将其从 vlselect 中移除，并释放 vlstorage 节点。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;也可以参考 &lt;a href=&#34;https://docs.victoriametrics.com/victorialogs/#partitions-lifecycle&#34;&gt;Partitions lifecycle&lt;/a&gt;，手动执行数据迁移。&lt;/p&gt;&#xA;&lt;h3 id=&#34;vlagent&#34;&gt;vlagent&lt;a class=&#34;anchor&#34; href=&#34;#vlagent&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;vlagent&lt;/code&gt; 是 Victoria Logs 的代理组件（类似 OpenTelemetry 的 Agent），位置更靠近日志源，同时也是一层缓冲区，负责接收日志数据并将其发送到 &lt;code&gt;vlinsert&lt;/code&gt; 组件。&lt;/p&gt;&#xA;&lt;p&gt;它可以将数据写入到不同的 Victoria Logs 实例中，实现数据的多写（复制），是实现高可用的必要组件。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
