asynchronous - 如何从 GCP 中的无状态 Spring Boot 服务跟踪异步长时间运行进程的状态?
问题描述
我们有一些 Spring Boot 服务在其中运行,GCP Kubernetes Engine
它们将它们的 HTTP(通过 gRpc)API 暴露给客户端。一项任务是导入非常大的数据文件。建议的方法是将文件上传到 Google 存储,并通过提供导入位置的文件路径来触发,asynchronous import
并在请求有效的情况下返回 HTTP 202。
接下来,我们在持久层(spanner)中将导入的状态设置为挂起,并触发异步解析和批量摄取过程。如果导入成功,我们将状态设置为已完成。客户知道导入是否成功的唯一方法是返回并poll our API for the current status.
那么问题就来了。有好几个load-balanced pods
同种。如果导入服务崩溃(我的意思是崩溃,而不是异常处理),我们没有直接的方法最终将状态设置为中止。状态将永远保持挂起。
如果可能的话,我们希望避免使用像 hazelcast 这样的附加层。此外,我们希望避免让另一个服务直接与一个或其他 pod 通信、观察状态并执行一些花哨的回调操作。
谁能提示如何以最佳实践方式解决该问题?
非常感谢。
解决方案
推荐阅读
- node.js - 回发后在根视图而不是预期视图上显示 Flash 消息
- json - 如何编组和转义引号
- java - 验证为 BLE 设备的第一次传递参数
- javascript - 条件 V-HTML 渲染
- php - php: is_numeric 以不同方式处理前导和尾随空格
- selenium - 如果表中的一行在 x 和 y 列中具有特定模式的值,则查找网络定位器(css 或 xpath)
- python - 使用“random.shuffle”列表索引对字符串数组进行排序,而不是无类型错误
- maven - Azure DevOps 中的 Maven 中央上游源
- javascript - 将 JS 包含到用于 Chrome 扩展的 JS 中
- netsuite - 计算的截止日期不包括周末?