I watched the beginning of the video but it's over an hour and relatively slow going.
I don't know Elixer or frameworks around it.
But I'm guessing you basically just used something like Zookeeper to do distributed locks at the API call level. Only when they got that lock would they then be given DB access, which then ensured the DB itself wouldn't grind to a halt as many calls were all locking tables at the same time.
So what was the solution to returning status to the caller? Did you just give them a ticket which they could then poll status later?
Meanwhile, the individual servers just put the requests on a local queue and spin in a thread till they get the lock from Zookeeper (or similar) and can access the DB?
I don't know Elixer or frameworks around it.
But I'm guessing you basically just used something like Zookeeper to do distributed locks at the API call level. Only when they got that lock would they then be given DB access, which then ensured the DB itself wouldn't grind to a halt as many calls were all locking tables at the same time.
So what was the solution to returning status to the caller? Did you just give them a ticket which they could then poll status later?
Meanwhile, the individual servers just put the requests on a local queue and spin in a thread till they get the lock from Zookeeper (or similar) and can access the DB?