In the current implementation, ACM supports multi-participant with same supported element Type but different participantId, so they need different properties file.
In order to support replica, it needs to support multi-participant using same properties file.
Solution 1:
Add dynamic participantId support.
Changes in Participant:
- UUID participantId will be generated in memory instead to fetch it in properties file.
- cosumerGroup will be empty (kafka configuration): any participant will have unique Kafka queue.
Changes in ACM-runtime:
- When participant go OFF_LINE:
- if there are compositions connected to that participant, ACM-runtime will find other ON_LINE participant with same supported element type;
- if other ON_LINE participant is present it will change the connection with all compositions and instance;
- after that, it will execute restart for all compositions and instances to the ON_LINE participant.
- When receive a participant REGISTER:
- it will check if there are compositions connected to a OFF_LINE participant with same supported element type;
- if there are, it will change the connection with all compositions and instances to that new registered participant;
- after that it will execute restart for all compositions and instances changed.
Solution 2:
Add a no-sql database support for participant.
Changes in Participant:
- Add client support for no-sql database
- Add repository support
- Refactor CacheProvider to support insert/update
- Add Transactional support
- Refactor Participants that are using own cache in memory (Policy Participant saves policy and policy type in memory)
Changes in docker/Kubernetes environment
- Refactor CSIT to support no-sql database
- Refactor performance and stability test to support no-sql database
- Refactor OOM to support no-sql database
Changes in ACM-runtime:
- Refactor restarting scenario to apply the restarting only for compositions and instances in transition