Redis Service Manager
Maintains a list of services in a cluster and tracks their ready state after a rebalance. For use in crystal lang projects.
Installation
-
Add the dependency to your
shard.yml
:dependencies: redis_service_manager: github: place-labs/redis_service_manager
-
Run
shards install
Usage
require "redis_service_manager"
# TTL should be number > 3 that is not divisible by 3 to account for process load
# the manager will check-in with the cluster every `ttl // 3` seconds
manager = RedisServiceManager.new("service_name", "http://service:1234/location", redis: "redis://localhost:6379", ttl: 4)
# a rebalancing event occurs when a change to the cluster is detected
# the cluster will only become ready once all nodes have marked themselves as ready
# so make sure you call ready (critical function)
manager.on_rebalance do |version, nodes|
puts "REBALANCING"
manager.ready(version)
end
# this callback is only fired on the cluster leader
manager.on_cluster_ready do |version|
puts "CLUSTER READY"
end
manager.start