Introducing Tank, a very high performance log
Tank is a (very) high performance log. It is similar to Apache Kafka in semantics, but it’s optimised for very high throughput and very low latency, and designed with operational simplicity in mind.
It is still a work in progress, although most of the planned features have been implemented, and it has been in use for weeks without any problems of any kind.
Tank is OSS. You can find Tank on GitHub.
The end-goal is not to match all Kafka’s features, but to look into features and design of various similar services and projects, and incorporate those that are particularly interesting or useful, as long as they won’t impact the performance and scalability of Tank.
Perhaps the most important feature that hasn’t yet been merged into the main branch, is clusters-aware support through, initially, etcd (although the plan is to support more distributed consensus services, and folks are of course welcome to contribute PRs for their favourite service). This has been deliberately delayed until the protocol and encoding have been finalised and we are confident about the implementation, and we believe those requirements have been met so work will resume shortly.
There is currently a C++14 client library available, and a single CLI tool (tank-cli) can be used to manage Tank brokers, consume and publish messages to them, benchmark them, mirror messages across brokers, etc. A Java client library has been implemented and is currently being refined and tested by a colleague, and should become available on GH next week.
Please refer to Tank Wiki, all open issues, and the messages encoding documentation for more info.