Ibm cloud IBM云代码引擎:有状态应用程序和粘性会话、扩展问题

Ibm cloud IBM云代码引擎:有状态应用程序和粘性会话、扩展问题,ibm-cloud,stateful,ibm-cloud-code-engine,Ibm Cloud,Stateful,Ibm Cloud Code Engine,我在stackoverflow上的第一篇帖子;来吧 我刚刚发现了IBM代码引擎,很高兴尝试它!本周末,我尝试部署了一个docker镜像,但在缩放方面遇到了一些问题。在讨论扩展问题之前,我有一些关于IBM云代码引擎的一般问题,请记住我的交互式应用程序: 有状态应用程序:我要部署的应用程序是有状态的。IBM云代码引擎是否支持开箱即用的有状态应用程序 粘性会话:因为我的应用程序是有状态的,所以目标是让一个用户及其所有相关操作保持在同一个容器中。例如。,如果用户在容器1中并单击执行服务器端代码的按钮,我

我在stackoverflow上的第一篇帖子;来吧

我刚刚发现了IBM代码引擎,很高兴尝试它!本周末,我尝试部署了一个docker镜像,但在缩放方面遇到了一些问题。在讨论扩展问题之前,我有一些关于IBM云代码引擎的一般问题,请记住我的交互式应用程序:

  • 有状态应用程序:我要部署的应用程序是有状态的。IBM云代码引擎是否支持开箱即用的有状态应用程序
  • 粘性会话:因为我的应用程序是有状态的,所以目标是让一个用户及其所有相关操作保持在同一个容器中。例如。,如果用户在
    容器1
    中并单击执行服务器端代码的按钮,我不希望在
    容器2中执行该代码;它应该在
    容器1
    中。IBM云代码引擎是否支持这种开箱即用
  • 临时存储:我在文档中看到可以设置临时存储(即磁盘空间),但我看不到在控制台中修改此设置的功能。我错过什么了吗?或者,更多的vCPU和内存是否意味着更多的磁盘?我个人更喜欢容器注册表使用CLI,代码引擎本身使用控制台
  • 请注意,我有以下问题:每个实例的并发性是否为1个或多个用户

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

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

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

  • 感谢您的快速回复和明确的澄清;这是有道理的。快速跟进(2),因为我关心应用程序运行时和响应性,如果应用程序状态驻留在一个bucket中。如果最小实例数=0,最大实例数=1,服务器上的应用程序状态是否会以有限的方式工作?(包括使用本地文件系统),即设置实例vCPU和内存以处理估计的请求量。在这样的设置中,可以安全地说所有请求都保留在同一个容器中吗?如果是这样的话,考虑到缩放到0的功能,仍然有一些好处,因此只有在应用程序运行时才需要付费。只有当您的容器目前几乎从未缩小时,才会出现这种情况。如果它向下扩展,则该特定容器将保留一个超时值,但随后将被丢弃。当一个新的请求到达之后,容器将从头开始重新创建,因此将丢失文件系统中的状态信息,因为它将获得一个新的临时文件系统。本教程介绍如何将数据库支持的web应用部署到代码引擎。用户必须进行身份验证,并且该状态存储在会话cookie中。所有其他信息都保存在数据库中。我在运行它时将scale设置为零。为了澄清这一点,我只关心请求期间的状态数据保存(而不是混合请求)。我在一个远程存储桶中有持久性存储,计划是在应用程序加载时(建立连接时)提取状态信息,并在整个会话期间定期保存到该存储桶。因此,状态信息不会丢失,并且将在下次用户会话开始时再次提取(我有身份验证)。如果min-instances=0&max-instances=1,那么所有请求都保留在同一个容器中,文件系统可以使用,并且当有0个请求时,scale=0,这样说安全吗?