Ride-Sharing Microservices
A distributed system ensuring high availability and fault tolerance.
Architecture Overview
This project implements a scalable backend for a ride-sharing application (like Uber/Lyft). It is composed of loosely coupled microservices communicating via gRPC and message queues.
- Microservices: Driver Service, Rider Service, Trip Service, Payment Service.
- Communication: gRPC for synchronous low-latency calls, Kafka for asynchronous events.
- Database: MongoDB for flexible schema design (Trips), Redis for caching and geospatial data (Driver locations).
Key Technical Challenges
1. At-Least-Once Delivery
Ensured by implementing idempotent consumers. Each message processing logic checks a unique event ID against a processed-events store before execution to prevent duplicate side effects (e.g., charging a user twice).
2. Geospatial Search
Utilized Redis Geo to index driver locations and efficiently query "drivers within radius R" in O(log(N)) time.
Tech Stack
GogRPCKubernetesMongoDBStripe APIProject Stats
Role: Backend Engineer
Timeline: 3 Months
Status: Completed