The Open Distributed Infrastructure Management (ODIM) framework provides a way to manage heterogeneous infrastructure resources using a single, standardized interface and data model. The plugins currently use the Kafka message bus to propagate mainly the events from managed resources to ODIM. This is seen as consuming a lot of memory for memory and compute restricted deployments of ODIM
ODIM RA will add support for using Redis streams as a replacement to Kafka in constrained environments. Note we are not removing support for Kafka. ODIM has an message bus interface for abstracting the actual message bus being used. The current implementation has only a Kafka driver. The proposed implementation will have a Redis driver added. It is easy to add code that lets ODIM switch between message bus implementation at startup time.
Redis streams can support similar functionality to that of Kafka in terms of message delivery semantics. The only significant difference is that Kafka persists messages to the file system by default. Whereas Redis stores data including messages online only. This is not a severe restriction as we can also configure Redis to persist online database onto an on disk store as well.
In addition to consuming lesser memory and file system on the host/container this solution also reduces the number of 3rd party components that need to be managed in an ODIM deployment. The current change is on the ODIM RA side only. Plugin side changes will be taken up later with a new proposal.