Install
go get -u h12.io/kpax
Talk
I gave a talk about Kpax at Gopher Meetup Shanghai 2016. See the slides.
Design
The client is built on top of Kafka Wire Protocol (i.e. low-level API). The protocol related types & marshal/unmarshal functions are automatically generated by wipro from the HTML spec).
(-)
means to be done.
Sub packages
- model is an abstraction model for request, response, broker and cluster
- broker is a lazy, asynchronous and recoverable round tripper that talks to a single Kafka broker
- cluster is a metadata manager that talks to a Kafka cluster
- proto contains both low level API and a “middle” level facade
- producer: fault tolerant high-level producer (batching and partitioning strategy)
- consumer: fault tolerant high-level consumer (consumer group and offset commit)
- log: replaceable global logger
- cmd
- kpax: command line tool to help with Kafka programming
Compatibility
Compatible with Kafka Server 0.8.2.
Error Handling
- broker
- fail fast: timeout returns error immediately
- release resources carefully
- reconnect when requested next time
- client
- metadata reload lazily (only when a leader/coordinator cannot be found in cache)
- leader/coordinator should be deleted on error
- producer
- fail over to another partition
- failed partition will be retried again after a period of time
- partition expand (-)
- consumer
- just loop & wait on error
- partition expand (-)
- graceful shutdown (-)
Efficiency
- efficiency
- batching
- consumer response
- consumer request (-)
- producer (-)
- decompression
- snappy
- gzip (-)
- compression
- snappy (-)
- gzip (-)