微服務中的註冊中心 Eureka

2021-09-19 10:41:48 字數 4152 閱讀 7843

1、角色:

(1)eureka server:服務註冊中心(可以是乙個集群),對外暴露自己的位址給每個微服務使用

(2)服務提供者:啟動後向 eurekaserver註冊自己資訊(位址、服務名)

(3)服務消費者:向 eurekaserver訂閱服務,eureka會將對應服務的所有提供者位址列表傳送給消費者,並且定期更新

(4)心跳(續約):每個微服務定期通過 http方式向 eurekaserver重新整理自己的狀態

2、原理

(1)心跳機制:client和 server預設是 30s的週期心跳機制,server預設 90s沒收到則會進行移除

(2)自我保護:如果 15分鐘內超過 85%的節點失效則進入保護機制(ap模式),可通過修改 配置進行關閉:

# 服務端關閉自我保護

eureka.server.enable-self-preservation = false

#修改心跳週期

eureka.instance.lease-renewal-interval-in-seconds = 30

#修改剔除時間

eureka.instance.lease-expiration-duration-in-seconds = 90

1、服務端配置

port: 8761 # 埠

eureka:

instance:

hostname: localhost

client:

register-with-eureka: false # 是否註冊自己的資訊到eurekaserver,預設是true

fetch-registry: false # 是否拉取其它服務的資訊,預設是true

service-url: # eurekaserver的位址,現在是自己的位址,如果是集群,需要加上其它server的位址。

2、客戶端配置

name: eureka-test # 應用名稱,會在eureka中顯示

eureka:

client:

service-url: # eurekaserver位址

instance-id: lin-pc #主機名

prefer-ip-address: true # 主機名顯示ip,當呼叫gethostname獲取例項的hostname時,返回ip而不是host名稱

ip-address: 127.0.0.1 # 指定自己的ip資訊,不指定的話會自己尋找

# @loadbalanced 記得加,否則呼叫不到

@loadbalanced

@bean

public resttemplate resttemplate()

public object restful()

3、集群配置

# eureka1,eureka2 需要在 host檔案配置ip對映

# 服務端 eureka1配置

eureka:

instance:

# 集群下,在 host檔案中配置對映

hostname: eureka1

client:

register-with-eureka: false

fetch-registry: false

service-url:

# 集群下配置

# 服務端 eureka2配置

eureka:

instance:

# 集群下,在 host檔案中配置對映

hostname: eureka2

client:

register-with-eureka: false

fetch-registry: false

service-url:

# 集群下配置

# 客戶端配置,只修改 defaultzone即可:

4、集群配置(三颱)

# eureka1,eureka2,eureka3 需要在 host檔案配置ip對映

# 服務端 eureka配置

eureka:

instance:

# 集群下,在 host檔案中配置對映(***x 在三個服務分別是:eureka1、eureka2、eureka3)

hostname: ***x

client:

register-with-eureka: false

fetch-registry: false

service-url:

# 集群下配置

# 客戶端配置,只修改 defaultzone即可:

eureka:

client:

service-url:

5、增加監控

#引入 actuator

org.springframework.boot

spring-boot-starter-actuator

6、檢視服務資訊

# eureka 客戶端啟動類增加註解

@enablediscoveryclient

# eureka 客戶端注入介面,通過該介面即可檢視服務資訊

@autowired

private discoveryclient discoveryclient;

discoveryclient.getservices()

discoveryclient.getinstances("***")

微服務 Eureka註冊中心

我們來解決微服務的第一問題,服務的管理。服務中心對外提供服務,需要對外暴露自己的位址。而consumer 呼叫者 需要記錄服務提供者的位址。將來位址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,乙個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為...

Eureka服務註冊中心

1.適用場景有侷限 如果服務提供者的網路位址 ip和埠 發生變化,將會影響服務消費者。2.無法動態伸縮 每個微服務一般都會部署多個例項,從而實現實現容災和負載均衡,微服務系統需要具備自動伸縮的能力。如何解決上述方案 1 需要乙個強大的服務發現機制,服務消費者使用這種機制獲取服務提供者的網路資訊,及時...

eureka 服務註冊中心

作為服務註冊中心,eureka比zookeeper區別 著名的cap理論指出,乙個分布式系統不可能同時滿足c 一致性 a 可用性 和p 分割槽容錯性 由於分割槽容錯性在是分布式系統中必須要保證的,因此我們只能在a和c之間進行權衡。在此zookeeper保證的是cp,而eureka則是ap 1.zoo...