服務發生變化時,須要手動修改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動態負載均衡 (原理同上)