OpenResty 历险记
OpenResty Markdown PostgreSQL About 1,379 words背景介绍
由于后端服务运行在1核1G
云机上,跑着Nginx
、php-fpm
、MongoDB
、Elasticsearch
、Redis
,Swap
了2G
内存(自我安慰)。
到了每天阿里云扫描时段,短信告警一条接一条,CPU
直接100%
。
机器瓶颈
发现php-fpm
占用了5
个进程,每个进程大约100M
内存,导致Es
只限制了250M
的内存上限,MongoDB
更是只有150M
,Nginx
和Redis
一直在角落里瑟瑟发抖,OMG!
高级武器
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
以前就了解过OpenResty
,Kong网关
、知乎静态资源
、CSDN
等这些都是基于OpenResty
。有这么多企业选择它,那我也就跟随大部队,追星一把。
陷入困境
经过几天的摸索,MongoDB
可以由lua-resty-mongol
实现连接,Redis
由内置模块支持,页面渲染由lua-resty-template
模板引擎可以搞定,但是有一个问题三天还没有解决。
将以Markdown
标记的文章,转换为HTML
的库有:
- bungle/lua-resty-hoedown:
bungle
大佬作品,需要依赖Hoedown
动态库(博主在Windows
平台尝试多种方式未编译通过,*nix
平台可以编译),末次更新2015/12
。 - mpeterv/markdown.lua: 纯
Lua
语言实现,但渲染代码块有问题,末次更新2015/09
。 - asb/lua-discount:
C
语言实现,需依赖Linux
中的Discount
(yum/apt-get
安装),无法在Windows
调试开发,末次更新2010/05
。 - jgm/lunamark:
jgm
出品,Windows
平台多次尝试未安装成功,末次更新2019/05
。
目前还没有Windows
平台可用的Markdown
转HTML
的解决方案。(针对Lua
语言而言。)
整装待发
项目后端打算使用OpenResty
+ PostgreSQL
替换PHP
+ MongoDB
。MongoDB
的数据同步将通过PostgreSQL
的FDW
功能完成。
希望能一路顺利,少踩坑。
OpenResty
见。
后记
2021/02/15
更新上线,历时一年。Markdown
转HTML
最后选择由前端JavaScript
库 mark.js 转换。
技术栈
- OpenResty:基于
Nginx
的高性能Web
服务器 - lua-resty-template:适用
Nginx
和OpenResty
的HTML
模板渲染引擎 - pgmoon:
PostgreSQL
的Lua
驱动 - lua-resty-woothee:基于
Woothee
的User-Agent
解析器 - lua-resty-http:
OpenResty
和ngx_lua
中的HTTP
客户端 - lua-resty-auto-ssl:自动注册和更新
Let's Encrypt
的https
证书
开源地址
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓