【发布时间】:2020-10-26 10:37:59
【问题描述】:
假设有一个 Flask Web 服务器有两个路由,部署为 GKE 上的 CloudRun 服务。
@app.route('/cpu_intensive', methods=['POST'], endpoint='cpu_intensive')
def cpu_intensive():
#TODO: some actions, cpu intensive
@app.route('/batch_request', methods=['POST'], endpoint='batch_request')
def batch_request():
#TODO: invoke cpu_intensive
“batch_request”是一组许多相同的结构化请求 - 每个请求都是高度 CPU 密集型的,并由函数“cpu_intensive”处理。没有合理的机器可以处理大批量,因此需要跨多个副本并行处理。 部署配置为每个实例一次只能处理一个请求,因此当多个请求到达时,CloudRun 将复制该实例。 我希望有一个具有这两个端点的服务,一个接受“batch_requests”并且只将它们分解为较小的请求,另一个端点实际处理一个“cpu_intensive”请求。 “batch_request”将批处理分解为更小的请求并调用“cpu_intensive”以便 CloudRun 扩展实例数量的最佳方法是什么?
- 向 localhost 发出 http 请求 - 不起作用,因为负载平衡器不知道这些调用。
- 将部署 URL 保存在 conf 文件中并对其进行网络调用?
其他建议?
【问题讨论】:
标签: kubernetes load-balancing google-cloud-run