问题:当spring准备好处理流量时,spring或其嵌入式servlet容器中是否有打开端口的选项?
情况:在当前的设置中,我使用了一个在google cloud run中运行的spring boot应用程序。
情况:
>
Cloud run不支持liveness/Readynes探测,它将开放端口视为“应用程序就绪”。
Cloud run将请求发送到容器,尽管spring尚未准备好处理请求。
Spring启动其servlet容器,打开其端口,同时仍然旋转其豆子。
问题:未编写应用程序的流量将导致大量http 429状态代码。
这会影响:
我的愿望:
>
将spring/servlet容器配置为在应用程序实际准备就绪时延迟打开端口。将打开端口延迟到应用程序准备就绪时将减轻很多痛苦,同时不会对现有代码库造成太多干扰。
有没有不会造成太多痛苦的替代方案?
我发现并认为不可行的事情
>
使用本机映像不是一种选择,因为它被认为是实验性的,并且在编译时消耗的RAM比我们的部署管道代理允许分配的要多(最大8GB与所需的13GB)
我发现的另一个答案是:谷歌云运行的准备情况检查-如何?我看不出它如何满足我的需求,因为Spring启动的启动时间仍然很慢。这就是为什么我最初的想法是推迟打开端口
我没有时间测试以下内容,但我偶然发现了一件事
云运行
支持任何类型的探测器之前,它似乎是可行的。
您很清楚“Cloud Run目前没有就绪/活动性检查来避免向未就绪的应用程序发送请求”,我想说的是,在Cloud Run方面除了以下几点之外,没有什么可以做的:
这个问题似乎更具体地针对Spring Boot,我发现了一篇具有类似要求的文章。然而,如果您绝对需要该应用程序在收到请求时随时可用,我们有另一种云运行的替代方案,即谷歌Kubernetes引擎(GKE),它利用就绪/活跃度探测。