javascript
SpringCloud-Eureka
原文:https://xsxy007.github.io/2019/10/SpringCloud-Eureka/
Eureka 是Netflix開源的一款提供服務注冊和發(fā)現(xiàn)的產(chǎn)品,提供了完整的Service Registery和Service Discovery實現(xiàn),也是SpringCloud體系中最核心的組件之一
Eureka
由上邊的圖可以看出,Eureka由客戶端和服務端組成,服務用用于服務的注冊服務器,客戶端用作服務的提供者和發(fā)現(xiàn)者
案例
git@github.com:xsxy007/springcloud-demo.git
Eureka Server
springboot 已經(jīng)很好的支持了Eureka,只需要在pom中加入Eureka依賴,并在Application啟動類中加上相關注解即可
1、pom依賴添加
本次使用的springboot版本為2.1.9;springcloud版本為Greenwich.RELEASE
以下列出了所有的依賴(ps:一開始因為springcloud和springboot的版本依賴問題,導致項目一直啟動報錯)
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>2、在啟動類上加注解@EnableEurekaServer注解
@SpringBootApplication @EnableEurekaServer public class SpringcloudDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudDemoApplication.class, args);} }3、配置文件
在默認配置下,該注冊中心會將自己作為客戶端嘗試注冊自己,因此在單機的注冊中心時,需要將此機制關閉掉
server:port: 8761 # 使用的是默認的端口 spring:application:name: eureka-server eureka:client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://localhost:${server.port}/eureka/eureka.client.register-with-eureka:表示是否將自己注冊的eureka server,默認為true
eureka.client.fetch-registry:表示是否從eureka server上拉取注冊信息,默認為true
eureka.client.service-url.defaultZone:表示注冊中心的地址(默認為localhost:8761/eureka/)
4、啟動項目
啟動項目后訪問localhost:8761 即可顯示如下頁面,此時 Instances current Registers里邊并沒有內容
?
集群配置
簡單的集群,只要將各個注冊中心相互配置即可
eureka.client.serviceUrl.defaultZone=http://域名:/${server.port}/eureka/,http://域名:/${server.port}/eureka/ 請其他注冊中心的地址配置的defaultZone中
源碼分析
從啟動類注解開始 @EnableEurekaServer
- 可以注意注釋中的EurekaServerAutoConfiguration,該類就是EurekaServer的自動配置類
- 再看上邊注解類上有一個 @Import(EurekaServerMarkerConfiguration.class),進入該類查看
- 查看 EurekaServerAutoConfiguration(該類是在通過Springboot的@EnableAutoconfiguration 來加載spring.factories中的類的)
- 注意 EurekaServerInitializerConfiguration 類,該類實現(xiàn)了lifecycle接口,所以會被spring容器毀掉start方法
參考: https://blog.csdn.net/cuixhao110/article/details/88353714
總結
以上是生活随笔為你收集整理的SpringCloud-Eureka的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中延迟任务的处理方式
- 下一篇: SpringBoot-SpringClo