【问题标题】:How to put website to maintenance mode without killing the current transactions如何在不终止当前事务的情况下将网站置于维护模式
【发布时间】:2014-02-14 20:04:22
【问题描述】:

我们需要将电子商务网站置于维护模式大约 20 分钟。我们如何在不终止当前事务的情况下做到这一点?因为,几乎总是有人在下订单。

步骤是什么?或者我们需要编写某种脚本或小软件来处理这个问题?

【问题讨论】:

  • 能否在单独部署上进行维护,然后将20分钟的数据同步到新部署中并切换url?
  • 例如,一个人刚刚点击了“下订单”按钮并等待页面下订单并重新加载会发生什么?疼吗?还是不行?
  • 因为无论如何都会重新启动 IIS 并且应用程序池将被回收,所以用户将失去焦点,我认为事务将丢失。
  • 这取决于您如何实现事务。你有某种逆转过程吗?如果您在有人下订单时立即切换网站,交易将被破坏,是的。
  • 我们使用 Authorize.net 进行支付处理。远程响应时间约为 2 秒。如果交易在这 2 秒之间被终止,我们将无法处理来自 authorize.net 的响应,并且交易将被放置在授权方而不是我们方。所以用户会提取一些钱,但他永远不会发货。

标签: c# asp.net-mvc iis deployment web-deployment


【解决方案1】:

回答您的具体问题:

由于维护窗口如此之长,您需要自己实施燃尽期。设置一个标志以进入一种即将维护的模式。

在此期间不允许新用户登录(即,如果尚未登录/有会话,则显示维护模式消息)。

对于现有用户,向他们显示系统即将进入维护模式的警告。作为一个很好的预防措施,您可以在用户以即将维护模式访问服务器时跟踪活动会话计数,并有一个内部管理页面显示此计数,以通知您的用户何时准备好让您离开进入维护模式。

然而,

我建议您研究一下为什么需要将网站置于维护模式 20 分钟。这似乎有点不寻常。您能否通过蓝/绿部署实现预期目标?

https://martinfowler.com/bliki/BlueGreenDeployment.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多