服务发生变化时,须要手动修改upstream列表,相对比较麻烦,所以呢咱们须要一种服务注册发现机制,将upstream动态注册到nginx上,从而实现upstream服务自动发现。nginx
常见的分布式服务注册发现系统有consul,zookeeper,etcd,eureka。算法
特性:负载均衡
服务注册分布式
服务发现lua
故障检测stream
k/v存储原理
数据一致算法:常见raft,Paxos算法zookeeper
Consul+Consul-template 每次发现配置更改须要raload nginx,重启Nginx。配置
Consul+OpenResty 实现无需raload动态负载均衡 (lua语言,配置文件放字典里面,每隔时间读取)配置文件
Consul+upsync+Nginx 实现无需raload动态负载均衡 (原理同上)