![云原生应用构建:基于OpenShift](https://wfqqreader-1252317822.image.myqcloud.com/cover/173/32436173/b_32436173.jpg)
上QQ阅读APP看书,第一时间看更新
3.2 Kubernetes时代Java面临的问题
在传统单体应用模式下,技术人员会对整个应用栈进行优化,从而在一个应用服务器上可以运行多个应用程序。例如,在一个JBoss EAP实例上,我们可以运行上百个应用程序。
传统单体应用架构大致分为五层:底层为操作系统;操作系统上运行Java虚拟机;Java虚拟机之上运行应用服务器;在应用服务器上是应用开发框架,如Spring Boot、MVC等;在应用开发框架上是应用程序(如WAR、JAR格式的应用包),如图3-11所示。
随着Kubernetes和容器的发展,虽然不少应用已经实现了容器化运行,但Java栈并没有太大变化,如图3-12所示。
![](https://epubservercos.yuewen.com/20751C/17517094506695406/epubprivate/OEBPS/Images/t3-11.jpg?sign=1738917935-9LcqMtCtKMSUA3NLHsCTqm82CvuYwPUF-0-a88264c56ac64b196f120cd9fcdb244f)
图3-11 传统单体应用架构
![](https://epubservercos.yuewen.com/20751C/17517094506695406/epubprivate/OEBPS/Images/t3-12.jpg?sign=1738917935-0jSEyTlc7jRkguoWTBPIlugDPZkCke9L-0-eece9878999b34cf1a0ada8c9469e188)
图3-12 Kubernetes时代的Java应用架构
开发人员认为Java过重:启动时间慢、消耗内存大,不适合于云原生时代。他们希望使用较新的应用框架来构建微服务,以便在Kubernetes中更高效地运行,Quarkus由此而生。它是真正针对微服务、无服务器、事件驱动的应用框架。