Spring-Cloud-Eureka-Server

Eureka服务器配置与多实例交互
本文档展示了如何配置Eureka服务器进行独立部署、双实例交互以及多个实例的分裂模式交互。通过修改`application.yml`文件,设置Eureka实例的注册、发现及服务URL,实现不同模式下的服务注册与发现。同时,`prefer-ip-address`属性可以调整为true,使服务使用IP地址而非主机名进行广告宣传。

pom

<?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>spring-clould-Official</artifactId>
        <groupId>com.wx</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

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

</project>

EurekaServerApplication.java(启动程序)

package com.wx;

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

application.yml(独立部署模式)

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

独立部署demo

在这里插入图片描述

application.yml(两个交互模式模式)

The First one >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

server:
  port: 8761


eureka:
  instance:
    hostname: localhost

  client:
#    registerWithEureka: false
#    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8762/eureka/
spring:
  application:
    name: eureka-server

The Second one >>>>>>>>>>>>>>>>>>

server:
  port: 8762

eureka:
  instance:
    hostname: localhost
  client:
#    registerWithEureka: false
#    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/
spring:
  application:
    name: eureka-server-01

两个交互demo

在这里插入图片描述
在这里插入图片描述

application.yml(多个交互分裂模式模式)

The First one >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

server:
  port: 8761


eureka:
  instance:
    hostname: localhost

  client:
#    registerWithEureka: false
#    fetchRegistry: false
    serviceUrl:
      defaultZone:  http://${eureka.instance.hostname}:8761/eureka/,http://${eureka.instance.hostname}:8762/eureka/,http://${eureka.instance.hostname}:8763/eureka/
spring:
  application:
    name: eureka-server

The Second one >>>>>>>>>>>>>>>>>>

server:
  port: 8762

eureka:
  instance:
    hostname: localhost
  client:
#    registerWithEureka: false
#    fetchRegistry: false
    serviceUrl:
      defaultZone:  http://${eureka.instance.hostname}:8761/eureka/,http://${eureka.instance.hostname}:8762/eureka/,http://${eureka.instance.hostname}:8763/eureka/
spring:
  application:
    name: eureka-server-01

The Third one >>>>>>>>>>>>>>>>>>>>>>>

server:
  port: 8763

eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/,http://${eureka.instance.hostname}:8762/eureka/,http://${eureka.instance.hostname}:8763/eureka/
spring:
  application:
    name: eureka-server-02

多个交互分裂模式模式demo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

When to Prefer IP Address

In some cases, it is preferable for Eureka to advertise the IP addresses of services rather than the hostname. Set eureka.instance.preferIpAddress to true and, when the application registers with eureka, it uses its IP address rather than its hostname.

prefer-ip-address: true
在使用 `spring-cloud-starter-netflix-eureka-server` 依赖时,如果出现标红或依赖无法识别的问题,通常是由于版本未正确指定或依赖冲突引起的。以下是几种常见的解决方法: ### 1. 显式指定依赖版本 在 `pom.xml` 文件中,确保为 `spring-cloud-starter-netflix-eureka-server` 依赖显式指定版本号。例如,使用版本 `2.2.2.RELEASE`: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>2.2.2.RELEASE</version> </dependency> ``` 如果版本号未指定,Maven 会尝试从父项目或全局配置中查找版本,这可能导致依赖解析失败[^1]。 ### 2. 使用 Spring Cloud 的 BOM 管理版本 另一种方法是通过 `spring-cloud-dependencies` 的 BOM(Bill of Materials)来管理所有 Spring Cloud 依赖的版本。在 `pom.xml` 中添加以下内容: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR9</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 这样,所有 Spring Cloud 依赖的版本将由 BOM 统一管理,避免版本冲突问题[^3]。 ### 3. 排除冲突依赖 如果仍然遇到依赖冲突问题,可以尝试排除某些冲突的子依赖。例如,排除 `spring-cloud-commons`: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>2.2.2.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> </exclusion> </exclusions> </dependency> ``` 随后,可以单独引入所需的 `spring-cloud-commons` 版本: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>2.1.0.RELEASE</version> </dependency> ``` 这种方式可以有效解决由于多个依赖引入不同版本的库而导致的冲突问题[^2]。 ### 4. 重新加载 Maven 依赖 在修改 `pom.xml` 后,重新加载 Maven 依赖以确保所有更改生效。在 IDE 中(如 IntelliJ IDEA 或 Eclipse),可以通过右键项目选择 **Maven -> Reload Project** 来触发重新加载。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值