Java開發大互聯網-微服務服務註冊發現與如何實現容器部署?

asd57362118

服務發現

先了解一下什麼是服務發現。

傳統的接口調用,都是客戶端程序把服務端的地址記錄下來,然後根據接口地址進行服務調用。如果在不同的測試環境上,服務地址有可能是不一樣的:

測試環境:http://xxx.uat.com/server/query

生產環境:http://xxx.prd.com/server/query

那麼客戶端就需要小心翼翼的維護好這些配置,否則就會出現問題。而且如果服務越來越多,都是集群化部署,那麼這個配置維護起來很困難。


微服務中的解決方案就是使用服務註冊和服務發現。


服務端啟動之後,主動的把自己的接口地址等級到一個地方,這個地方叫做服務中心,登記的時候保存,這個服務地址也可以是多個。

那麼客戶端需要調用服務端接口的時候,就去服務中心按照服務名稱查找,找到了之後就可以知道現在的服務接口地址是什麼,再去進行調用。

服務端登記的過程叫做服務註冊,客戶端查找的過程叫做服務發現。


微服務註冊發現的方案

用過Dubbo和Spring Cloud,就分別說說他們各自的解決方案。

  • Dubbo:註冊中心可以用Zookepper/Redis/簡單註冊中心這幾種,甚至可以基於數據庫實現註冊中心。如果開發能力沒那麼強,建議使用Zookepper。

  • Spring Cloud:這個就簡單了,直接使用Eureka就好了,它本身就是Spring Cloud體系中的一部分。


容器

再說到容器,現在最火的就是docker了吧。

不過我們公司推docker一直沒推起來,還用的是虛擬機,近今年開始有私有云。

Java語言號稱一次編譯,到處運行。Java虛擬機解決了跨平臺的問題。只要安裝了Java虛擬機,就可以執行Java代碼。

那麼Docker就是一次封裝,到處運行。Docker解決了環境的問題。只要安裝了Docker平臺,就可以跑Docker包。這裡說的封裝是什麼,就是你讓一個項目跑起來所需要的所有的東西。


希望我的回答可以幫助到你!


會點代碼的大叔

微服務技術現在正炙手可熱,因為使用微服務讓系統的安全性,穩定性得以保證!

什麼是微服務?區別於原來的單一系統,微服務是通過服務拆分,分佈在不同的服務器上,並以一定的通信方式傳遞數據,實現各服務之間的解耦合的一套分佈式架構!

既然分佈在不同的服務器上,服務間通信的問題就是不可避免的問題,引進中間組件來維護服務是必不可缺的選擇!

服務註冊與發現有多種方式,比如dubbo使用zk,springcloud使用eureka等!下面就以eureka為例:

eureka分為server和client,將client放在業務服務代碼中定時向eureka server註冊服務,在server端統一進行維護一份服務列表,等到服務消費方調用服務的時候,先經過服務註冊中心,找到相應服務實現調用!

springcloud項目中具體實現如下:
1,搭建服務註冊中心服務端:加入eureka server依賴,在啟動類中加入@EnableEurekaServer註解,配置文件加入端口,是否註冊自己等,啟動服務類,訪問localhost:8080/可以看到服務列表信息!

2,代碼端搭建註冊中心客戶端:加入eureka client 依賴,啟動類中加入@EnableClientSetver註解,配置文件加入相應的註冊信息,啟動服務,在服務端的服務列表中查看是否註冊成功!

不僅如此,註冊中心的服務端還可以使用多臺機器進行負載均衡,實現多個服務端之間的相互註冊,防止單點宕機引起服務停止!



如何使用docker容器?

1,安裝docker!

2,在springcloud項目中根目錄創建dockerfile文件,指定jdk版本,啟動腳本等!

3,編譯鏡像:docker build,注意指定路徑!

4,運行鏡像:docker run!

5,使用ip地址和端口驗證服務部署成功!

JAVA方面的更多技術分享,敬請關注。。。


分享到:


相關文章: