Java client for Dynomite
Java Shell
shailesh33 and ipapapa Reduce calls to TokenMapSupplier (#224)
* Reduce calls to TokenMapSupplier

At the startup, the client was talking to every node in the dynomite cluster to get token information.
This was done at 3 places. This lead to slow client startup and also too many calls to the underlying token database,
This is a simple optimization to skip talking to remaining hosts if the client received the information for all the hosts
specfied.

* Code review comments
Latest commit 786b6b2 Jun 4, 2018
Permalink
Failed to load latest commit information.
dyno-client/src/main/java/com/netflix/dyno Add modules and sourceCompatibility May 31, 2018
dyno-contrib/src Revert "Support for configurable Dynomite port (#202)" Feb 9, 2018
dyno-core/src Reduce calls to TokenMapSupplier (#224) Jun 4, 2018
dyno-demo/src/main Reduce calls to TokenMapSupplier (#224) Jun 4, 2018
dyno-jedis/src Add modules and sourceCompatibility May 31, 2018
dyno-memcache/src/main Adding Apache License through `licenseFormat` gradle wrapper task Aug 9, 2016
dyno-recipes/src Adding Apache License through `licenseFormat` gradle wrapper task Aug 9, 2016
dyno-redisson/src/main/java/com/netflix/dyno/redisson First prototype code. Dec 15, 2017
gradle/wrapper Add modules and sourceCompatibility May 31, 2018
.gitignore ISSUE-138: remove the requirement on nebula-compileApi config as it's… Nov 22, 2017
.travis.yml Switch to jdk8 Oct 28, 2016
CHANGELOG.md resolved merge conflict May 13, 2015
CONTRIBUTING.md adding contributing file Sep 4, 2016
LICENSE Initial commit Mar 26, 2014
OSSMETADATA adding OSSMETADATA for NetflixOSS tracking Dec 11, 2015
README.md Update README.md Oct 27, 2016
build.gradle Add modules and sourceCompatibility May 31, 2018
buildViaTravis.sh Netflixoss 3.6.0, Gradle 3.4.1, remove candidate special repo Mar 30, 2017
gradle.properties gradle updates 2.2.1 -> 2.6 Mar 16, 2016
gradlew DynoJedisPipeline support hashtags, text cases, and gradle updates Sep 22, 2017
gradlew.bat Netflixoss 3.6.0, Gradle 3.4.1, remove candidate special repo Mar 30, 2017
installViaTravis.sh updating travis Oct 27, 2016
settings.gradle Add modules and sourceCompatibility May 31, 2018

README.md

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