SpringCloud 微服务 (服务治理 Spring Cloud Eureka)
服务治理只要负责微服务架构中最为核心的基础的模块,它主要用来实现各个微服务实例的自动注册与发现。
搭建服务注册中心
1.首先创建一个基础的Spring boot 工程,命名为eureka-server,并在pom.xml中引入必要依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<!-- 引入spring boot依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--增加eureka-server的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<!-- 引入spring cloud 依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.@EnableEurekaServer注解启动一个微服务注册中心
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
3.在默认配置下,服务注册中心也会将自己作为客户端来注册它自己,所以我们需要禁用它的客户端注册行为
server.port=1111 #是否将自己注册到eureka server eureka.client.registerWithEureka=false #是否从eureka server获取注册信息 eureka.client.fetchRegistry=false #设置与enreka server交互地址,查询服务和注册服务 多个地址,分割 eureka.client.serviceUrl.defaultZone=http://192.168.30.1:8761/eureka
服务提供者
1.首先创建一个基础的Spring boot 工程,命名为eureka-provider,并在pom.xml中引入必要依赖
<!-- 引入spring boot依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<!-- 引入spring cloud 依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
2.创建Controller
@GetMapping("/{id}")
public User findByid(@PathVariable Long id){
User user = userRepository.findOne(id);
return user;
}
3.@EnableDiscoveryClient 激活@EnableDiscoveryClient实现
@EnableDiscoveryClient
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
4.注定配置服务名,指定服务中心地址
server.port=9999 server.ssl.enabled=false spring.application.name=microservice-provider-user
#这可以配置多个, 逗号分割 eureka.client.serviceUrl.defaultZone=http://192.168.137.100:1111/eureka/
高可用eureka
修改我们之前创建的eureka工程 ,新建两个配置application-peer1.properties,application-peer1.properties
server.port=1111 spring.application.name=eureka-server eureka.instance.hostname=peer1 eureka.client.serviceUrl.defaultZone=http://192.168.137.101:1112/eureka eureka.server.enable-self-preservation=false
server.port=1112 spring.application.name=eureka-server eureka.instance.hostname=peer2 eureka.client.serviceUrl.defaultZone=http://192.168.137.100:1111/eureka eureka.server.enable-self-preservation=false
启动时指定配置文件启动
nohup java -jar discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 &
nohup java -jar discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2 &
这样两个eureka就能互相注册,形成一个双节点集群
eureka自我保护模式
当eureka Server 在一段时间内没有接受到某个微服务实例的心跳,Eureka Server 将会注销掉该实例(默认90秒)
当网络分区发生故障时,丢失过多客户端,那么这个节点就会进入自我保护模式,一旦进入保护模式,Eureka Server 就会保护服务注册中心的信息,不在注销
使用eureka.server.enable-self-preservation=false 禁用自我保护模式

浙公网安备 33010602011771号