proomt

Search

Search posts, papers, and topics

All posts

InfoQLeela Kumili2 min readintermediate

Uber Redesigns M3DB Sharding with Subclusters to Limit Failure Impact

Summary

Uber reworked M3DB's shard placement by grouping nodes into fixed-size subclusters, each owning a disjoint shard range, to bound the blast radius of node failures. A greedy shard‑move algorithm (O(S log S) + O(S×N)) handles scaling while preserving existing placement tooling.

  • Subclusters partition a cluster into equal‑sized groups; each group owns a unique shard slice, limiting a single node failure to affect at most 1/subcluster of the data.
  • Scaling adds a new subcluster and greedily selects shards to move, sorting candidates (O(S log S)) and simulating load impact (O(S×N)) to avoid extra rebalancing passes.
  • The approach requires equal instance weights, subcluster size multiples of the replication factor, and does not support dynamic replica‑factor changes via AddReplica.
  • Uber kept the original instance‑level placement API, avoiding a massive bootstrap and preserving compatibility with existing operational tooling.

Ops teams managing large time‑series databases need predictable failure isolation and low‑overhead scaling, which this subcluster model directly addresses.

6/10

Related reading

  1. How Uber Protects Against Retry Storms

    Uber developed a context-aware mechanism to prevent retry storms in deep microservice dependency chains. It introduces "error ownership" where services claim errors they originate and unclaim errors they propagate, allowing upstream callers to make informed retry decisions and avoid amplifying load on already struggling services.

    Hacker News front pageuber.com12 minHN11949
  2. Accelerating the borderless Lakehouse: Announcing preview of cross-cloud caching

    Google Cloud previewed cross‑cloud caching for its Borderless Lakehouse. The feature caches sub‑file Parquet blocks in Google Cloud, encrypts them with GMEK, isolates cache per tenant/region, and validates freshness via metadata checks. In tests it can reduce cross‑cloud data transfer to <5% of the original size, lowering query latency and cost for Iceberg tables stored in other clouds. BigQuery…

    Google Cloud Bloggoogle.com3 minrelease
  3. Worker Backpressure (Part 1)

    Canva added a lightweight, local backpressure loop to its queue worker library that monitors per‑message success/failure, computes a backoff factor against a configurable failure‑rate set‑point, and throttles the worker’s concurrency. In two real incidents the mechanism kept failure rates under 2 % fleet‑wide, limited DLQ growth to a handful of messages, and maintained throughput without manual i…

    Canvacanva.dev10 min
  4. 1 points

    Saving another 100TB of RAM with math (and Rust)

    Cloudflare reduced the memory footprint of its Pingora Backend Router by re‑examining the consistent‑hashing implementation in the pingora‑ketama library. By increasing the number of virtual hash points per server from the default 1 to the standard 160 (and applying weighted hashing based on disk capacity), they cut the per‑node overhead enough to reclaim >100 TB of RAM across the fleet. The post…

    Hacker News front pagecloudflare.com13 minHN478120lobste.rs33
  5. Faster Maps: Chasing Swiss Speed

    ParparVM’s HashMap suffered catastrophic miss latency due to linear probing on dense integer keys. By adopting CPython‑style perturbed probing (Swiss‑table style) and extending tagged immediate values to more primitives, miss latency dropped from 32 s to ~45 ms, allocation pressure fell dramatically, and overall performance stayed roughly flat despite a modest hit‑time slowdown.

    CodeName Onecodenameone.com8 min