2026.10.10beanstalkd-rs: A Drop-in beanstalkd in Rust, with a Raft Cluster14 min read Operations per second, beanstalkd vs beanstalkd-rs Horizontal bar chart, higher is better. put-reserve-delete, 1 connection: beanstalkd 56,176, beanstalkd-rs 53,943 (0.96×); put-reserve-delete, 10 connections: beanstalkd 339,283, beanstalkd-rs 468,310 (1.38×); put-reserve-delete, 100 connections: beanstalkd 392,713, beanstalkd-rs 516,336 (1.31×); 100 connections, 4 KiB bodies: beanstalkd 362,247, beanstalkd-rs 463,416 (1.28×); 100 connections, 16 pipelined: beanstalkd 490,247, beanstalkd-rs 643,204 (1.31×); producers and consumers, 100 connections: beanstalkd 422,349, beanstalkd-rs 500,891 (1.19×); binlog (-b), 100 connections: beanstalkd 267,391, beanstalkd-rs 594,148 (2.22×). Operations per second (higher is better) 0.96× 1.38× 1.31× 1.28× 1.31× 1.19× 2.22× beanstalkd beanstalkd-rs beanstalkd-rs / beanstalkd 0 100k 200k 300k 400k 500k 600k 700k put-reserve-delete, 1 connection put-reserve-delete, 10 connections put-reserve-delete, 100 connections 100 connections, 4 KiB bodies 100 connections, 16 pipelined producers and consumers, 100 connections binlog (-b), 100 connections 56k 54k 339k 468k 393k 516k 362k 463k 490k 643k 422k 501k 267k 594k
2026.08.05simpleconf: A Go Config Service for When etcd Is Too Much11 min read simpleconf write path in Raft mode Four stages from an incoming PUT to the append-only log, with the alternative outcome at each stage on the right. One write, Raft mode reads never take this path — they are served locally from memory PUT /db/product.name 1 · am I the leader? no → re-issue to leader http_addr forward: false → 409 not leader 2 · raft.Apply(cmd) quorum commit across peers no quorum → error 3 · every FSM applies sjson.Set on the in-memory string client sees 200 here 4 · append to data.aof separate goroutine · no fsync after the response Steps 3 and 4 are decoupled: the acknowledgement means “applied in memory”, not “on disk”.