# nginx_lua **Repository Path**: dormi330/nginx_lua ## Basic Information - **Project Name**: nginx_lua - **Description**: nginx lua openrestry 学习 - **Primary Language**: Lua - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2016-09-05 - **Last Updated**: 2023-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本项目的目的是:负载均衡器与为服务注册中心之间的不匹配 在实际项目中使用dubbox作为服务治理框架,负载均衡使用traefik。有个问题: traefik无法读取dubbox注册的微服务信息数据。 现有的解决方案是: - 使用另外一个进程,将dubbo的注册数据,转换成traefik能够识别的格式。 - 每个微服务启动时,将自己的信息添加到traefik。 弊端: - 每个微服务都需要自己进行注册 - traefik不能去除失效节点(此问题尚未解决) 补丁: 额外开启一个进程,担当dubbox和traefik之间的信使,当dubbox在注册中心的信息发生变化是,通知traefik。 (这里会引入一个 该进程的可用性问题) # Plan B 采用openresty + lua的技术,解决以上问题 - 模块A - 读取注册中心数据:lua中的一个模块负责从注册中心获取注册数据 (目前支持的注册中心为zookeeper,可扩展), - 将数据整理成为上游服务,并放在nginx的共享内存 - 并采用非阻塞轮询的方式,刷新数据 - 模块B - 负责接收外界请求,并将请求 动态转发到 上游服务 - 可以记录所有错误,并对失效节点进行屏蔽 - 模块C:管理节点 - 可以读取/设置 对 上游服务的配置,包括负载均衡策略(这部分功能未实现),关闭节点 优势: - 可以做到非常灵活的控制 - 简化开发 劣势: - 自己实现 - 未经过实战检验