github.com/lirm/aeron-go@v0.0.0-20230415210743-920325491dc4/cluster/README.md (about) 1 # aeron-go/cluster 2 3 Implementation of [Aeron Cluster](https://github.com/real-logic/Aeron/tree/master/aeron-cluster) service container in Go. 4 Most structs and functions have near one-to-one parity with the Java classes and 5 methods on which they are based. 6 7 The [Java media driver, archive and consensus module](https://github.com/real-logic/aeron/blob/master/aeron-cluster/src/main/java/io/aeron/cluster/ClusteredMediaDriver.java) 8 must be used to run a cluster. 9 10 The [Aeron Cluster 11 protocol](http://github.com/real-logic/aeron/blob/master/aeron-cluster/src/main/resources/cluster/aeron-cluster-codecs.xml) 12 is specified in xml using the [Simple Binary Encoding (SBE)](https://github.com/real-logic/simple-binary-encoding). 13 14 ## Current State 15 The implementation is functional and mostly feature complete, including support 16 for snapshotting, timers, multiple services within the same cluster, sending messages 17 back to cluster sessions, and service mark files. The [Cluster](cluster.go) interface 18 lacks of the methods of its [Java equivalent](https://github.com/real-logic/aeron/blob/master/aeron-cluster/src/main/java/io/aeron/cluster/service/Cluster.java), 19 but these would be trivial additions. 20 21 ## Examples 22 23 [echo_service.go](../examples/cluster/echo_service.go) implements a basic echo service and can be 24 used in place of its [Java equivalent](https://github.com/real-logic/aeron/blob/master/aeron-samples/src/main/java/io/aeron/samples/cluster/EchoService.java). 25 26 [throughput_test_client.go](../examples/cluster_client/throughput_test_client.go) implements an example 27 of using the cluster client. 28 29 # Backlog 30 * godoc improvements 31 * testing 32 * cluster session close handling (avoid sending duplicate close requests to consensus module) 33 * SBE encoding/decoding improvements