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方面的更多技術分享,敬請關注。。。