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中