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

新的一年继续加油!!!

奥利给!!!

相关推荐
架构师沉默20 小时前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
后端AI实验室1 天前
我把一个生产Bug的排查过程,交给AI处理——20分钟后我关掉了它
java·ai
凉年技术1 天前
Java 实现企业微信扫码登录
java·企业微信
狂奔小菜鸡1 天前
Day41 | Java中的锁分类
java·后端·java ee
hooknum1 天前
学习记录:基于JWT简单实现登录认证功能-demo
java
程序员Terry1 天前
同事被深拷贝坑了3小时,我教他原型模式的正确打开方式
java·设计模式
NE_STOP1 天前
MyBatis-缓存与注解式开发
java
码路飞1 天前
不装 OpenClaw,我用 30 行 Python 搞了个 QQ AI 机器人
java
Re_zero1 天前
以为用了 try-with-resources 就稳了?这三个底层漏洞让TCP双向通讯直接卡死
java·后端
SimonKing1 天前
Fiddler抓包完全指南:从安装配置到抓包,一文讲透
java·后端·程序员