spring-boot-admin
spring-boot-admin copied to clipboard
Add Redis backed Event Store
- Mainly for testing if Travis CI supports Redis and what have to be done to get it working
Coverage decreased (-0.7%) to 90.58% when pulling 5fc4af868825c75745f94d02e89de8fce1761fa7 on srempfer:gh-684 into 53ce34a07dd21639b3c7cc25abeb960937b6d735 on codecentric:master.
We need to implement a GitHub Actions version of the Redis example also - for example see https://github.com/marketplace/actions/redis-server-in-github-actions
memo: addresses #684
I know this PR is in draft but tried this PR implementation in one of my project with Redis Sentinel configuration, here are my observations :-
- when using one instance of admin server & N instance of client it works perfect
- when used N instance of admin server behind a loadbalancer / proxy & N instance of client it fails (consistency between multiple admin server instance is not present) due to following reason :- lets say we have - 2 Admin (Admin A, Admin B) server apps behind LB - 4 Client (Client 1-4) apps registering themselves via LB endpoint i) Now assume if Client 1,3 registers themselves (with status UP) to Admin A app & client 2,4 registers themselves (with status UP) to Admin B, ii) during this scenario Admin A does status/info updates only for Client 1,3 it will save the updates in redis data store & its local snapshot repository (using default SnapshottingInstanceRepository) iii) similarly Admin B does status/info updates only for Client 2,4 it will save the updates in redis data store & its local snapshot repository (using default SnapshottingInstanceRepository) iv) Now since only local snapshot repository are updated the admin UI are not are in sync, for eg:- Admin B might show status of Client 1,3 as UNKNOWN / whatever was the last saved event present in redis for that instance
Possible Fix :- Use pub/sub model between Redis eventstores to publish any saved events by any Admin server instance so other admin instance knows about the change just like HazelcastEventStore
As this is slightly outdated and needs to be bumped to Spring Boot 3 as well, I will close this PR for now.