Eureka 本机集群实现

距离上次发布博客已经一年多了,主要就是因为考研,没时间学习技术的内容,现在有时间继续完成关于代码方面的心得,希望跟大家分享。

今天在做一个 Eureka 的集群实现,我是在本电脑上跑的,感觉这个挺有意思,跟大家介绍一下。

首先介绍一下大概的环境背景,自己使用了三个注册中心来搭建Eureka集群,使用的依赖下面已经列出

XML 复制代码
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.2.5.RELEASE</version>
 </dependency>

接着是创建yml文件并进行简单的配置,代码如下:

java 复制代码
server:
  port: 7001


eureka:
  instance:
    hostname: eureka7001.com
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7004.com:7004/eureka/
java 复制代码
server:
  port: 7003


eureka:
  instance:
    hostname: eureka7003.com
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7004.com:7004/eureka/
java 复制代码
server:
  port: 7004


eureka:
  instance:
    hostname: eureka7004.com
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7001.com:7001/eureka/

注意这里我是使用了yml文件,**一定要注意缩进。**如果大家在意的话其实上面三段代码是有内在的逻辑关系的,这里的每个server port所对应的defaultZone都是另外两个的注册中心访问地址,这样就相当于完成了互相的绑定工作,我想这也是集群的一个重要过程体现,下面就是代码运行结果:

这里的DS Replicas就是表示当前的注册中心依赖了的其他注册中心。

在上面的结果实现过程中还有一个比较关键的点就是,本电脑的路径映射问题,这个路径映射也是需要进行配置的,具体的配置文件在自己电脑的如下路径:

使用任意编辑工具对hosts文件进行编辑,加入如下内容完成映射:

java 复制代码
127.0.0.1 eureka7001.com
127.0.0.1 eureka7003.com
127.0.0.1 eureka7004.com

在这里可能存在有文件修改权限的问题,大家记得使用管理员权限进行更改,我这里没遇到这个问题(额,也没有复现问题情景,这个麻烦大家看看别的相关文章的具体解决办法)。

接着创建了一个服务提供者,首先是导入相关的依赖:

XML 复制代码
  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.5.RELEASE</version>
  </dependency>

这个就是 Eureka 的客户端的依赖,从最后的后缀也比较容易辨别,下面是进行yml文件的配置,代码如下:

java 复制代码
eureka:
  client:
    service-url:
      defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7004.com:7004/eureka/
  instance:
    instance-id: springcloud-provider-8001

这部分的代码主要就是完成客户端到服务端也就是上面代码之间的访问,主要就是配置了客户端对Eureka 集群的访问地址,完成上面的内容就可以达到以下效果。

可以看到客户端会在三个注册中心都有显示,这代表我们已经完成了向 Eureka 集群注册的功能。

还有一个就是大家可以看到最后一张图片上有两行红字,这个大家不用担心,我先复制下来:

java 复制代码
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

这是 Eureka 自我保护机制的体现,大家可以通过配置文件对 Eureka 自我保护机制进行关闭,但是在我看来默认打开自然有他的道理,推荐使用默认打开,下面是关闭的语句:

java 复制代码
server:
    enable-self-preservation: false

新的一年继续加油!!!

奥利给!!!

相关推荐
SL_staff12 小时前
3天上线OKR系统:一名HR与1名工程师如何用JVS完成全栈交付
java·低代码·开源
wzdark13 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
cnkeysky13 小时前
idea 中的 maven 项目重新加载子模块
java·idea
Escalating_xu13 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
今天AI了吗14 小时前
什么是 AI Agent?它与直接调用大模型 API 有何区别
java·网络·人工智能·架构·java-ee
隐退山林14 小时前
JavaEE进阶:SpringAOP
java·java-ee
Wang's Blog14 小时前
Java框架快速入门: Spring Security+OAuth2之方法级安全注解
java·安全·spring
JavacKaka14 小时前
LiteFlow规则引擎实战博客-2026-09-09
java
学渣超14 小时前
记一次复杂业务功能重构——从过程式长链路,到模板方法构建体系
java·架构·代码规范
Bs_MoneyMagnet14 小时前
基于springboot+vue的旅游景区点评系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·旅游