微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IBM Cloud Code Engine:有状态的应用程序和粘性会话,扩展问题

如何解决IBM Cloud Code Engine:有状态的应用程序和粘性会话,扩展问题

我在 stackoverflow 上的第一篇文章;来了!

我刚刚发现了 IBM 代码引擎,很高兴尝试一下!本周末我尝试部署我的 docker 映像,尽管我在缩放方面遇到了一些问题。在讨论扩展问题之前,我有一些关于 IBM Cloud Code Engine 的一般问题,考虑到我的交互式应用程序:

  1. 有状态应用程序:我要部署的应用程序是有状态的。 IBM Cloud Code Engine 是否支持开箱即用的有状态应用程序?
  2. 粘性会话:由于我的应用程序是有状态的,目标是让用户及其所有相关操作保持在同一个容器中。例如,如果用户是在 container 1 中,然后点击一个按钮来执行服务器端代码我不希望代码container 2 中执行;它应该在 container 1 中。 IBM Cloud Code Engine 是否支持开箱即用?
  3. 临时存储:我在文档中看到可以设置临时存储(即磁盘空间),但我没有看到在控制台中修改它的能力。我错过了什么吗?或者,更多的 vcpu 和内存是否意味着更多的磁盘?我个人更喜欢容器注册表的 CLI,以及代码引擎本身的控制台。

请注意,无论每个实例的并发是 1 个还是多个用户,我都有这些问题。

缩放注意事项: 我成功部署了我的应用程序,它看起来像预期的那样。但是,作为唯一的用户,我看到多个实例在运行,而不是一个(2 个,有时是 3 个实例)。当我打开另一个浏览器并以另一个用户身份登录时,同样的事情发生了。运行所需的实例的两倍或三倍。有人可以建议吗?回到我上面的问题,我希望与应用的交互不会触发额外的实例。

如果有帮助,我可以提供一个简单的 Dockerfile 和应用程序代码

解决方法

  1. 一般来说答案是肯定的,尽管这取决于您如何定义有状态以及存储状态的位置。示例:可以将状态存储在 COS/S3 存储桶中,但目前不能将其存储在 NFS 挂载中
  2. 很遗憾没有。底层的 Knative OSS 技术尚不支持粘性会话,尽管开源社区正在努力,因此它可能会到来。
  3. UI 当前不支持此功能,但在 CLI 中,您可以将 ibmcloud ce app create --ephemeral-storage 指定为参数
  4. 缩放:这取决于您如何定义缩放标准。创建应用程序时,您可以在 Runtime settings 部分指定并发值。这决定了一个实例将并行处理多少线程/请求的值。如果该值设置为 1,并且您打开了三个浏览器选项卡发送请求,则代码引擎将扩展到(至少)三个实例(例如,当扩展目标是计算容量的 70% 时,我们将旋转到 4 )。如果该值设置为 100,则一个实例将处理 100 个并行请求,并且只有在您收到 101 个请求时才会发生横向扩展。它与发送这些请求的用户数量无关。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。