虽然 Java 应用程序服务器将扩展唯一的 JVM 来运行多个(微)服务,但 dockerized java 微服务架构将为每个 dockerized 微服务运行一个 JVM。 考虑到 20 多个 Java 微服务和有限数量的主机,每台主机上的 JVM 消耗的资源量似乎是巨大的。
有没有有效的方法来解决这个问题?是否可以调整每个 JVM 以限制资源消耗? 目的是限制在 java 微服务架构中使用 docker 的开销。
每个运行的 Docker 和 JVM 副本都使用内存。通常,单个节点上有多个 JVM 会使用共享内存,但这不是 docker 的一个选项。
您可以做的是减少每个 JVM 的最大堆大小。不过,我允许每个 docker 镜像至少有 1 GB 的开销加上每个 JVM 的堆大小。虽然这听起来像是很多内存,但现在并不花费那么多。
假设您为每个 JVM 提供 2 GB 堆,并为 docker+JVM 添加 1 GB,您需要一台 64 GB 服务器来运行 20 个 JVM/docker。
可以通过优化微服务来减少内存消耗。但是,如果您已经最大限度地优化了流程,但对内存使用情况仍然不满意怎么办?
答案是GRAAL VM
GraalVM 可以为创建 OCI 映像提供多项显着优势,特别是对于 Java 微服务
性能
便携性
安全
额外优势
但是,重要的是要考虑任何潜在的缺点
总体而言,GraalVM 为创建 OCI 映像提供了引人注目的优势,特别是在性能、可移植性和安全性方面。根据您的特定用例和优先级权衡优点和潜在缺点可以帮助您确定 GraalVM 是否是 OCI 部署的正确选择。