I am working on interview questions from Amazon.com Software Development Engineer Intern Interview Questions.
One of the interviewees was asked “give a scalable system design of Amazon.com’s order number generation service.”
I did some preliminary research Amazon Order Number and found that Amazon generates a 17 digit order number of the form 3-7-7, where the last 14 digits are seemingly pseudo-random with psuedo random meaning generated by an “algorithm that uses mathematical formulas to produce sequences of random numbers” Psuedo-Random Definition
I verified one on my own and saw that one of my order numbers – 112-9036246-9502632 followed this guideline.
How would you give a scalable, as in “ability of a computer application to continue to function as its size is changed to meet user end” Scability system design of this? To me this order number generation service is already pretty scalable cause that 3-7-7 combination should allow for a great range of combinations to accomodate for a great number of users. But if you wanted this service to be more scalable, would you just add more digits to the end to allow for more combinations of order numbers, that way you can accommodate for more orders?
12
The trick is in the first three digits. The last 14 digits are guaranteed to be unique within a certain domain, (say, a server,) so the first 3 digits must uniquely identify each domain. Therefore, every 17-digit number is guaranteed to be unique.
11