High Performance Systems in Go
summary
Builds and results: an open-source MIT-licensed messaging system called NATS: lightweight publish-subscribe messaging is implemented in Go with client and server, replaces RabbitMQ for control planes and ships in Cloud Foundry. Performance tuning uses a zero-allocation byte-for-byte parser, custom hashing (gestus), unsafe conversions, avoided defer and short-lived allocations, and profiler plus race detector. Iteration goes from ~150k msg/s in Ruby to ~500k initially in Go and up to 5–6 million messages/sec on a Haswell laptop; the system runs and is in production use.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:16Go for high-performance systems
- 5:11NATS messaging system
- 8:46Protocol parsing optimizations
- 15:14Defer overhead and tuning
- 17:22Custom parsing for speed
- 19:06Subject routing optimizations
- 24:43Tooling and lessons learned
- 27:52Go for cloud infrastructure
- 28:54Closing remarks
related talks
21mNATS: A high-performance messaging system for communication between services
31mHow Go is Making us Faster
25mBeyond Kafka: Leveraging Event-Driven Architectures with Go and NATS JetStream
34mGolang: Specific Performance Issues
28mManaging and Scaling Real Time Data Pipelines using Go
53mGo at Mainframe Scale
21mLightning Talks
28mMicroservices – Boyan Dimitrov
