Input:
Output:
Input:
Output:
Input:
Output:
Input:
Output:
Input:
Output:
Input:
Output:
Input:
Output:
Graph service and database must use technologies and algorithms that are used for the map graphs. The service must be stateless and highly scalable. For database scalability we will use:
We will use PostgreSQL because it is very popular and has big community. We don't have very high load on this database, so we don't need to think about some noSQL option. To increase availability and read throughput the replication we be used.
Kafka is popular solution for message broker tasks. It is highly available and scalable.
We need an in-memory database, because the data is updated and requested frequently. For increasing availability we can use Redis Cluster replication
As mentioned above, all the services are stateless, so they can be scaled horizontally. They are not a bottleneck
All the databases are replicated, so they are not a bottleneck two
The graph service may be improved with more advanced algorithms. Also some machine learning may be used for better matching and price counting.