
上QQ阅读APP看书,第一时间看更新
1.3 内存和第一响应时间
Quarkus被称为“超音速、亚原子”(supersonic,subatomic)的Java框架。你可能觉得这样描述有过度营销的嫌疑,但充分了解Quarkus的作用后,你会发现Quarkus确实是一个非常小巧、快速和高效的执行框架。通过Quarkus,你可以部署一个经过优化的Kubernetes原生应用。例如,假设你想部署一个Kubernetes原生应用,容器镜像约为200 MB或更小。在Quarkus中,这个应用将在几分之一秒内启动好并准备接受请求,只占用不到50 MB的内存。
在Kubernetes集群中部署应用程序时,你希望部署尽可能多的实例,尽可能多地利用集群资源,便于扩展应用以满足意外的负载。当扩展时,你希望新应用实例能够快速启动和运行——这就是原生可执行文件的优势所在。Quarkus在原生可执行文件的构建过程中,尽可能地对应用程序和框架进行预启动。这可以使应用程序快速启动,并为服务请求做好准备,而无须像JVM那样做额外的类加载、运行时扫描或其他预热工作。
当然,内存资源是有限的。了解应用程序到底使用了多少内存,在试图保持低内存使用量的同时不使JVM内存不足,是决定部署密度的关键。Quarkus可以成功实现这一点,它的原生可执行文件体积小,内存效率高。