-
1 # 此生唯一
-
2 # 會點程式碼的大叔
服務發現
先了解一下什麼是服務發現。
傳統的介面呼叫,都是客戶端程式把服務端的地址記錄下來,然後根據介面地址進行服務呼叫。如果在不同的測試環境上,服務地址有可能是不一樣的:
測試環境: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方面的更多技術分享,敬請關注。。。