donnemartin / system-design-primer

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
Other
269.32k stars 45.52k forks source link

Efficient method to address concurrent requests in a successfully e-commerce platform #63

Open berrytchaks opened 7 years ago

berrytchaks commented 7 years ago

Hi,

Given a successfully e-commerce platform like Amazon, when there are millions of sellers and buyers. If a seller is selling many 20 articles and receives 30 concurrent buying request from customers. How will the platform addresses effectively and efficiently all those concurrent requests.

Here is what I thought of: Synchronizing the database for any buying request. The problem here is that we will have some latency and performance issues.

Any Better Solutions. Thanks.

donnemartin commented 7 years ago

Hi @berrytchaks, I've added some tags in case anyone wants to add to the discussion or post a handy resource link.

Amazon's architecture linked from the System Design Primer.

Relevant section you might find helpful:

Eric Brewer's CAP Theorem or the Three properties of Systems ...

  • For the checkout process you always want to honor requests to add items to a shopping cart because it's revenue producing. In this case you choose high availability. Errors are hidden from the customer and sorted out later.
  • When a customer submits an order you favor consistency because several services--credit card processing, shipping and handling, reporting--are simultaneously accessing the data.
IAmPramod commented 5 years ago

@berrytchaks Probably I'm late for the party but recently I was asked similar question in an interview. I think what amazon does is allow all the customers to place the orders for the item and place the orders in a asynchronous queue to check the availability later.

This is probably the reason why they don't the confirm the order as and when you place it.