Eureka搭建 一、Eureka基本框架搭建 ...
Eureka搭建
一、Eureka基本框架搭建
- pom.xml文件配置:主要是引入Eureka所依賴的jar包
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>cn.ds</groupId> 7 <artifactId>eureka-server-001</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>eureka-server-001</name> 12 <description>Eureka服務-001</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>2.0.3.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.8</java.version> 25 <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> 26 </properties> 27 28 <dependencies> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-web</artifactId> 32 </dependency> 33 <!-- 引入Eureka服務 --> 34 <dependency> 35 <groupId>org.springframework.cloud</groupId> 36 <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 37 </dependency> 38 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-devtools</artifactId> 42 <scope>runtime</scope> 43 </dependency> 44 <dependency> 45 <groupId>org.springframework.boot</groupId> 46 <artifactId>spring-boot-starter-test</artifactId> 47 <scope>test</scope> 48 </dependency> 49 </dependencies> 50 51 <dependencyManagement> 52 <dependencies> 53 <dependency> 54 <groupId>org.springframework.cloud</groupId> 55 <artifactId>spring-cloud-dependencies</artifactId> 56 <version>${spring-cloud.version}</version> 57 <type>pom</type> 58 <scope>import</scope> 59 </dependency> 60 </dependencies> 61 </dependencyManagement> 62 63 <build> 64 <plugins> 65 <plugin> 66 <groupId>org.springframework.boot</groupId> 67 <artifactId>spring-boot-maven-plugin</artifactId> 68 </plugin> 69 </plugins> 70 </build> 71 72 73 </project>
- application.properties文件配置
1 # Eureka註冊中心配置 2 # server-port:項目埠號 3 # spring-application-name:項目註冊到Eureka顯示的調用名稱,類似於功能變數名稱 4 # eureka.client.register-with-erueka:是否將自己註冊到Eureka,預設為true 5 # eureka.client.fetch-registry:是否向Eureka獲取註冊信息,預設為true 6 # spring.jmx.default-domain:區分spring-boot項目 7 server.port = 8080 8 spring.application.name = eureka-server-001 9 eureka.client.register-with-eureka = false 10 eureka.client.fetch-registry = false 11 eureka.client.serviceurl.defaultZone = http://localhost:8080/eureka/ 12 spring.jmx.default-domain = erueka-server-001
- springBoot啟動類配置:使用@EnableEurekaServer註解表明啟動Eureka服務,使用@EnableDiscoveryClient這個註解也表明啟動Eureka服務(建議使用這個註解),@EnableDiscoveryClient是基於spring-cloud-commons支持Eureka服務,zookeeper服務等,@EnableEurekaServer是基於spring-cloud-netflix支持Eureka服務
1 package cn.yuzhenzi; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 7 /** 8 * @authod 玉眞子 9 * @name sprigBoot啟動類配置 10 */ 11 @SpringBootApplication 12 @EnableEurekaServer //啟動註冊中心 13 public class Application { 14 15 public static void main(String[] args) { 16 SpringApplication.run(Application.class, args); 17 } 18 }
- 測試
- 訪問地址:http://[IP]:[埠號]:由於當前Eureka註冊中心沒有註冊任何服務,所以當前在Instances cruuently registered with Eureka中看不到任何信息,在隨後會註冊服務到Eureka中
- 測試結果:如圖所示則配置成功
- Eureka註冊中心的簡介:Eureka是基於Spring Cloud Netifix微服務套件中的一部分,它基於Netifix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能。Eureka主要做了兩件事:一、服務註冊:每個服務單元都會將自己的埠號,IP地址等信息告訴Eureka,Eureka按照服務名稱將進行分類組織服務清單。二、服務發現:在微服務中,服務於服務之間不再是直接調用的關係了,而是通過向服務名發起請求調用實現,A服務想要請求B服務,按照原來的請求方式,B直接給A自己的api就可以直接調用,但是在微服務中,這樣也可以請求的到,但是,但是,但是有個問題,我如果要做負載均衡呢?我不可能去使用固定的api介面地址吧,這就要用到Eureka的服務發現的功能了,具體怎麼做後續的會說到,這裡先說下原理,現在先把上面的A與B的模式改一下,我現在有創建了個和B相同的業務服務C,B和C用同一個服務名註冊到Eureka註冊中心中,當A發出請求時,首先經過的是Eureka註冊中心,Eureka那個A發出請求的服務名,Eureka內部開始找這個服務名,找到之後,會將這個服務名下的業務服務列表返回個A服務,這樣A就會拿到B或者C的真實api介面地址進行發送請求了。實際上框架為了考慮性能的原因,不會每次都向Eureka註冊中心獲取服務,並且不同的場景在緩存和服務剔除等機制上也會有一些不同的實現策略。
- 訪問地址:http://[IP]:[埠號]:由於當前Eureka註冊中心沒有註冊任何服務,所以當前在Instances cruuently registered with Eureka中看不到任何信息,在隨後會註冊服務到Eureka中