javascript
eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心
Sping boot
Eureka是服務中心,管理各種服務功能包括服務的注冊、發現、熔斷、負載、降級等。Spring Cloud Eureka 是對Netflix公司的Eureka的二次封裝。
????在dubbo的使用中我們通常使用zookeeper作為注冊中心。在這里spring cloud使用Eureka, 用一個標準的spring boot項目就可以快捷的搭建服務注冊中心。
Eureka是一個C/S服務,我們需要區分兩個,eureka Server和eureka Client
eureka Server是服務注冊中心(服務端)。而系統中的其他微服務作為client連接到 Eureka Server,并維持心跳連接。
一、pom
服務端pom
<dependency> <groupId>org.springframework.cloudgroupId> artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>dependency>客戶端pom
???<dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId> <version>2.2.3.RELEASEversion>dependency>使用Eureka同時需要spring-web的依賴。
二、服務端
yml配置
spring: application: name: spring-cloud-eureka-serverserver: port: 7001eureka: client: #eureka默認情況下,把自己當做客戶端來注冊自己,所以我們要禁用它 這里是服務端 fetch-registry: false #表示是否從Eureka Server上獲取注冊信息,默認為true register-with-eureka: false #表示是否從Eureka Server上獲取注冊信息,默認為true serviceUrl: # 設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。默認是http://localhost:8761/eureka ;多個地址可使用 , 分隔 defaultZone: http://localhost:${server.port}/eureka/@EnableEurekaServer
@EnableEurekaServer@SpringBootApplicationpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); }}運行
此時還沒有客戶端服務注冊進來。
三、客戶端
yml配置
spring: application: name: spring-cloud-providerserver: port: 8010eureka: client: service-url: defaultZone: http://localhost:7001/eureka/@EnableEurekaClient
@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClientpublic class EurekaProviderApplication { public static void main(String[] args) { SpringApplication.run(EurekaProviderApplication.class, args); }}也可以使用@EnableDiscoveryClient
@EnableEurekaClient 只支持Eureka注冊中心,@EnableDiscoveryClient 支持Eureka、Zookeeper、Consul 這三個注冊中心。
四、Eureka集群
理論上來講,因為服務消費者本地緩存了服務提供者的地址,即使Eureka Server宕機,也不會影響服務之間的調用,但是一旦新服務上線,已經在緩存在本地的服務提供者不可用了,服務消費者也無法知道,所以保證Eureka Server的高可用還是很有必要的。
實際上Eureka集群就是互相注冊。我搭建了兩臺:
不同節點的Eureka Server通過Replicate(復制)進行數據同步 參數eureka.client.serviceUrl.defaultZone,分別配置對方的地址作為Eureka Client進行相互注冊。
.
Eureka 集群單例多啟動
本地修改host:
127.0.0.1 Eureka7001.com 127.0.0.1 Eureka7002.com 127.0.0.1 Eureka7003.com
yml配置:
spring: application: name: spring-cloud-eureka-serverserver: port: 7002eureka: instance: hostname: Eureka7001.com client: #eureka默認情況下,把自己當做客戶端來注冊自己,所以我們要禁用它 這里是服務端 fetch-registry: false register-with-eureka: false #不去檢索eureka服務 serviceUrl: # 設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。默認是http://localhost:8761/eureka ; #多個地址可使用 , 分隔 #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #集群:7001 注冊到 7002 #defaultZone: http://Eureka7002.com:7002/eureka/ #集群:7002 注冊到 7001 defaultZone: http://Eureka7001.com:7001/eureka/把同一個Eureka 改配置啟動兩次,即可實現。
注意服務注冊時,兩臺Eureka 都要寫
五、Eureka自我保護
默認情況下,當eureka server在一定時間內沒有收到實例的心跳,便會把該實例從注冊表中刪除(默認是90秒),但是,如果短時間內丟失大量的實例心跳,便會觸發eureka server的自我保護機制。
Eureka在運行期間會統計心跳失敗的比例,在15分鐘內是否低于85%,如果出現了低于的情況,Eureka Server會將當前的實例注冊信息保護起來,同時提示一個警告,一旦進入保護模式,Eureka Server將會嘗試保護其服務注冊表中的信息,不再刪除服務注冊表中的數據。也就是不會注銷任何微服務。
該保護機制的目的是避免網絡連接故障,在發生網絡故障時,微服務和注冊中心之間無法正常通信,但服務本身是健康的,不應該注銷該服務。
禁止自我保護
eureka: instance: hostname: localhost server: enable-self-preservation: false #關閉自我保護機制修改心跳時間
eureka: server: #開啟自我保護模式 enable-self-preservation: false #清理無效節點,默認60*1000毫秒,即60秒 eviction-interval-timer-in-ms: 5000總結
以上是生活随笔為你收集整理的eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的简单程序代码_小白学编程?
- 下一篇: java中怎么把生成文件到项目根目录_[