Spring Boot + Eureka 实现负载均衡

简单的Eureka负载均衡可以分为三部分

第一部分创建一个Eureka Server 端

第二部分创建俩个Eureka Client 端 生产者(两个作用是负载均衡到两个Client上)

第三部分创建一个消费者(多次请求同一个请求)

 

第一步创建一个Eureka Server端

1.1:application.yml配置文件

server:
  port: 8081 #端口号

eureka:
  server:
    eviction-interval-timer-in-ms: 30000  #清理无效信息时间 30秒 * 1000毫秒

  instance:
    hostname: localhost #服务注册中心IP地址
    appname: Eureka_Server  #Eureka  application 显示名称

  client:
    registerWithEureka: true #是否向服务注册中心注册自己 server端可以不用注册自己
    fetchRegistry: false #是否检索服务
    serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

1.2:@EnableEurekaServer注解,作用是将当前项目设置为一个Eureka Server端


@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

1.3:验证是否Server端创建成功,localhost:post 。

这里为了查看方便,我将server本身也注册了进去。

 

第二步:创建一个Eureka Client 端 (生产者1号)

1.1:application.yml

server:
  port: 8082 #端口号

eureka:
  instance:
    prefer-ip-address: true #客户端在注册时使用自己的IP而不是主机名

  client:
    service-url:
      defaultZone: http://localhost:8081/eureka/ #注册中心地址

spring:
  application:
    name: eureka-client #服务名称--调用的时候根据名称来调用该服务的方法

spring.application.name 作用是后期请求的时候根据这个‘服务器名称’来进行请求

1.2:随便写一个Controller 来接受请求,注意@EnableEurekaClient 含义就是字面意思 设置成Eureka Client 端

********@RestController 注解不是SpringBoot的注解 是Spirngd 注解 ************************** 就是将@Controller和@ResponseBody和在一起的作用

@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }

    @GetMapping("/index")
    public Map<String,String> index(){
        Map<String, String> map = new HashMap<>();
        map.put("Id","client_One_8082");
        map.put("name","Eureka Client 端口号:8082");
        return map;
    }



}

1.3:查看注册中心 和 Controller

 

第三步:创建一个消费者

1.1:application.yml

eureka:
  client:
    serviceUrl: #注册中心的注册地址
      defaultZone: http://127.0.0.1:8081/eureka/

server:
  port: 8888  #服务端口号

spring:
  application:
    name: service-consumer #服务名称--调用的时候根据名称来调用该服务的方法

restUrl: http://eureka-client/index #请求url

1.2:RestTemplate 和Controller

1.2.1:创建一个RestTemplate 的Bean @LoadBalanced很重要

1.2.2:创建一个Controller 调取 http://eureka-client/index

@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumerApplication.class, args);
    }

    @Autowired
    private RestTemplate restTemplate;

    @Value("${restUrl}")
    private String restUrl;

    @LoadBalanced //负载均衡
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

    @GetMapping("/index")
    public Map<String,String> index() {
        return restTemplate.getForObject(restUrl, Map.class);
    }


}

1.3调取这个消费者的 Controller 地址,返回成功刚才第一个Client端口号8082的返回值

 

这样就调通了  ,剩下在创建第二个 Client的生产者,来实现负载均衡的效果就可以了,和第二部分一样这里就省去了,只需要注意的是,更改端口号,剩下配置文件都一样

两个Client

 

第一次请求

第二次请求

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值