2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以了解有关如何使用此功能的更多信息。

0
Clojure
重提

从 Ring 入门。我最熟悉使用 PHP 进行 Web 开发,在 PHP 中,应用是每次请求时从新启动的,如通过 web 服务器(例如 Apache)代理。

这当然意味着 PHP 应用本身不可能保持任何内存状态(PHP 强制执行“无共享”架构)。所以我注意到其他语言(如 Java 和 Clojure)中,服务器是长时间运行的过程,因此有全局状态选项。然而,我的目标是坚持 12 因素原则,所以我认为应该避免应用状态,就像我在 PHP 中编程一样。

我对重新加载工作流等方面有初步的了解。当然,在许多情况下这很有意义。

然而,由于我现在的目标是我的 Web 应用程序没有全局状态,这意味着我真的不需要重新加载工作流(因此 lein ring 就足够了——只需重新加载代码,而不是状态)。

我想知道我是否遗漏了什么。例如,如果我更改配置变量,这可能算作“状态”,需要重新加载。是的,我将自行测试以找出答案。

但只是想找到一些关于这些问题的通用建议/讨论,以帮助我迈出正确的第一步。

1 答案

0

"环"型web服务器的状态可能包括端口号、监听端口的Jetty对象、webservices的客户池和旧式数据库的连接池、程序每次启动时从文本文件构建的Lucene拼写索引……以及一些可能非常不明智地从数据库缓存的数据。通常,您不会期望在服务器状态下保存许多关于网站活跃用户的信息,因为在多服务器托管环境中,访客可能会从一个服务器跳转到另一个服务器。

...