• Spring Cloud Eureka:服务注册与发现


    在这里插入图片描述

    💗wei_shuo的个人主页

    💫wei_shuo的学习社区

    🌐Hello World !


    Spring Cloud Eureka:服务注册与发现

    Spring Cloud Eureka是Spring Cloud生态系统中的一个组件,它是用于实现服务注册与发现的服务治理组件。在微服务架构中,服务之间存在复杂的依赖关系,而Spring Cloud Eureka可以帮助解决服务之间相互查找和通信的问题

    Eureka简介

    Eureka是Netflix开源的服务发现组件,用于在分布式系统中实现服务注册与发现。它是Netflix公司在构建微服务架构时开发的核心组件之一,后来成为了Spring Cloud生态系统中的一部分

    Eureka注册中心搭建

    Eureka服务端搭建

    • eureka-server依赖导入
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 启动类添加注解@EnableEurekaServer
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 配置文件application.yml配置
    server:
      port: 8001 #指定运行端口
    spring:
      application:
        name: eureka-server #指定服务名称
    eureka:
      instance:
        hostname: localhost #指定主机地址
      client:
        fetch-registry: false #指定是否要从注册中心获取服务(注册中心不需要开启)
        register-with-eureka: false #指定是否要注册到注册中心(注册中心不需要开启)
      server:
        enable-self-preservation: false #关闭保护模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Eureka客户端搭建

    • eureka-client依赖导入
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 启动类添加注解@EnableDiscoveryClient
    @EnableDiscoveryClient
    @SpringBootApplication
    public class EurekaClientApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 配置文件application.yml配置
    server:
      port: 8101 #运行端口号
    spring:
      application:
        name: eureka-client #服务名称
    eureka:
      client:
        register-with-eureka: true #注册到Eureka的注册中心
        fetch-registry: true #获取注册实例列表
        service-url:
          defaultZone: http://localhost:8001/eureka/ #配置注册中心地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Eureka集群搭建

    • eureka-sever添加配置文件application-replica1.yml配置第一个注册中心
    server:
      port: 8002
    spring:
      application:
        name: eureka-server
    eureka:
      instance:
        hostname: replica1
      client:
        serviceUrl:
          defaultZone: http://replica2:8003/eureka/ #注册到另一个Eureka注册中心
        fetch-registry: true
        register-with-eureka: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 给eureka-sever添加配置文件application-replica2.yml配置第二个注册中心
    server:
      port: 8003
    spring:
      application:
        name: eureka-server
    eureka:
      instance:
        hostname: replica2
      client:
        serviceUrl:
          defaultZone: http://replica1:8002/eureka/ #注册到另一个Eureka注册中心
        fetch-registry: true
        register-with-eureka: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 修改Eureka-client,连接到集群
    server:
      port: 8102
    spring:
      application:
        name: eureka-client
    eureka:
      client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
          defaultZone: http://replica1:8002/eureka/,http://replica2:8003/eureka/ #同时注册到两个注册中心
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Eureka添加认证

    • 添加SpringSecurity依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 添加application.yml配置文件(配置用户名、密码)
    server:
      port: 8004
    spring:
      application:
        name: eureka-security-server
      security: #配置SpringSecurity登录用户名和密码
        user:
          name: macro
          password: 123456
    eureka:
      instance:
        hostname: localhost
      client:
        fetch-registry: false
        register-with-eureka: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    添加 Java 配置WebSecurityConfig


    默认情况下,Spring Security会开启CSRF(Cross-Site Request Forgery)保护,这是一种用于防止跨站点请求伪造攻击的安全机制。当你添加了Spring Security依赖到应用程序中时,每个POST、PUT、DELETE等修改类请求都需要在请求头中包含CSRF token才能被服务器接受


    默认情况下添加SpringSecurity依赖的应用每个请求都需要添加CSRF token才能访问,Eureka客户端注册时并不会添加,所以需要配置/eureka/**路径不需要CSRF token

    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().ignoringAntMatchers("/eureka/**");
            super.configure(http);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


    在这里插入图片描述

  • 相关阅读:
    GBase 8c数据类型-位串类型
    vue.js javascript页面表单验证滚动
    中集世联达飞瞳全球工业人工智能AI领军者,全球顶尖AI核心技术高泛化性高鲁棒性稀疏样本持续学习,工业级高性能成熟AI产品规模应用
    社交媒体与社会网络分析,深度解读社交网络营销
    电子商务的三个要素是人、货、场
    Leetcode Daily Challenge 1845. Seat Reservation Manager
    通达OA_文件包含漏洞
    【老生谈算法】matlab实现模糊数学模型源码——模糊数学模型
    跟我学Python图像处理丨关于图像金字塔的图像向下取样和向上取样
    Redis学习(二)----性能测试
  • 原文地址:https://blog.csdn.net/weixin_62765017/article/details/131976543