系统架构优化与分布式系统搭建
1. 请求排队与状态通知方案
在处理系统请求时,有多种方案可供选择。当系统负载较低、操作简单时,直接调用(plain calls)通常就足够了。但在高负载且端到端操作耗时较长的情况下,引入一个中间过程可能会带来好处。这个中间过程可以在保持系统一致性的同时,提高系统的响应能力,还能作为主动处理拥塞和增加负载的代理。例如,当系统过载,请求队列开始堆积时,可以拒绝接收更多请求,直到系统有喘息空间。
在不同场景下,没有一种方法适用于所有情况。直接调用可以作为初步尝试,因为它有助于保持一致性。之后,可以根据具体情况轻松切换到广播(casts)或引入中间过程。如果需要进行更复杂的负载管理,可以考虑使用 GenStage 库(https://github.com/elixir-lang/gen_stage),它允许构建各种生产者和消费者的管道。
2. 应用程序配置
OTP 应用程序可以使用应用程序环境(application environment)进行配置。应用程序环境是一个键值对的内存存储,其中键是原子,值是 Elixir 术语。可以通过位于 config 文件夹中的配置脚本文件提供应用程序环境值。Mix 工具会确保在应用程序启动前将配置加载到应用程序环境中,最后可以使用 Application 模块中的函数检索环境值。
2.1 应用程序环境示例
以一个待办事项 HTTP 服务器为例,当前它监听硬编码的端口 5454。可以通过 OS 环境变量使 HTTP 端口可配置。最常见的设置应用程序环境的方法是使用 config/runtime.exs 文件,该文件在应用程序启动前的运行时进行评估。 </
超级会员免费看
订阅专栏 解锁全文
11万+

被折叠的 条评论
为什么被折叠?



