一.Spring Cloud Eureka和Zookeeper的區別?
CAP定理,指的是在一個分佈式系統中,一致性(Consistency)、可用性(Availability)、分區容錯性(Partition tolerance)。CAP 原則指的是,這三個要素最多隻能同時實現兩點,不可能三者兼顧。
CAP原則的精髓之處就是要麼AP,要麼AC,要麼CP,但是不存在CAP。
Zk注重數據的一致性
Eureka不是很注重數據的一致性
A服務的可用性(若zk集羣裏面的master掛了怎麼辦)
在zk裏面,若主機掛了,則zk集羣整體不在對外提供服務,需要選一個新的出來(120s)才能繼續對外服務
eureka注重服務的可用性,當Eureka集羣中只要有一臺活着,它就能對外提供服務
Zookeeper 注重數據的一致性,CP
Eureka 注重服務的可用性 AP
二.Spring Cloud Eureka快速入門
2.1搭建Eureka-Server
2.2選擇依賴
2.3修改配置文件
server:
port: 8080
spring:
application:
name: eureka-server
2.4添加註解
2.5啓動測試
註冊中心搭建完畢(Eureka-Server 不僅提供讓別人註冊的功能,它也能 註冊到別人裏面)
觀察源碼發現,eureka默認的配置會向8761 的註冊中心註冊自己。
三.搭建Eureka-Client
3.1 創建客戶端a
3.2選擇依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3.3修改配置文件
server:
port: 8080
spring:
application:
name: eureka-client-a
eureka:
client:
serviceUrl: # 不要使用service-url,它有小的bug
defaultZone: http://localhost:8761/eureka/ # 向那個註冊中心註冊自己
3.4啓動項目(發現有個Client-a已經在Eureka服務端註冊成功)
創建客戶端Client-b
修改配置文件端口號
server:
port: 8090
spring:
application:
name: eureka-client-b
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
四.啓動Eureka-server,Client-a,Client’-b
在eureka 裏面怎麼區分不同的服務,通過spring.application.name 來區分的
修改server.port ,啓動三個eureka-client-a
4.1註冊中心狀態認識
在源碼調試時,將會出現這些狀態
UP: 服務是上線的
DOWN:服務是下線的
UN_KONW: 服務的狀態未知
四.服務的拉取和服務的註冊
服務的拉取和註冊都是默認開啓的,我們可以選擇關閉
五.常用的配置文件的設置
1.要註冊到哪個註冊中心裏面
eureka:
client:
serviceUrl:
defaultZone:http://localhost:8761/eureka/
2.服務實例的id
eureka:
instance: 服務的名稱
instance-id: ${spring.application.name}:${server.port}
3.使用ip地址而不是主機名稱
eureka:
instance: 服務的名稱
instance-id: ${spring.application.name}:${server.port}
prefer-ip-address:true
4.單機版的註冊中心(eureka-server)服務的拉取和註冊
eureka: 該項目向那個註冊中心註冊自己
client:
register-with-eureka:false 是否把自己註冊到eureka上面
fetch-register:false 是否從erreka上面拉取服務列表