eureka 服务注册(客户端 服务端)简单部署
# eureka 服务注册 demo
![image.png](https://cos.easydoc.net/31477061/files/kmn13f7p.png)
## 1.导入pom
```
<!-- spring-cloud-starter-netflix-eureka-server 服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>3.0.2</version>
</dependency>
<!-- spring-cloud-starter-netflix-eureka-client 客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.0.2</version>
</dependency>
```
## 2.添加注解启动配置
![image.png](https://cos.easydoc.net/31477061/files/kmlm5fnj.png)
![image.png](https://cos.easydoc.net/31477061/files/kmloo465.png)
## 3.添加yml配置
### 服务端
``` yml
spring:
application:
name: eureka-peer
#访问端口号↓
server:
port: 8080
eureka:
instance:
hostname: dev
instance-id: dev
#定义客户端的参数
client:
#fetch-registry 是否拉取信息↓ 服务端不需要拉取 ---- register-with-eureka 是否注册到服务中心,服务端不需要↓
fetch-registry: false
register-with-eureka: false
# 默认访问地址
service-url:
#可以再后面添加多个地址,服务端添加,多个服务端会进行对等协议(数据的交换,高可用,如一个地址连接上了客户端,会发送给其他注册中心地址进行注册。)。
defaultZone: http://localhost:8080/eureka/
#定义服务端的参数
server:
# 服务之间同步数据 为空时的等待时间
wait-time-in-ms-when-sync-empty: 0
# 自我保护机制
enable-self-preservation: true
#节点更新时间间隔ms
peer-eureka-nodes-update-interval-ms: 100000
```
---
### 客户端
```
server:
port: 8002
spring:
application:
name: helloserver
eureka:
client:
service-url:
#可以再后面添加多个地址,客户端添加,会依次进行注册,直到成功(注册第一个服务,成功则完成。失败注册第二个。只注册成功一次就不再访问其他地址。)
defaultZone: http://127.0.0.1:8080/eureka/
//再main方法下面添加
@Autowired
private RestTemplate restTemplate;
@GetMapping("index")
public String ww(){
return restTemplate.getForObject("http://HELLOSERVER/", String.class, "");
}
@GetMapping("")
public String www(){
return "2号客户端";
}
@Bean
@LoadBalanced //必须加上去才可以, ribbon的内部方法 帮我们调用服务中心
public RestTemplate template() {
return new RestTemplate();
}
```
### 打开页面 多次访问客户端的 http://localhost:8002/index 需要2个客户端
![image.png](https://cos.easydoc.net/31477061/files/kmloehb1.png)
---
## 修改轮询策略 在调用接口的客户端修改
```
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
```
![image.png](https://cos.easydoc.net/31477061/files/kmn751ng.png)
![image.png](https://cos.easydoc.net/31477061/files/kmn7rwki.png)
## 用于不停机更新项目,重试机制(注册中心上的多个实例,如果访问不通过,则按照轮询策略,继续调用下一个实例)只需要导入pom即可
```
<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.3.1</version>
</dependency>
```
## 其他代码参考 服务端启动多个 及多个yml
```
spring:
profiles:
active: dev2
---
spring:
application:
name: eureka-peer
profiles: dev
server:
port: 8080
eureka:
instance:
hostname: dev
instance-id: dev
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/
server:
wait-time-in-ms-when-sync-empty: 0
enable-self-preservation: true
peer-eureka-nodes-update-interval-ms: 10000
---
spring:
profiles: dev1
application:
name: eureka-peer2
server:
port: 8081
eureka:
instance:
hostname: dev1
instance-id: dev1
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/
server:
wait-time-in-ms-when-sync-empty: 0
enable-self-preservation: true
peer-eureka-nodes-update-interval-ms: 10000
---
spring:
profiles: dev2
application:
name: eureka-peer3
server:
port: 8082
eureka:
instance:
hostname: dev2
instance-id: dev2
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/
server:
wait-time-in-ms-when-sync-empty: 0
enable-self-preservation: true
peer-eureka-nodes-update-interval-ms: 10000
---
```