利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路
生活随笔
收集整理的這篇文章主要介紹了
利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目前常見的web常規的負載均衡大多數是通過nginx的upstream配置將流量轉發到內部的服務機上,來分擔流量過多的情況,但是這里往往出現的一個問題是,nginx上配置服務器的ip是固定的,如果某臺機器出現了服務故障,那么流量有概率會打到這臺機器導致出現服務不可訪問的故障,這時候往往需要人工介入將故障的節點ip剔除掉,那么有沒有好的辦法發現故障Ip剔除?可以利用zookeeper的特性來干這個事情的
zookeeper是什么?
Zookeeper 會維護一個具有層次關系的數據結構,它非常類似于一個標準的文件系統,目前是基于這個思路去考慮的。大體的結構圖:
具體思路
看到上面的樹狀結構大家應該想到了點上面東西了吧!那么服務自動發現具體可以這么做呢,這么利用zookeeper的這個特性去實現服務自動注冊、故障剔除的原理呢!下面都是基于golang的一些特性去講解。1)實現一個golang版本的路由層,然后在nginx=》upstream服務器之間加一層路由服務層,這個路由服務層就是用來維護所有服務的路由表。然后再通過路由層找到相對應服務的IP,最后通過rpc協議去調用某個具體的服務器
2)實現一個golang版本的微服務,每個微服務啟動的時候往zookeeper里面去注冊自己屬于哪個路由的,這里只要實現具體的業務邏輯即可。。下面是一個整體的架構與微服務之間的表現:
zookeeper的樹狀結構:
總結
以上是生活随笔為你收集整理的利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 包及简单模块
- 下一篇: 线段树之线段操作之陈老师的福利