1 Star 0 Fork 1

fkkeee / nginx_lua

forked from dormi330 / nginx_lua 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

本项目的目的是:负载均衡器与为服务注册中心之间的不匹配

在实际项目中使用dubbox作为服务治理框架,负载均衡使用traefik。有个问题: traefik无法读取dubbox注册的微服务信息数据。

现有的解决方案是:

  • 使用另外一个进程,将dubbo的注册数据,转换成traefik能够识别的格式。
  • 每个微服务启动时,将自己的信息添加到traefik。

弊端:

  • 每个微服务都需要自己进行注册
  • traefik不能去除失效节点(此问题尚未解决)

补丁: 额外开启一个进程,担当dubbox和traefik之间的信使,当dubbox在注册中心的信息发生变化是,通知traefik。 (这里会引入一个 该进程的可用性问题)

Plan B

采用openresty + lua的技术,解决以上问题

  • 模块A

    • 读取注册中心数据:lua中的一个模块负责从注册中心获取注册数据 (目前支持的注册中心为zookeeper,可扩展),
    • 将数据整理成为上游服务,并放在nginx的共享内存
    • 并采用非阻塞轮询的方式,刷新数据
  • 模块B

    • 负责接收外界请求,并将请求 动态转发到 上游服务
    • 可以记录所有错误,并对失效节点进行屏蔽
  • 模块C:管理节点

    • 可以读取/设置 对 上游服务的配置,包括负载均衡策略(这部分功能未实现),关闭节点

优势:

  • 可以做到非常灵活的控制
  • 简化开发

劣势:

  • 自己实现
  • 未经过实战检验

空文件

简介

nginx lua openrestry 学习 展开 收起
Lua
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Lua
1
https://gitee.com/fkkeee/nginx_lua.git
git@gitee.com:fkkeee/nginx_lua.git
fkkeee
nginx_lua
nginx_lua
master

搜索帮助