Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve useage of Redis, Redis Streams, and other Redis components in inter-service communication #336

Closed
robertbartel opened this issue Jun 2, 2023 · 4 comments · Fixed by #677
Assignees
Labels
enhancement New feature or request maas MaaS Workstream

Comments

@robertbartel
Copy link
Contributor

No description provided.

@robertbartel robertbartel added the enhancement New feature or request label Jun 2, 2023
@robertbartel robertbartel added the maas MaaS Workstream label Jun 2, 2023
@robertbartel
Copy link
Contributor Author

@christophertubbs I'm opening this to track this work. Feel free to split off subtasks as needed for more granular tracking. If you do, we should probably also change this issue to an Epic.

@christophertubbs
Copy link
Contributor

The EvaluationService makes heavy use of redis pubsub and the evaluation logic itself may benefit from work distribution like that. Are there any other places where redis streams should be inserted?

@aaraney
Copy link
Member

aaraney commented Jun 2, 2023

Are there any other places where redis streams should be inserted?

I would like to explore using redis streams as an event broker for the majority of service communication. To be more concrete, replacing websocket communication between services with publishing and subscribing to streams. I dont think streams is an optimal drop in replacement for our current communication, but that is not because of streams and instead the contents of the information we are sending between services at the moment.

@aaraney
Copy link
Member

aaraney commented Jun 2, 2023

Not to get too far ahead of myself while also trying to lay down a little context, I dont think we will think about each service using the broker in the same way, meaning some services we may think of as passive consumers and others as active. The difference between an active and passive consumer comes down to if the consumer receives "commands" or "events" respectively. An example of what im calling a passive consumer could be the monitoring service. The monitoring service may not be send a "command" like, {"command": "LISTEN_FOR_JOB", "payload": { "id": "908c6bdb-50d3-48e1-99f2-00db82c0827e" }} but instead just listens on one or more streams and acts on the information it receives. In contrast, an example of an active consumer could be the data service where some other actor sends a command like CHECK_DATA, and the data service determines if data exists to satisfy the request and publishes an event with the outcome of the check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request maas MaaS Workstream
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants