gpt4 book ai didi

clojure - 使用 clojure 的 Web 应用程序使用代码热交换

转载 作者:行者123 更新时间:2023-12-03 00:25:45 25 4
gpt4 key购买 nike

我正在考虑用 clojure 编写一个网络应用程序,它可以在不重新启动或丢失状态的情况下进行 self 更新。

我看过一些文章,其中 Clojure 应用程序可以执行所谓的代码热交换。这意味着他们可以在运行时更新自己的函数。这在网络服务器上执行是否安全?

最佳答案

如果可能的话,要实现代码的热插拔是很困难的。这也取决于变更集和正在运行的应用程序。

问题:

  • 旧的变量可能会乱七八糟的命名空间并导致微妙的冲突和错误
  • 重新定义多个变量不是原子的

命名空间中可能有旧的变量,如果您重新启动应用程序,这些旧变量将不存在,但如果您只是重新定义一些函数并保持应用程序运行而不重新启动,则会产生干扰。

另一个问题是原子性:重新定义多个函数,即更改多个变量不是原子性的。如果您更改一个或多个命名空间中的某个其他命名空间中的代码所依赖的函数,则使用新代码重新加载命名空间并不是原子操作。

一般来说,你的情况会更好

  1. 让代理保留请求,直到您的应用重新启动
  2. 与“旧版本”并行启动一个新应用实例,并在新版本准备好处理请求后使用代理从新版本切换

关于clojure - 使用 clojure 的 Web 应用程序使用代码热交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11669604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com