Fix Version/s: None
Sprint:SUIT Sprint 2019-04, SUIT Sprint 2019-05
Team:Science User Interface
Using multi-cast to do service discovery does not work in GKE environment, and also it requires low-level hardware configuration.
DM-17601 was created to explore the alternate way to accomplish service discovery. It recommended using redis. This is the implementation ticket.
<text taken from PR>
The objective is to implement an alternative to multicast cache peer discovery mechanism. Multicast is not supported in the cloud, making Firefly unable to scale horizontally.
The implemented alternative is to use a publish-subscribe messaging system for peer discovery. The flow is similar to multicast in which it relies on a periodic heartbeat message from each active peer to determine ‘liveliness’. Subscribing to the same channel determine the membership of the group.
A custom CachePeerProviderFactory is created to determine which discovery mechanism to use based on configuration.
Messaging is implemented using Redis server and Jedis client. The preferred deployment of Redis is via Docker. Jedis dependencies were added to Firefly.