微服務架構學習(五) 註冊中心

2021-10-13 12:46:18 字數 3732 閱讀 4024

走過路過不要錯過,掃碼有驚喜:

在微服務架構中,註冊中心是最核心的基礎服務之一,本文將詳細介紹下註冊中心的組成部分和它們之前的關係。

註冊中心主要涉及到三大角色:

服務提供者

服務消費者

註冊中心

它們之間的關係大致如下:

各個微服務在啟動時,將自己的網路位址等資訊註冊到註冊中心,註冊中心儲存這些資料。

服務消費者從註冊中心查詢服務提供者的位址,並通過該位址呼叫服務提供者的介面。

各個微服務與註冊中心使用一定機制(例如心跳)通訊。如果註冊中心與某微服務長時間無法通訊,就會登出該例項。

微服務網路位址傳送變化(例如例項增加或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 呼叫者 需要記錄服務提供者的位址。將來位址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,乙個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為...