Open Source Tech
FOSDEM 2025 recap
FOSDEM (Free and Open Source Software Developers’ European Meeting) is a huge, free, gathering for open-source software enthusiasts that happens every February in Brussels, Belgium. It’s a non-profit event put together by the community, and it’s one of the biggest of its kind. See more in our recap!
How Protobuf Works—The Art of Data Encoding
Protocol Buffers is faster and smaller than JSON, but the interesting part is understanding why. This article breaks down the encoding techniques that make Protobuf efficient, backed by benchmark results and practical examples
How vmstorage Handles Query Requests From vmselect
When vmselect asks vmstorage for data, there’s actually quite a bit happening behind the scenes. This article breaks down the process of how vmstorage locates and retrieves your metrics, from finding the right TSIDs to sending back the actual data points.
How vmstorage's IndexDB Works
IndexDB acts as vmstorage’s memory - it remembers which numbers (TSIDs) belong to which metrics, making sure your queries get answered fast. This article walks through how this system works, from the way it organizes data to how it keeps track of millions of timeseries.
How HTTP/2 Works and How to Enable It in Go
HTTP/2 solves head-of-line blocking at the application layer by multiplexing multiple streams over a single TCP connection. While HTTP/1.1 requires requests to be processed sequentially, HTTP/2 allows parallel processing through independent streams, each with its own ID. The Go standard library supports HTTP/2 out of the box when using HTTPS, and with some configuration, it can work over plain HTTP too
How vmstorage Processes Data: Retention, Merging, Deduplication,...
vmstorage takes data from vminsert through a concurrency limiter, creates TSIDs for each row, and puts them in memory buffers. Every few seconds, it moves data to storage parts on disk. The system merges parts, removes duplicates, and cleans old data. This turns raw metrics into data users can search.
How vmstorage Handles Data Ingestion From vminsert
This article explains how vmstorage processes incoming metrics, assigns unique IDs to timeseries, and organizes everything into different types of storage parts. The whole system is pretty clever - it uses in-memory buffers for speed, smart compression to save space, and has various watchdogs keeping an eye on things like disk space and data retention.
When Metrics Meet vminsert: A Data-Delivery Story
vminsert acts as a gateway for incoming monitoring data. It receives data in different formats, processes it by parsing and adjusting labels, then uses memory buffers to send this data to storage nodes. It’s smart enough to always send the same type of data to the same storage node and can redirect data if a node isn’t working properly.
From net/rpc to gRPC in Go Applications
The net/rpc package in Go demonstrates basic RPC concepts by establishing TCP connections between clients and servers, using sequence numbers to match requests with responses, and supporting both gob (Go-specific) and JSON codecs for data serialization. While net/rpc is simpler and limited to Go services by default, gRPC offers advanced features like HTTP/2 streaming, cross-language support, and better performance
Weak Pointers in Go: Why They Matter Now
Through the weak package, you can create these special pointers that automatically become nil when their target memory gets collected. While they’re a bit trickier to use than regular pointers, they’re super useful for things like canonicalization maps and memory-efficient caching. The implementation is pretty clever too, using an 8-byte indirection object to make garbage collection more efficient.