sporingboot:2.0.5
springcloud:Finchley.RELEASEjava
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.definesys</groupId> <artifactId>my_cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <name>my_cloud</name> <packaging>pom</packaging> <description>Demo project for Spring Boot</description> <modules> <module>eurekaServer</module> <module>sayHello</module> </modules> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</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> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> </project>
建立两个model工程,建立model一个做为eureka server,一个是client也就是具体的服务。node
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.definesys</groupId> <artifactId>my_cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.definesys</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
配置文件:web
server.port=1111 eureka.instance.hostname=localhost #这两个是代表本身是eureka Server #是否向服务注册中心注册本身 eureka.client.register-with-eureka=false #是否检索服务 eureka.client.fetch-registry=false #关闭自我保护机制(生产环境建议开启) #eureka.server.enable-self-preservation=true #服务注册中心的配置内容,指定服务注册中心的位置 eureka.client.service-url.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring.application.name: eurka-server
在启动类上添加@EnableEurekaServerspring
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
启动eureka server,在浏览器地址栏输入http://localhost:1111,能够看到erueka注册中心页面apache
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.definesys</groupId> <artifactId>my_cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.definesys</groupId> <artifactId>say-hello</artifactId> <version>0.0.1-SNAPSHOT</version> <name>say-hello</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
配置文件:浏览器
server.port=2222 #服务名称,服务与服务之间相互调用通常都是根据这个name spring.application.name=say-hello #注册中心地址 eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
建立一个Controller缓存
@RestController public class SayHelloController { @Value("${server.port}") private String serverPort; @GetMapping("/sayHello") public String sayHelloCtr(@RequestParam("helloName")String helloName){ return "Hello "+helloName+",个人端口是: "+serverPort; } }
在启动类上添加@EnableEurekaClient代表本身是一个eureka client安全
@SpringBootApplication @EnableEurekaClient public class SayHelloApplication { public static void main(String[] args) { SpringApplication.run(SayHelloApplication.class, args); } }
启动服务访问http://localhost:1111,会发现服务已经注册到注册中心中去了。服务器
(1)enable-self-preservation: true # 自我保护模式,当出现出现网络分区、eureka在短期内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true (2)eviction-interval-timer-in-ms: 60000 #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒 (3)renewal-percent-threshold: 0.85 #阈值因子,默认是0.85,若是阈值比最小值大,则自我保护模式开启 (4)peer-eureka-nodes-update-interval-ms: 600000 # 集群里eureka节点的变化信息更新的时间间隔,单位为毫秒,默认为10 * 60 * 1000
(1)register-with-eureka: false #是否注册到eureka (2)registry-fetch-interval-seconds: 30 # 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 (3)fetch-registry: false # 实例是否在eureka服务器上注册本身的信息以供其余服务发现,默认为true 若是是作高可用的发现服务那就要改为true (4)instance-info-replication-interval-seconds: 30 # 复制实例变化信息到eureka服务器所须要的时间间隔(s),默认为30秒 (5)initial-instance-info-replication-interval-seconds: 40 # 最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 (6)eureka-service-url-poll-interval-seconds: 300 #询问Eureka服务url信息变化的时间间隔(s),默认为300秒 (7)eureka-server-connect-timeout-seconds: 5 # eureka须要超时链接以前须要等待的时间,默认为5秒 (8)eureka-server-total-connections: 200 #eureka客户端容许全部eureka服务器链接的总数目,默认是200 (9)heartbeat-executor-thread-pool-size: 2 #心跳执行程序线程池的大小,默认为2 (10)cache-refresh-executor-thread-pool-size: 2 # 执行程序缓存刷新线程池的大小,默认为2