/dyno

Java client for Dynomite

Primary LanguageJavaApache License 2.0Apache-2.0

Dyno

Build Status Dev chat at https://gitter.im/Netflix/dynomite Apache V2 License

Dyno encapsulates features necessary to scale a client application utilizing Dynomite.

See the blog post for introductory info.

See the wiki for documentation and examples.

Dyno Client Features

  • Connection pooling of persistent connections - this helps reduce connection churn on the Dynomite server with client connection reuse.
  • Topology aware load balancing (Token Aware) for avoiding any intermediate hops to a Dynomite coordinator node that is not the owner of the specified data.
  • Application specific local rack affinity based request routing to Dynomite nodes.
  • Application resilience by intelligently failing over to remote racks when local Dynomite rack nodes fail.
  • Application resilience against network glitches by constantly monitoring connection health and recycling unhealthy connections.
  • Capability of surgically routing traffic away from any nodes that need to be taken offline for maintenance.
  • Flexible retry policies such as exponential backoff etc
  • Insight into connection pool metrics
  • Highly configurable and pluggable connection pool components for implementing your advanced features.

Build

Dyno comes with a Gradle wrapper.

git clone https://github.com/Netflix/dyno.git

cd dyno

./gradlew clean build

The gradlew script will download all dependencies automatically and then build Dyno.

Contributing

Thank you for your interest in contributing to the Dyno project. Please see the Contributing file for instructions on how to submit a pull request.

Tip: It is always a good idea to submit an issue to discuss a proposed feature before writing code.

Help

Need some help with either getting up and going or some problems with the code?

License

Licensed under the Apache License, Version 2.0