走過路過不要錯過,掃碼有驚喜:
在微服務架構中,註冊中心是最核心的基礎服務之一,本文將詳細介紹下註冊中心的組成部分和它們之前的關係。註冊中心主要涉及到三大角色:
服務提供者
服務消費者
註冊中心
它們之間的關係大致如下:
各個微服務在啟動時,將自己的網路位址等資訊註冊到註冊中心,註冊中心儲存這些資料。
服務消費者從註冊中心查詢服務提供者的位址,並通過該位址呼叫服務提供者的介面。
各個微服務與註冊中心使用一定機制(例如心跳)通訊。如果註冊中心與某微服務長時間無法通訊,就會登出該例項。
微服務網路位址傳送變化(例如例項增加或ip變動等)時,會重新註冊到註冊中心。這樣,服務消費者就無需人工修改提供者的網路位址了。
註冊中心的架構圖如下:
註冊中心應具備以下功能:
服務登錄檔
服務登錄檔是註冊中心的核心,它用來記錄各個微服務的資訊,例如微服務的名稱、ip、埠等。服務登錄檔提供查詢api和管理api,查詢api用於查詢可用的微服務例項,管理api用於服務的註冊與登出。
服務註冊與發現
服務註冊是指微服務在啟動時,將自己的資訊註冊到註冊中心的過程。服務發現是指查詢可用的微服務列表及網路位址的機制。
服務檢查
註冊中心使用一定的機制定時檢測已註冊的服務,如發現某例項長時間無法訪問,就會從服務登錄檔移除該例項。
spring cloud提供了多種註冊中心的支援,例如eureka、consul和zookeeper等;本文將介紹下利用eureka搭建中心並註冊服務到註冊中心的過程。eureka是netflix開發的服務發現框架,springcloud將它整合在其子專案spring-cloud-netflix中,以實現springcloud的服務發現功能。
eureka包含兩個元件:eureka server和eureka client
首先新建乙個springboot專案,命名spring-cloud-eureka,然後按照下面步驟編寫**即可。
pom.xml**
新增eureka-server的依賴,**如下:
org.springframework.boot
spring-boot-starter
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
finchley.release
pomimport
2、啟動類**
啟動類新增註解@enableeurekaserver即可,**如下:
@enableeurekaserver
public static void main(string args)
}
3、配置檔案
server:
port: 9001 #服務埠
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false #是否將eureka自身作為應用註冊到eureka註冊中心
fetch-registry: false #為true時,可以啟動,但報異常:cannot execute request on any known server
配置項說明:
1. server.port=9001表示設定該服務註冊中心的埠號
2. eureka.instance.hostname=localhost表示設定該服務註冊中心的hostname
3. eureka.client.register-with-eureka=false,由於我們目前建立的應用是乙個服務註冊中心,而不是普通的應用。預設情況下,這個應用會向註冊中心(也是它自己)註冊它自己,設定為false表示禁止這種預設行為
4. eureka.client.fetch-registry=false,表示不去檢索其他的服務,因為服務註冊中心本身的職責就是維護服務例項,它也不需要去檢索其他服務
4、執行截圖
開啟瀏覽器訪問http://localhost:9001/,可以看到註冊中心以及啟動,執行截圖如下:
服務註冊中心有了之後,我們可以向這個服務註冊中心註冊乙個服務提供者,新建乙個springboot專案,命名spring-cloud-user-service,提供使用者服務,然後按照下面步驟編寫**即可。
pom.xml**
新增eureka-client的依賴,**如下:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-dependencies
finchley.release
pomimport
2、啟動類**
啟動類新增註解@enableeurekaclient即可,**如下:
@enableeurekaclient
public static void main(string args)
}
3、配置檔案
server:
port: 8081 #服務埠
4、執行使用者中心user-service,然後開啟註冊中心
開啟瀏覽器訪問http://localhost:9001/,與上圖相比可以看到註冊中心中已經註冊好了使用者服務,截圖如下:
微服務架構學習(五):eureka 總結及注意事項
微服務架構學習(五):註冊中心集群
微服務 註冊中心的作用 微服務之註冊中心
一 概念 註冊中心這一概念在面向服務設計的架構中起著舉足輕重的作用,不論是在soa架構還是微服務架構之中,註冊中心的作用一句話概括就是存放和排程服務,實現服務和註冊中心,服務和服務之間的相互通訊。註冊中心可以說是微服務架構中的 通訊錄 它記錄了服務和服務位址的對映關係。在分布式架構中,服務會註冊到這...
微服務架構 3 註冊中心與服務發現
目錄2.eureka 3.nacos 4.zookeeper 5.consul 最後參考資料 spring microservices in action spring cloud alibaba 微服務原理與實戰 b站 尚矽谷 springcloud 框架開發教程 周陽 註冊中心用來集中管理微服務...
微服務 Eureka註冊中心
我們來解決微服務的第一問題,服務的管理。服務中心對外提供服務,需要對外暴露自己的位址。而consumer 呼叫者 需要記錄服務提供者的位址。將來位址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,乙個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為...