天天看點

2021Java開發現狀分析,Java全套視訊

業界常用的服務注冊與發現元件對比

了解服務注冊與發現的基本原理後,如果你要在項目中使用服務注冊與發現元件,當面對衆多的開源元件該如何進行技術選型?

在網際網路公司裡,有研發實力的大公司一般會選擇自研或者基于開源元件進行二次開發,但是對于中小型公司來說直接選用一款開源軟體會是一個不錯的選擇。

常用的注冊與發現元件有eureka,zookeeper,consul,etcd等,由于eureka在2018年已經宣布放棄維護,這裡就不再推薦使用了。

2021Java開發現狀分析,Java全套視訊

業界開源元件

下面結合各個次元對比一下各元件。

元件優點缺點接口類型一緻性算法zookeeper1.功能強大,不僅僅隻是服務發現;

2.提供watcher機制可以實時擷取服務提供者的狀态;

3.廣泛使用,dubbo等微服務架構已支援;1.沒有健康檢查;

2.需要在服務中引入sdk,內建複雜度高;

3.不支援多資料中心;sdkPaxosconsul1.開箱即用,友善內建;

2.帶健康檢查;

3.支援多資料中心;

4.提供web管理界面;不能實時擷取服務變換通知restful/dnsRaftetcd1.開箱即用,友善內建;

2.可配置性強1.沒有健康檢查;

2.需配合三方工具完成服務發現功能;

3.不支援多資料中心;restfulRaft

從整體上看consul的功能更加完備和均衡。接下來以consul為例詳細介紹一下。

Consul——值得推薦的服務注冊與發現開源元件簡單認識一下Consul

Consul是HashiCorp公司推出的開源工,使用Go語言開發,具有開箱即可部署友善的特點。Consul是分布式的、高可用的、 可橫向擴充的用于實作分布式系統的服務發現與配置。

Consul有哪些優勢?

服務注冊發現:Consul提供了通過DNS或者restful接口的方式來注冊服務和發現服務。服務可根據實際情況自行選擇。

健康檢查:Consul的Client可以提供任意數量的健康檢查,既可以與給定的服務相關聯,也可以與本地節點相關聯。

多資料中心:Consul支援多資料中心,這意味着使用者不需要擔心Consul自身的高可用性問題以及多資料中心帶來的擴充接入等問題。

Consul的架構圖

Consul架構

Consul 實作多資料中心依賴于gossip protocol協定。這樣做的目的:

不需要使用伺服器的位址來配置用戶端;服務發現是自動完成的。

健康檢查故障的工作不是放在伺服器上,而是分布式的。

Consul的使用場景

Consul的應用場景包括服務注冊發現、服務隔離、服務配置等。

服務注冊發現場景中consul作為注冊中心,服務位址被注冊到consul中以後,可以使用consul提供的dns、http接口查詢,consul支援health check。

服務隔離場景中consul支援以服務為機關設定通路政策,能同時支援經典的平台和新興的平台,支援tls證書分發,service-to-service加密。

服務配置場景中consul提供key-value資料存儲功能,并且能将變動迅速地通知出去,借助Consul可以實作配置共享,需要讀取配置的服務可以從Consul中讀取到準确的配置資訊。

總結

無論是哪家公司,都很重視高并發高可用的技術,重視基礎,重視JVM。面試是一個雙向選擇的過程,不要抱着畏懼的心态去面試,不利于自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛煉。其實我寫了這麼多,隻是我自己的總結,并不一定适用于所有人,相信經過一些面試,大家都會有這些感觸。

最後我整理了一些面試真題資料,技術知識點剖析教程,還有和廣大同仁一起交流學習共同進步,還有一些職業經驗的分享。

2021Java開發現狀分析,Java全套視訊
<b> </b>