2. Eureka注册中心

122 阅读1分钟

Eureka介绍

Eureka是一个服务注册中心,分为服务端(监测客户端信息,心跳等待)和客户端(有消费者 提供者) image.png image.png

搭建Eureka服务端

1. 新建一个项目,导入依赖,不用带版本,父工程标签已经约束版本了

<!-- eureka服务端--> 
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2.创建一个启动接口,加上@EnableEurekaServer

@SpringBootApplication 
@EnableEurekaServer //开其Eureka服务端 
public class EurekaApplication { 
    public static void main(String[] args) { 
        SpringApplication.run(EurekaApplication.class,args); 
    }
}

3. 配置文件

server: port: 10086 #服务端口号 
spring: 
    application: 
        name: eurekaserve #eureka服务名称
eureka: 
    client: 
        service-url: #eureka的地址信息
            defaultZone: http://127.0.0.1:10086/eureka

搭建Eureka客户端

多实例启动 -Dserver.port=8082

image.png

服务注册

1.引入依赖

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
</dependency>

2.配置yml文件

spring: 
    application: 
        name: user-serve #eureka服务名称
eureka: 
    client:
        service-url: #eureka的地址信息 
            defaultZone: http://127.0.0.1:10086/eureka

3. application加上@EnableEurekaClient,消费者需要在Controller修改请求地址(生产者app.name)

@GetMapping("{orderId}") 
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) { 
    // 根据id查询订单并返回 
    Order order = orderService.queryOrderById(orderId); 

    // String url="http://localhost:8081/user/"+order.getUserId();
    String url="http://user-serve/user/"+order.getUserId(); 

    //用生产者的spring.application.name 注册中心会识别
    User object = restTemplate.getForObject(url, User.class);
    order.setUser(object); 
    return order; 
}

@MapperScan("cn.itcast.order.mapper") 
@SpringBootApplication 
@EnableEurekaClient public class OrderApplication { 
public static void main(String[] args) { 
    SpringApplication.run(OrderApplication.class, args); 
} 
@Bean 
@LoadBalanced //开启负载均衡LoadBalanced默认轮询 
public RestTemplate restTemplate(){ 
    return new RestTemplate(); } 
}

4.多实例运行,参考多实例启动, 负载均衡在多个服务才有作用

负载均衡默认轮询

image.png