Spring Cloud学习笔记-------(二)[1] Eureka使用-高可用性

在实际使用中同常会把Eureka Server做多可用性配置,避免由于单节点出现故障而造成整个服务瘫痪,本例继续在上级的基础上做简单的配置修改,以实现高可用性Eureka Server集群的功能。

一、相关说明

1、devTools关闭

为了在idea中启动多个不同配置的应用,修改各module的pom.xm,注释pring-boot-devtools依赖。

		<!--<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>-->

2、禁用 Single instance only选项

在idea中选择Edit Configurations选项。
在这里插入图片描述
选择其中ProviderApplication、EurekaServerApplication这两个配置,分别把Single instance only前面的勾取消选择。

在这里插入图片描述

3、SpringBoot配置文件多环境支持

利用spring.profiles.active 进行配置文件的多环境支持,方便对单一应用的多次不同启动。

  • spring.profiles.active:dev 表示的是激活那个环境的配置
  • 每个环境配置项是根据 ‘—’ 这个分隔符隔进行隔离

二、Eureka Server改造

1、修改配置文件

  • 在其中分别设置两个环境eureka-server1和eureka-server2。
  • 注释其中的register-with-eureka和fetch-registry。
  • 修改defaultZone属性为两个环境的eureka-server1的地址。
spring:
  profiles:
    active: eureka-server2

---
spring:
  profiles: eureka-server1
  application:
    name: eureka-server
eureka:
  instance:
    hostname: eureka-server1  #eureka-sever实例的主机名
  client:
    #register-with-eureka: false # 不把自己注册到eureka上
    #fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
server:
  port: 8761

---
spring:
  profiles: eureka-server2
  application:
    name: eureka-server
eureka:
  instance:
    hostname: eureka-server2  #eureka-sever实例的主机名
  client:
    #register-with-eureka: false # 不把自己注册到eureka上
    #fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
server:
  port: 8762

2、启动应用

分别把配置文件的spring.profiles.active 设置为,eureka-server1和eureka-server2启动应用。
在浏览器上分别输入http://localhost:8761 和 http://localhost:8762后可以看到两个服务都已经注册成功。
在这里插入图片描述

三、生产者改造

1、修改配置文件

  • 增加provider1和provider2两个环境的配置。
  • 修改defaultZone属性
spring:
  profiles:
    active: provider1

---
spring:
  profiles: provider1
  application:
    name: provider
server:
  port: 8081
eureka:
  instance:
    prefer-ip-address: true  #使用ip地址进行注册
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

---
spring:
  profiles: provider2
  application:
    name: provider
server:
  port: 8082
eureka:
  instance:
    prefer-ip-address: true  #使用ip地址进行注册
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

2、修改service

为了方便了解消费者获取到的内容是从哪个端口提供的服务中获取的信息,我们修改下service在返回的字符串中从返回配置的端口号。

package com.roger.provider.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class TicketService {
    @Value("${server.port}")
    private String serverPort;

    public String getTiTicket(){
        return "杭州-宁波高铁票,["+serverPort+"] 提供服务!";
    }
}

3、启动服务

分别以provider1和provider2配置环境启动生产者,在eureka server控制台中能看到两个provider都已经注册成功。
在这里插入图片描述
直接在浏览器中输入地址http://localhost:8081/ticket 和http://localhost:8082/ticket,能看到服务已能正常提供,其中[8081]、[8082]与提供服务的端口号对应。
在这里插入图片描述
在这里插入图片描述

三、对服务进行消费

本例中的消费者不需要额外的修改,直接启动。在浏览器中输入http://localhost:9001/buyTicket?name=%E6%9D%8E%E4%B8%89%E5%93%81,测试正常,多个生产者采用轮询的方式进行了服务。
在这里插入图片描述
配套代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值