云原生应用构建:基于OpenShift
上QQ阅读APP看书,第一时间看更新

3.2 Kubernetes时代Java面临的问题

在传统单体应用模式下,技术人员会对整个应用栈进行优化,从而在一个应用服务器上可以运行多个应用程序。例如,在一个JBoss EAP实例上,我们可以运行上百个应用程序。

传统单体应用架构大致分为五层:底层为操作系统;操作系统上运行Java虚拟机;Java虚拟机之上运行应用服务器;在应用服务器上是应用开发框架,如Spring Boot、MVC等;在应用开发框架上是应用程序(如WAR、JAR格式的应用包),如图3-11所示。

随着Kubernetes和容器的发展,虽然不少应用已经实现了容器化运行,但Java栈并没有太大变化,如图3-12所示。

图3-11 传统单体应用架构

图3-12 Kubernetes时代的Java应用架构

开发人员认为Java过重:启动时间慢、消耗内存大,不适合于云原生时代。他们希望使用较新的应用框架来构建微服务,以便在Kubernetes中更高效地运行,Quarkus由此而生。它是真正针对微服务、无服务器、事件驱动的应用框架。