Java at Alibaba [pdf]
jcp.org
jcp.org
The scary things is that they have implemented coroutine (generalized async/await) by copying the stack back and forth instead of putting the stack in the heap like in stackless python or in scheme.
The big idea behind this is the concept of a continuation, and a conversion between programs in "direct style" (the way you normally write them) and "continuation passing style" which makes control flow explicit. You could start reading here if interested: http://matt.might.net/articles/by-example-continuation-passi... Or read about how Scheme compilers work to support first class continuations, and the tricks you can play with them.
Note the above only refers to the logical view of the language. A VM and JIT will have an ABI for method calls which may use registers to pass arguments (it may have several for interpreted and JITed code), and it can allocate objects purely on the stack if it can do good enough escape analysis.
There were a number of interesting projects at Da Vinci, including full TCO. I wonder how much further along Java would be if more of those projects got merged into mainline.
The slides say that on the busiest day of the year, they were serving around 175,000 transactions per second (126k of which, or maybe additionally, were payments).
On the next slide it says they have 'millions of JVMs' running an 'insurmountable number' of requests.
Is each JVM really taking 10s+ per transaction? Even assuming those JVMs are split between servers, messaging, caching, database, etc, I don't get why they need millions of them to handle c. 200k transactions per second.
Needless to say, I am not DevOps, so feel free to set me right.
200k transactions is a crazy number - a normal second for amazon is probably a few thousand orders (4-5k). This is 20x higher.
https://twitter.com/joelcomm/status/917229394212675584
That’s $3400/second in transactions for amazon, and certainly their average price/transaction is more than $1:1
>They have basically forked their entire backend stack, starting from the OS and moving upwards.
I doubt this being a cool thing. Sure, they are the second biggest IT employer in the country, and have excess resources for everything, but...
A thing about big dotcoms - architects there try to use off-the-shelf software for everything, even if the software is clearly unsuited for the task and its use will require hacks and massive re-engineering.
Putting efforts to use of off-the-shelf software without modifications and hacks greatly reduces all aspects of infrastructure support burden.
BUT, attempting to use of off-the-shelf software everywhere at all costs, that will of course give you problems. And the bigger your are, the worse this is. Read the article from a month ago how Alibaba got stuck with using MySQL for mission critical tasks, and how much efforts they put to "unhack" it
Do you have a link for that?
Isn't this pretty common at the $XXX billion dollar tech companies like Google, Facebook, etc?
Alibaba (and as well as other large online companies) had a huge leap during recent the Mobile Age as mobile phones makes online services more accessible to the public.
And government also enforced (impliedly) mobile carriers (China Unicom, China Mobile and China Telecom) to fueling this trend.
All this makes companies like Alibaba become very rich.
Plus, Alibaba's sites like taobao.com needs to handle tremendous amount of traffic in an average day, and even heavier traffic during promotion events like Nov 11 (Double 11) Day (It's like Black Friday[0]).
They had motive and resource to improve their system, and they opened some of those improvements already on GitHub[1]
[0] https://en.wikipedia.org/wiki/Black_Friday_%28shopping%29 [1] https://github.com/alibaba
What could be the benefits of not using the mainline Linux for a stack like that?
Remember, Linux is designed to run on as many machine configurations and support as many workloads as possible. To achieve this, kernel devs sometimes cannot adopt the most optimized implementation because it may lead to unforeseen corner cases.
On the other hand, a company like Alibaba knows exactly what kind of machines and workloads they are dealing with, which means that they can make those optimizations and gain a slight performance boost relative to mainline Linux.