“NGINX 邮件组历史”论坛上线了
背景

长久以来,forum.nginx.org 作为 nginx 邮件讨论组的论坛形式,是 NJet 以及广大的 NGINX 开发人员交流、讨论的主要资源站点,尤其是方便的搜索能力,使得开发人员可以方便的查询历史讨论信息。但很遗憾,该站点已经下线,F5 推出了 community.nginx.org, 但并没有把历史数据迁移过来。
OpenNJet 因此决定从 NGINX email 讨论组的邮件归档中,重构一个论坛,便于开发人员进行搜索历史数据。同时,该论坛直接采用了 NJet 实现的 python 应用服务器框架,也是 NJet 能力的一个证明
设计
部署架构
出于对 NJet 应用服务器能力的展示要求,NJet 选择了基于 python 语言,django 架构的开源论坛软件 spirit(https://github.com/nitely/Spirit),不需要采用传统的 nginx 代理+python 应用服务器的模式,spirit 安装后,将直接在 NJet 进程内部运行,如下图展示

Email archive 到论坛的转换模型
受限于 spirit 的模型, email archive 转换为论坛时,不能够根据 email 进行树状转换,而仅仅实现了一层的扁平转换。举例来说,Email A 首先创建了一个主题的讨论邮件,后续 Email B ,C 做了回复, Email D 针对 Email C 做了回复。所有这 4 封邮件,会转换为一个 topic(即通过邮件 A 的 subject 创建的 topic)的讨论,该 topic 下会存在 4 条讨论。
论坛的用户直接从邮件的发送者转化而来,发送者的姓名+邮件地址构建为一个唯一用户
配置实例
python 环境和 spirit 项目初始化安装 pyenv 以及建立虚拟环境与安装 django-spirit 等包
安装与配置数据库
配置 njet 使用 wsgi 启动 spirit 论坛
Njet 启动
配置 PYTHONPATH 后即可
参考说明
1.为什么采用 python 应用直接部署在 NJet 的架构
该部署模式,具备传统的部署模式有部署简便、开发简化、高性能的优势。
部署简便:
避免了 proxy+python 应用服务器部署架构的由 proxy 处理静态资源,应用服务器出来动态请求的模型,仅仅一个 server 就可以利用 NJet 的高效 IO 处理静态资源
开发简化:
python 应用开发人员,仅仅编写同步调用的代码,无需考虑线程、异步调用, 业务请求就可以得以在 NJet 内部以类似协程的模型执行,IO 操作不会被阻塞,从而实现业务的并行
高性能:
NJet 中运行 python 应用会比常见的 python 应用服务器有 10 倍以上的性能提升
2.当前上线 nginx-dev 的历史
NGINX email archive 从https://mailman.nginx.org/pipermail/nginx-devel/获得
3.从 NGINX email archive 转换为论坛的脚本,借助于 deepseek 编写完成,如果有类似的需求,可以联系 njet-user@njet.org.cn 获取
4.Spirit 论坛软件的安装,可以参考其 readdocs 站点
其支持多种数据库连接,在本项目中,选择了 mysql 数据库,并选择了基于纯 python 实现的 mysql connector 驱动,是因为可以利用 NJet 特有的“同步编写,异步 IO 执行能力”
5.请直接访问 https://forum.njet.org.cn
NJet 应用引擎通过内核重构实现了独特的运行时动态配置加载能力,是新一代高性能 Web 应用引擎。NJet 拥有高性能数据面处理能力,将集群、高可用、主动健康检查、声明式 API 等多种辅助功能,通过 NJet 独特的副驾驶 CoPilot 服务框架调度,从而方便功能扩展,隔离管理 / 控制功能对数据面的影响,NJet 应用引擎性能超过 CNCF 推荐 Envoy 应用引擎的三倍。 邮件组 官网
版权声明: 本文为 InfoQ 作者【通明湖】的原创文章。
原文链接:【http://xie.infoq.cn/article/ec11b00477dbba0bae2b3e774】。文章转载请联系作者。
评论