微服务【SpringCloud】成长之路(一)【Eureka】

本文介绍了如何使用SpringCloud搭建Eureka微服务注册中心,包括版本信息、依赖管理、模块创建、配置详解以及启动与访问。通过创建EurekaServer模块,配置EurekaInstance和EurekaClient参数,实现服务的注册与发现。同时展示了Eureka服务提供者的配置和启动类,以及如何进行服务发现和交互。

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

微服务【SpringCloud】成长之路(一)【Eureka】

遇到面试问题 springcloud都有哪些版本?
| Spring Boot |Spring Cloud
|1.2.x |Angel版本
|1.3.x |Brixton版本
|1.4.x stripes |Camden版本
|1.5.x |Dalston版本、Edgware版本
|2.0.x |Finchley版本
|2.1.x |Greenwich版本

在这里插入图片描述

创建聚合工程

创建空的maven项目
在这里插入图片描述
在这里插入图片描述
删掉父工程的src目录,习惯了

导入依赖 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dahuilang</groupId>
    <artifactId>springcloud-dahuilang</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>springcloud-eureka-5001</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <lombok.version>1.18.12</lombok.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--springcloud的依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springboot的依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--数据库-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.49</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.10</version>
                <scope>import</scope>
            </dependency>
            <!--springboot启动器-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.0</version>
                <scope>import</scope>
            </dependency>

            <!--日志测试~-->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

创建模块 springcloud-eureka-5001

在这里插入图片描述

在这里插入图片描述

springcloud-eureka-5001的 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud-dahuilang</artifactId>
        <groupId>com.dahuilang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-eureka-5001</artifactId>

    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

    </dependencies>
</project>
springcloud-eureka-5001的 application.yml

在这里插入图片描述

server:
  port: 5001


#Eureka配置
eureka:
  instance:
    hostname: eureka5001.com #Eureka 服务端的名字
  client:
    register-with-eureka: false #是否向注册中心注册当前的服务
    fetch-registry: false #fetch-registry 为false时,当前服务为注册中心,非集群版,不需要同步其他节点数据
    service-url:  #代码中Eureka的默认访问路径 http://localhost:8761/eureka/
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #非集群模式
      #defaultZone: http://eureka5002.com:5002/eureka/,http://eureka5003.com:5003/eureka/ #集群模式 互注册

创建启动类

package com.dahuilang;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer5001 {


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

启动并访问
在这里插入图片描述
官网地址:https://spring.io/projects/spring-cloud-netflix

主要配置

Spring Cloud Eureka 主要分为下面三个模块的参数:

  • Eureka Server | Eureka Client | Eureka Instance

Eureka Server【org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean】

Eureka Server 的配置参数格式:eureka.server.xxx。
enable-self-preservation :表示注册中心是否开启服务的自我保护能力。
renewal-percent-threshold:表示 Eureka Server 开启自我保护的系数,默认:0.85。
eviction-interval-timer-in-ms:表示 Eureka Server 清理无效节点的频率,默认 60000 毫秒(60 秒)。

Eureka Instance【org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean】

Eureka Instance 的配置参数格式:eureka.instance.xxx。
instance-id:表示实例在注册中心注册的唯一ID。
prefer-ip-address:
							true:实例以 IP 的形式注册
							false:实例以机器 HOSTNAME 形式注册
lease-expiration-duration-in-seconds:表示 Eureka Server 在接收到上一个心跳之后等待下一个心跳的秒数(默认 90 秒),若不能在指定时间内收到心跳,则移除此实例,并禁止此实例的流量。此值设置太长,即使实例不存在,流量也能路由到该实例此值设置太小,由于网络故障,实例会被取消流量,需要设置为至少高于 lease-renewal-interval-in-seconds 的值,不然会被误移除了。
lease-renewal-interval-in-seconds:表示 Eureka ClientEureka Server 发送心跳的频率(默认 30 秒),如果在 lease-expiration-duration-in-seconds 指定的时间内未收到心跳,则移除该实例。

Eureka Client 【org.springframework.cloud.netflix.eureka.EurekaClientConfigBean】

Eureka Client 的配置参数格式:eureka.client.xxx。
register-with-eureka:表示此实例是否注册到 Eureka Server 以供其他实例发现。在某些情况下,如果你不想自己的实例被发现,而只想发现其他实例,配置为 false 即可。
fetch-registry:表示客户端是否从 Eureka Server 获取实例注册信息。
serviceUrl.defaultZone:表示客户端需要注册的 Eureka Server 的地址。

Eureka服务提供者

pom.xml
		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>
		<!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        
application.yml
# spring的配置
spring:
  application:
    name: springcloud-provider-dept 

# Eureka的配置
eureka:
  client:
    service-url:
      defaultZone: http://eureka5001.com:5001/eureka/,http://eureka5002.com:5002/eureka/,http://eureka5003.com:5003/eureka/
  instance:
    instance-id: springcloud-provider-dept-8001 #修改默认描述信息
info:
  app.name: springcloud-XXXX #项目的名称
  company.name: com.XXXX #公司的名称

启动类

@SpringBootApplication
@EnableEurekaClient //在启动后注册到Eureka服务中
@EnableDiscoveryClient //服务发现
public class DeptProvider_8001 {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvider_8001.class,args);
    }
}

在这里插入图片描述

@RestController
public class DeptController {
    @Autowired
    DeptService deptService;

    //获取一些配置的信息,得到具体的微服务!
    @Autowired
    private DiscoveryClient client;

    //注册进来的微服务~,获取一些消息~
    @GetMapping("/dept/discovery")
    public Object discovery() {
        //获取微服务列表的清单
        List<String> services = client.getServices();
        System.out.println("discovery=>services:" + services);
        //得到一个具体的微服务信息,通过具体的微服务id,applicaioinName;
        List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
        for (ServiceInstance instance : instances) {
            System.out.println(
                    instance.getHost() + "\t" + // 主机
                            instance.getPort() + "\t" + // 端口
                            instance.getUri() + "\t" + // 地址
                            instance.getServiceId() // 服务id
            );
        }
        return this.client;
    }
}

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值