spring cloud微服务-eureka

本文详细介绍了SpringCloud Eureka在微服务架构中的应用,包括服务发现、权限认证及集群配置。从创建Maven分布式项目入手,逐步讲解如何在SpringBoot中整合Eureka,实现服务注册与发现,同时探讨了安全认证的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring cloud微服务-eureka

eureka简单介绍

Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务,包含Server和Client两部分。Spring Cloud Eureka 是 基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,Spring Cloud将它集成在子项目Spring Cloud Netflix中。常见的注册中心有eureka,Consul,Etcd,Zookeeper等。Dubbo中的注册中心有是基于redis的,有基于Zookeeper的,最常用的还是基于Zookeeper的。

创建maven分布式项目

在maven父项目中pom文件中确定spring boot的版本2.0.6.RELEASE,和一些公共的依赖引用,完整的pom文件中代码如下:

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;
    </parent>
    
    <groupId>com.learning.wen</groupId>
    <artifactId>learning-item</artifactId>
    <version>1.0.0</version>
    <name>learning-item</name>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
        </dependency>

        <!--热部署依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 阿里fastJson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

        <!-- apache组件 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>

        <!-- 添加swagger依赖  swagger start-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.21</version>
        </dependency>

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>

        <!--swagger增强,界面更友好-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.9</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--热部署插件,CTRL+f9-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

在maven项目中创建spring项目

现在的项目使用spring boot开发,除了基本的项目中的业务代码,开始的部分要做的就是:
加依赖、加注解、写配置
对于依赖的相关版本查找:链接地址

加依赖

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

加注解
在项目启动类上添加以下注解:

@EnableEurekaServer

写配置
注意yml的格式问题、application的编码问题

server:
  port: 10000
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url: 
      defaultZone: http://localhost:10000/eureka/

注:eureka的集群配置方法
配置改为

---
server:
  port: 10000
spring:
  application:
    name: eureka-server
  profiles: peer1
#将peer1注册到peer2,peer3
eureka:
  instance:
    hostname: peer1
  client:
    service-url:
      defaultZone: http://peer2:10001/eureka/,http://peer3:10002/eureka/
---
server:
  port: 10001
spring:
  application:
    name: eureka-server
  profiles: peer2
#将peer2注册到peer1,peer3
eureka:
  client:
    service-url:
      defaultZone: http://peer1:10000/eureka/,http://peer3:10002/eureka/
  instance:
    hostname: peer2
---
server:
  port: 10002
spring:
  application:
    name: eureka-server
  profiles: peer3
#将peer3注册到peer1,peer2
eureka:
  client:
    service-url:
      defaultZone: http://peer1:10000/eureka/,http://peer2:10001/eureka/
  instance:
    hostname: peer3

并找到自己的hosts文件 ,在C:\Windows\System32\drivers\etc目录下,使用文本方式打开,在文本的末尾阶段加上:

#eureka
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
#eureka end

eureka整合security权限认证

加依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

加注解
写配置
peer1、peer2、peer3都要改

server:
  port: 10000
spring:
  application:
    name: eureka-server
  profiles: peer1
  security:
    user:
      name: wen
      password: qiyu
# 将peer1注册到peer2,peer3
eureka:
  instance:
    hostname: peer1
  client:
    service-url:
      defaultZone: http://wen:qiyu@peer2:10001/eureka/,http://wen:qiyu@peer3:10002/eureka/

idea配置启动项

项目
在这里插入图片描述
peer1节点启动项:
在这里插入图片描述
peer2节点启动项:
在这里插入图片描述
peer3节点启动项:
在这里插入图片描述

eureka客户端访问

peer1节点访问路径:http://localhost:10000
在这里插入图片描述
peer2、peer3端口换10001、10002

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值