Hi all,
Our system is about ride reservations and acts as broker between customers and drivers. Something similar what Uber does with major differences that we are mostly focused on reservation scheduled in advance. So between moment when reservation is created and until reservation/ride is actually delivered by driver we are doing multiple checks/notifications/alerts. Currently that is implemented with queries scheduled to be executed on each 60 seconds. Approach with scheduled queries becomes inefficient as number of reservation and notifications/alerting rules is increased. Addition reason we want to rewrite that part of functionality is to decompose current monolith and large part of that decomposition is moving our services from scheduled (timer-based) to event-based mechanism. Here in table is simplified example what we have. Basically we have two streams one stream of reservation's related events and another stream would be time Time stream Stream of reservation events Deliver ticks (e.g each minute) Event time Reservation’s status Reservation Scheduled for .. 25/04/2017 11.22 PM CREATED 15/05/2017 16.30 PM … 26/04/2017 15.15 PM OFFERED 15/05/2017 16.30 PM … 26/04/2017 21.12 PM ASSIGNED 15/05/2017 16.30 PM … … 15/05/2017 16.30 PM … 15/05/2017 15.51 PM DRIVER EN ROUTE 15/05/2017 16.30 PM … 15/05/2017 15.25 PM DRIVER ON LOCATION 15/05/2017 16.30 PM Most of our rules are function of time and some reservation’s property (e.g. check if there are any reservations where remaining time before pickup is less than x). Number of reservations we currently fetching is ~5000 and number of notification/alerting rules is ~20 Based on documentation and some blog posts I have impression that Kafka and Kafka Stream library are good choice for this use case but I would like to confirm that with someone from Kafka team or to get some recommendations ... Thanks, Vladimir