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

Reply via email to