天天看點

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

4 Eureka的高可用

如果一台 eureka 當機了咋辦呢,為了實作高可用, 如果直接加一台伺服器并無任何卵用,

4.1 考慮将兩台 eureka 互相注冊

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

複制得到兩份 eureka,并以端口區分

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

将 eureka1注冊到 eureka2上并啟動

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

将 eureka2注冊到 eureka1上并啟動

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考
Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考
Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

發現 client 在1,2同時都注冊成功了!

假如此時 eureka1當機了,會發生什麼呢?

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

我們來将1給關閉

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考
Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

發現2依舊存活,并且 client 還在連接配接

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

若此時再 client 端重新開機又會發生什麼呢?

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

因為無法注冊,自然報錯了, E2上也沒有 client 端再連接配接了

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

那麼問題來了,怎麼才能保證 E1當機後, client 仍能注冊在 E2上呢?隻要保持每次都同時往兩個 E 注冊

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

同理可得,當有3個 E 時,如此互相注冊

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考
Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

建立 E3

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考
Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

對于我們的本地開發環境,部署一個 E 即可,不再叢集

5 Eureka總結

◆ @EnableEurekaServer @EnableEurekaClient

◆ 心跳檢測、健康檢查、負載均衡等功能

◆ Eureka的高可用,生産上建議至少兩台以上

分布式系統中 ,服務注冊中心是最重要的基礎部分

結構圖

Spring Cloud 微服務實戰(三) - 服務注冊與發現(下下篇)4 Eureka的高可用5 Eureka總結參考

參考

SpringCloud Finchley三版本微服務實戰 網際網路Java進階面試訓練營