SpringCloud 2020.0.4 系列之Eureka
1. 概述
老话说的好:遇见困难,首先要做的是积极的想解决办法,而不是先去泄气、抱怨或生气。
言归正传,微服务是当今非常流行的一种架构方式,其中 SpringCloud 是我们常用的一种微服务框架。
今天我们来聊聊 SpringCloud 中的服务治理组件 Eureka。
2. Eureka服务端的搭建
2.1 新建项目
打开IDEA,选择 File —> New —> Project...

2.2 填写项目信息
选择 Spring Initializr,填写项目信息

2.3 选择依赖项
选择 Spring Cloud Discovery —> Eureka Server

2.4 主要依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.4</spring-cloud.version>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.5 配置 Eureka Server
spring:
application:
name: my-eureka
server:
port: 35000
eureka:
instance:
hostname: localhost # 应用实例主机名
client:
register-with-eureka: false # 是否发起服务注册
fetch-registry: false # 是否拉取服务注册表
server:
enable-self-preservation: false # 是否开启服务自我保护,建议关闭,开启自我保护机制后,实例宕机也被不会剔除
eviction-interval-timer-in-ms: 10000 # 每隔多久触发一次服务剔除,默认是60秒
建议关闭服务自我保护。
2.6 启动类中增加 @EnableEurekaServer 注解

2.7 启动 Eureka Server
启动 Eureka Server 项目,在浏览器输入 http://Eureka服务器IP:35000/,可以查看 Eureka Server 控制台。

3. Eureka客户端(Demo)的搭建
3.1 新建项目,选择依赖项
选择 Spring Cloud Discovery —> Eureka Discorvery Client

3.2 主要依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 健康检查 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.3 配置 Eureka Client
spring:
application:
name: my-eureka-client
server:
port: 36000
eureka:
client:
service-url:
defaultZone: http://192.168.1.22:35000/eureka/ # Eureka Server的地址
healthcheck:
enabled: true # 开启健康检查, 依赖于 spring-boot-starter-actuator
instance:
lease-renewal-interval-in-seconds: 5 # 发出续约指令的间隔,默认30秒
lease-expiration-duration-in-seconds: 30 # 租期到期时间,默认90秒
3.4 启动类中增加 @EnableDiscoveryClient 注解

3.5 启动 Eureka Client
启动 Eureka Client 项目,在之前的 Eureka Server 控制台可以看到注册的服务

4. Eureka Server 高可用
4.1 概述
如果 Eureka Server 是单点应用,则宕机后,整个链路都会瘫痪。
因此我们采用多 Eureka Server 互相注册的方式,实现 Eureka Server 的高可用。
这里以两台 Eureka Server 为例。
4.2 配置服务器的 hostname
# vi /etc/hostname
例如: zhuifengren1、zhuifengren2
4.3 配置hosts
配置服务器节点的 hosts,使IP地址与hostname对应
# vi /etc/hosts
例如:
192.168.1.22 zhuifengren1
192.168.1.12 zhuifengren2
4.4 修改 Eureka Server1 的配置文件
spring:
application:
name: my-eureka
server:
port: 35000
eureka:
instance:
hostname: zhuifengren1 # 应用实例主机名
client:
service-url:
defaultZone: http://zhuifengren2:35001/eureka/ # Eureka Server的地址
server:
enable-self-preservation: false # 是否开启自我保护,建议关闭,开启自我保护机制后,实例宕机也被不会剔除
eviction-interval-timer-in-ms: 10000 # 每隔多久触发一次服务剔除,默认是60秒
4.5 修改 Eureka Server2 的配置文件
spring:
application:
name: my-eureka
server:
port: 35001
eureka:
instance:
hostname: zhuifengren2 # 应用实例主机名
client:
service-url:
defaultZone: http://zhuifengren1:35000/eureka/ # Eureka Server的地址
server:
enable-self-preservation: false # 是否开启自我保护,建议关闭,开启自我保护机制后,实例宕机也被不会剔除
eviction-interval-timer-in-ms: 10000 # 每隔多久触发一次服务剔除,默认是60秒
注意:两台 Eureka Server 的 spring.application.name 必须相同
4.6 修改 Eureka Client 的配置文件
server:
port: 36000
eureka:
client:
service-url:
defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/ # Eureka Server的地址
healthcheck:
enabled: true # 开启健康检查, 依赖于 spring-boot-starter-actuator
instance:
lease-renewal-interval-in-seconds: 5 # 发出续约指令的间隔,默认30秒
lease-expiration-duration-in-seconds: 30 # 租期到期时间,默认90秒
4.7 启动服务
启动后,任意停止某一个 Eureka Server,不影响 Eureka Client 服务的注册。

5. 综述
今天聊了一下 Eureka的相关知识,希望可以对大家的工作有所帮助。
欢迎帮忙点赞、评论、转发、加关注 :)
关注追风人聊Java,每天更新Java干货。
6. 个人公众号
追风人聊Java,欢迎大家关注

SpringCloud 2020.0.4 系列之Eureka的更多相关文章
- SpringCloud 2020.0.4 系列之 Feign
1. 概述 老话说的好:任何问题都有不止一种的解决方法,当前的问题没有解决,只是还没有发现解决方法,而并不是无解. 言归正传,之前我们聊了 SpringCloud 的服务治理组件 Eureka,今天我 ...
- SpringCloud 2020.0.4 系列之 Stream 消息广播 与 消息分组 的实现
1. 概述 老话说的好:事情太多,做不过来,就先把事情记在本子上,然后理清思路.排好优先级,一件一件的去完成. 言归正传,今天我们来聊一下 SpringCloud 的 Stream 组件,Spring ...
- SpringCloud 2020.0.4 系列之 Stream 延迟消息 的实现
1. 概述 老话说的好:对待工作要有责任心,不仅要完成自己的部分,还要定期了解整体的进展. 言归正传,我们在开发产品时,常常会遇到一段时间后检查状态的场景,例如:用户下单场景,如果订单生成30分钟后, ...
- SpringCloud 2020.0.4 系列之 Stream 消息出错重试 与 死信队列 的实现
1. 概述 老话说的好:出错不怕,怕的是出了错,却不去改正.如果屡次出错,无法改对,就先记下了,然后找援军解决. 言归正传,今天来聊一下 Stream 组件的 出错重试 和 死信队列. RabbitM ...
- SpringCloud 2020.0.4 系列之服务降级
1. 概述 老话说的好:做人要正直,做事要正派,胸怀坦荡.光明磊落,才会赢得他人的信赖与尊敬. 言归正传,之前聊了服务间通信的组件 Feign,今天我们来聊聊服务降级. 服务降级简单的理解就是给一个备 ...
- SpringCloud 2020.0.4 系列之 Bus
1. 概述 老话说的好:会休息的人才更会工作,身体是革命的本钱,身体垮了,就无法再工作了. 言归正传,之前我们聊了 SpringCloud 的 分布式配置中心 Config,文章里我们聊了config ...
- SpringCloud 2020.0.4 系列之 Gateway入门
1. 概述 老话说的好:做人要有幽默感,懂得幽默的人才会活的更开心. 言归正传,今天我们来聊聊 SpringCloud 的网关组件 Gateway,之前我们去访问 SpringCloud 不同服务的接 ...
- SpringCloud 2020.0.4 系列之 JWT用户鉴权
1. 概述 老话说的好:善待他人就是善待自己,虽然可能有所付出,但也能得到应有的收获. 言归正传,之前我们聊了 Gateway 组件,今天来聊一下如何使用 JWT 技术给用户授权,以及如果在 Gate ...
- SpringCloud 2020.0.4 系列之Hystrix看板
1. 概述 老话说的好:沉默是金,有时适当的沉默,比滔滔不绝更加有效. 言归正传,前面我们聊了有关 Hystrix 降级熔断的话题,今天我们来聊聊如何使用 turbine 和 hystrix dash ...
随机推荐
- canal数据同步
前面提到数据库缓存不一致的几种解决方案,但是在不同的场景下各有利弊,而今天我们使用的canal进行缓存与数据同步的方案是最好的,但是也有一个缺点,就是相对前面几种解决方案会引入阿里巴巴的canal组件 ...
- Mybatis(一)——HelloWorld
本人的博客一向保持"傻瓜式"的风格. 循序渐进学Mybatis,先konw how,再konw why.先整体,再细节! 本文不讲难懂的概念,先通过一个案例,希望读者跟着本文一步一 ...
- aes加解密后续问题contentType不是application/json时候后台解析请求对象request
一.post请求的三种content-type 1.application/x-www-form-urlencoded 主要用于如下:1.1: 最常见的POST提交数据方式.1.2:原生form默认的 ...
- C# windows服务知识集锦
最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享. 1).关于windows服务安装包的制作和自动启动服务 http://blog.csdn.net/re ...
- 珠峰2016,第9期 vue.js 笔记部份
在珠峰参加培训好年了,笔记原是记在本子上,现在也经不需要看了,搬家不想带上书和本了,所以把笔记整理下,存在博客中,也顺便复习一下 安装vue.js 因为方便打包和环境依赖,所以建意npm init ...
- Android——菜单(Menu)
菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...
- python循环以及控制语句
python流程 学习完本篇,你将会通过python完成以下题目 试利用break语句求解2-100之间的素数. (1)素数是指除了能被1和它本身整除外,不能被其它数所整除的数.判断一个自然数是否是素 ...
- aws中centos登陆连接设置
第一步:使用aws密钥文件(.pem)登陆(*在shell中需使用新建的会话,不能直接,使用原来的会话进行修改,否则无法进入) 点击浏览器,点添加,再点击导入,选择.pem 文件 第二步: 登陆后,使 ...
- 字体小于12px 无法缩小解决方案
通过缩放进行大小控制. 缩放可能会导致元素也进行缩放.需要注意 transform: scale(0.5);
- kubelet源码分析——启动Pod
前文说到Kubelet启动时,调用到kubelet.Run方法,里面最核心的就是调用到kubelet.syncLoop.它是一个循环,这个循环里面有若干个检查和同步操作,其中一个是地在监听Pod的增删 ...