On November 11, 2017, Alibaba smashed its own online transaction record once again. The peak throughput of 325,000 transactions per second is 85% more than that in 2016. Most of these business-critical transactions are handled by hundreds of thousands of Java applications, written in more than a billion lines of code. Alibaba JDK (AJDK) is the engine that runs these eCommerce applications in extreme scaling. There is no way we can build a JDK from scratch. We customized OpenJDK since 2011 to run our Java applications on more than 100,000 servers.
In this talk, we will discuss how we tailor the OpenJDK for our needs. We will go into the details of the improvements we have made:
1) We develop a new GC-free mechanism which can allocate objects in something we call the hidden regions, so that the application can manipulate them as normal Java objects but without any additional GC overhead.
2) We integrate lightweight threads (co-routines) into JVM to support asynchronous programming.
3) We build online profiling capacity into JVM for efficient diagnostics. We will describe how characterization of our Java workloads would guide us to implement these features. While your workloads are different, the thought process we went through could be useful for you too.