首先Eureka是什麼? java
Eureka是Netflix的一個子模塊,也是核心模塊之一,Eureka是一個基於REST的服務,用於定位服務,以實現雲端中層服務發現和故障轉移。服務註冊與發現對於微服務架構來講是很是重要的,有了服務發現與註冊,只須要使用服務的標識符,就能夠訪問到服務,兒不須要修改服務調用的配置文件了。功能相似於dubbo的註冊中心,好比Zookeeper。spring
Eureka主管服務的註冊與發現。apache
Netflix在設計時遵照ap原則即:高可用高容錯網絡
Eureka的註冊:架構
要將服務註冊到Eureka上app
1.在pom.xml里加入maven
<!--將微服務provider註冊進eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.applicati.yml文件
eureka:
client: #將客戶端註冊金eureka服務列表內
service-url: defaultZone: http://localhost:6001/eureka
3.在啓動類上加上@EnableEurekaClient註解ide
Eureka的自我保護:spring-boot
eureka的自我保護就是:微服務
默認狀況下,若是EurekaServer在必定時間內沒有接收到某個微服務實例的心跳,EurekaServer將會註銷實例(默認90s)。可是當網絡分區故障發生時,微服務與EurekaServer之間沒法正常通訊,以上行爲可能變得很是危險了--由於微服務自己其實時健康的,此時不該該註銷這個微服務。Eureka用過「自我保護模式」來解決這個問題--當EurekaServer節點在短期內丟失過多客戶端時(可能發生了網絡分區故障),那麼這個節點就會進入自我保護模式。一旦進入自我保護模式,EurekaServer節點會保護註冊表中的信息,再也不刪除服務註冊表中的數據。當網絡恢復時自動推出自我保護模式。
一句話歸納:某一時刻某一個微服務不可用了,eureka不會馬上清理,依舊會對該服務的信息進行保存
如果想要關閉:(不建議關閉)
eureka:
server:
enable-self-preservation: false #禁用自我保護機制
故障演示:
細節修改:
修改前:(注意藍色字體部分)
修改後:
1.主機名稱:服務名稱修改
當前問題
localhost:microservice-product:8001
在要入住eureka的服務的yml配置文件中的eureka下加上
instance:
instanceID: ${spring.application.name}:${server.port} # 指定實例ID 不顯示主機名
修改以後名稱變爲
microservice-product:8001(本身想要的名稱)
2. 訪問信息有ip信息提示
當前問題:沒有ip提示
在要入住eureka的服務的yml配置文件中的下加上
prefer-ip-address: true
3.微服務info內容詳細信息
當前問題:超連接點擊服務報告ErrorPage
1.修改要入住eureka的服務的pom.xml文件:
添加:
<!--actuator監控信息完善-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.總的父工程修改pom.xml添加構建build信息
<build>
<finalName>microservice-cloud-01</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>$</delimiter>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
3.修改要入住eureka的服務的.yml文件:
info:
app.name: yqk-microservice-cloud-01
company.name: www.kgc.com
build.artifactId: $project.artifactId$
build.version: $project.version$
Eureka的集羣配置:
配置前:
配置後:
1.新建工程6002 2.按照6001爲模板修改pom配置文件 3.修改主啓動類 4.修改映射配置 修改C:\Windows\System32\drivers\etc 下host文件 127.0.0.1 eureka6001.com (即把localhost改成eureka6001.com) 127.0.0.1 eureka6002.com 5.修改yml文件 server: port: 6002 eureka: #server: #enable-self-preservation: false #禁用自我保護機制 instance: hostname: eureka6002.com #eureka服務端的實例名稱 client: register-with-eureka: false #false不向註冊中心註冊本身 fetch-registry: false #false表示本身就是註冊中心,個人職責是維護服務實例,並不去檢索服務 service-url: #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與eureka server交互的地址查詢服務和註冊服務都依賴這個地址 defaultZone: http://eureka6001.com:6001/eureka 4.修改要入住eureka的服務的yml配置文件 eureka: client: #將客戶端註冊金eureka服務列表內 service-url: defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/