FediMeteo, HAProxy, and the art of not wasting snac threads
a day ago
- FediMeteo故意保持简单:预报用文本和表情符号,主页是静态HTML,每小时更新一次,以减少后端工作量。
- 该服务在FreeBSD监狱中使用许多小型snac实例,每个国家一个,位于单个HAProxy入口点之后。
- HAProxy处理TLS终止、通过映射文件进行主机名路由、后端连接复用和压缩。
- 使用了两个独立的缓存:一个较大的媒体缓存用于共享头像和静态文件,以及一个短期的JSON缓存用于公共ActivityPub请求。
- ActivityPub的缓存仅限于没有Authentication或Cookie标头的GET请求,并排除/outbox路径。
- 共享头像是一个关键的优化:它很小、公开、被频繁请求,并且几乎总是从缓存中提供。
- HAProxy缓存减少了到达snac的请求数量,从而将其有限的线程用于核心的ActivityPub工作。
- 添加了诊断性的X-Cache-Status标头以验证缓存行为。