背景: 我有一个语言处理Java应用程序,需要大约16MB的内存,并且在暴露Web服务之前需要大约40秒钟将资源初始化到该内存中。我是容器和相关技术的新手,所以很抱歉,如果我的问题很明显...
目标: 我想按需并以预加载/预配置状态提供数百个应用程序实例。 (例如,我可以打电话给AWS来建立我的应用程序的'n'个实例,它们将在<10秒内准备就绪。)
问题: 我期待我“能够”创建该应用程序的docker映像,对其进行初始化并暂停,从而能够按需克隆并“取消暂停”?您能否建议我想要做的事情是否可行,如果可行,您将如何处理。
AWS是我选择的平台,因此任何AWS风格的细节都将非常有用。
答案 0 :(得分:0)
如果您不介意,我会将您的问题一分为二:
1.启动N个容器(或更可能按需扩展)
2.预加载内存。
#1是Kubernetes的面包和黄油,您可以在网上找到大量有关它的资源,所以让我专注于#2。
真正的问题是,您过于关注可能的解决方案,无法查看大图:
您想“预加载内存”以加快启动时间(嗯,您认为Java在40年代Magick内存预加载器不会做的事情?)。
另一种方法是启动容器,让Java消耗40秒钟的资源,但在此期间不将该容器提供给全世界。
Kubernetes提供了实现此目标的工具,请参见:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
希望这会有所帮助!