• Eureka 注册中心


    Eureka 注册中心

    简述

    在Eureka架构中,微服务角色有两类:

    • EurekaServer:服务端,注册中心
      • 记录服务信息
      • 心跳监控
    • EurekaClient:客户端
      • Provider:服务提供者,例如案例中的user-service
        • 注册自己的信息到EurekaServer
        • 每隔30秒向EurekaServer发送心跳
      • consumer:服务消费者,例如案例中的order-service
        • 根据服务名称从EurekaServer拉取服务列表
        • 基于服务列表做负载均衡,选中一个微服务后发起远程调用

    注册发现

    1.搭建EurekaServer

    • 引入eureka-server依赖

      <dependency>
          <groupId>org.springframework.cloudgroupId>
          <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
    • 添加@EnableEurekaServer注解

      @SpringBootApplication
      @EnableEurekaServer
      public class EurekaMain{
          public static void main(String[] args) {
              SpringApplication.run(EurekaMain.class, args);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 在application.yml中配置eureka地址

      server:
        port: 7001
      eureka:
        instance:
          hostname: eureka-server
        client:
          # 不向注册中心注册自己
          register-with-eureka: false
          # 表示自己是注册中心,提供维护服务,不需要检索服务
          fetch-registry: false
          service-url:
            defaultZone: http://eureka7001.com:7001/eureka
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

    2.服务注册

    • 引入eureka-client依赖

      <dependency>
          <groupId>org.springframework.cloudgroupId>
          <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
    • 在application.yml中配置eureka地址

      eureka:
        client:
          fetch-registry: true
          register-with-eureka: true
          service-url:
            defaultZone: http://localhost:7001/eureka
        instance:
          instance-id: payment
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • 启动类上加注解

      @SpringBootApplication
      @EnableEurekaClient
      @EnableDiscoveryClient
      public class PaymentMain {
          public static void main(String[] args) {
              SpringApplication.run(PaymentMain.class, args);
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    3.服务发现

    • 引入eureka-client依赖

      <dependency>
          <groupId>org.springframework.cloudgroupId>
          <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
    • 在application.yml中配置eureka地址

      eureka:
        client:
          fetch-registry: true
          register-with-eureka: true
          service-url:
            defaultZone: http://localhost:7001/eureka
      spring:
        application:
          name: cloud-order-service
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • RestTemplate添加@LoadBalanced注解

    @Configuration
    public class ApplicationContextConfig {
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    @RestController
    @Slf4j
    public class OrderController {
    
        public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/consumer/payment/create")
        public CommonResult<Payment> create(Payment payment) {
            return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
        }
    
        @GetMapping("/consumer/payment/get/{id}")
        public CommonResult<Payment> getPayment(@PathVariable("id") Long id) {
            return restTemplate.getForObject(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    禁止自我保护

    eureka:
      server:
        enable-self-preservation: false			#默认开启
        eviction-interval-timer-in-ms: 2000		#2s
    
    • 1
    • 2
    • 3
    • 4
    THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
  • 相关阅读:
    uniapp里接入lottie-miniprogram详细指南
    uniapp:小白1分钟学会使用webSocket(可无脑复制)
    ChatGPT之父被OpenAI解雇
    紧固螺栓的常见类型有哪些?
    MyBatis-PLUS使用教程
    react的table合并行时,出现border-bottom重复问题
    Java进阶学习路线图
    三、mysqld程序的运行原理及数据库结构
    JS 堆栈&内存快照& tracre跟踪
    Oracleの怪异的的Boolean类型
  • 原文地址:https://blog.csdn.net/zhongjianboy/article/details/126817587