無服務註冊中心
Eureka的作用
服務註冊流程
Eureka核心知識
服務端如何保存這些信息
消費者服務發現
高可用集羣
### 心跳和服務剔除機制是什麼
註冊中心配置過程
- 導入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
-----
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 在springboot啓動類上添加
@EnableEurekaServer
註解 - 在application.properties添加Eureka的相關配置
spring.application.name=eureka-peer
server.port=10000
eureka.instance.hostname=dev
eureka.instance.instance-id=dev
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/
//Zone是Eureka提出區域的概念,服務器是分區域部署
//eureka.client.availability-zones.beijing:zone-1 使用方法:將北京設爲zone-1
//eureka.client.service-url.zone1=http://localhost:10001/eureka 如果在北京的區域會訪問該url
eureka.server.wait-time-in-ms-when-sync-empty=0 //服務等待時間
eureka.server.enable-self-preservation=true //自我保護機制開啓後,服務下線,也不會將其剔除
eureka.server.peer-eureka-nodes-update-interval-ms=1000000 //eureka結點更新頻率
----client端
spring.application.name=helloserver
server.port=10000
eureka.client.service-url-defaultZone://localhost:10000/eureka/
application.yml
使用—分割可以在一份文件中設置多個配置,最後選擇其中一個進行運行。
如果使用註冊中心通過服務名來訪問需要在調用的方法上面加@LoadBalanced
註解
服務註冊流程
在我們client初始化時會初始一大堆定時任務,這些定時任務中肯定包含了一個心跳的定時任務,如果說我們心跳的定時任務啓動後,就會向服務中心發起一次請求,判斷一下我當前的服務實例有沒有被註冊在Eureka上面,若沒有註冊會返回一個404,就進入一個註冊的狀態,若不是404只會返回當前服務實例是否正常的狀態。
服務端如何保存這些信息
服務端有一個json的攔截器,對客戶端發送過來我們相應的請求進行攔截處理。
服務端就是通過一個json框架發送了一個http請求將自己的服務實例存放到concurrentHashMap.