Nginx Lua 模块指令
Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构;另外指令可以在http、server、server if、location、location if几个范围进行配置:
Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构;另外指令可以在http、server、server if、location、location if几个范围进行配置:
在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。
使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Worker进程共享而不是每Nginx Server共享;
另外注意之前我们使用init_by_lua中初始化的全局变量是每请求复制一个;如果想在多个Worker进程间共享数据可以使用ngx.shared.DICT或如Redis之类的存储。
在/usr/openResty/lualib中已经提供了大量第三方开发库如cjson、redis客户端、mysql客户端:
官方安装文档:http://openresty.org/cn/linux-packages.html#centos
以centos举例:
1 | # add the yum repo: |
源码编译安装:
先去官网下载源码包:http://openresty.org/cn/download.html,安装指导:http://openresty.org/cn/installation.html
1 | brew install lua53 |
或者 源码编译
1 | curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz |
1 | curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz |
1 | ~ lua -v |
1 | service kudu-master restart |
1 | sudo -u kudu kudu cluster ksck master1,master2,master3 > ./ksck.out 2>&1 |
Presto 数据源加载机制原生是基于文件系统的,从配置目录中加载 数据源配置文件,从而实现不同源的数据库连接,而且整个过程是在presto集群启动时执行。而我们需要动态的增加/删除 数据源,并且不重启整个presto集群,所以对presto 加载数据源部分做了改造:
新增两个接口,用于向presto/trino 动态的增加和删除数据源:
POST http://{presto-api-base-url}/v1/catalog/add
DELETE http://{presto-api-base-url}/v1/catalog/delete
处理的流程图:

将Trino二次开发和调试过程中遇到的问题进行记录
Trino 使用一段时间报错:
1 |
|
重启后正常,应该是发包后没有重启,后续没有出现
Update your browser to view this website correctly. Update my browser now