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 ...
随机推荐
- 小程序 mpvue page "xxx" has not been registered yet
新增了几个页面,改了下目录结构,就开始报这个错. 重启了几次不管用,google 一番也无果. 灵机一动试一下 build npm run build build 版本没报错,OK 然后 $ rm - ...
- 从IT圈“鄙视链”看前端开发有多难?
如今"鄙视链"体现在生活的方方面面,各行各业都有默认一致的鄙视链.IT圈子因为开发语言多样.工程师岗位种类多.技术框架多,也有自己圈子内的鄙视链.按照开发工程师的岗位形成的鄙视链是 ...
- 软件测试2021:第一次作业——热身练习(Bug)
案例一: 问题说明:在大学生服务外包创新创业大赛的注册页面填写密码的时候只有偶数位的密码可以通过验证,而基数位的密码不可以 原因分析:在密码验证的时候多加了一条验证,使得基数位的密码不能都通过验证 案 ...
- 20210716考试-NOIP19
u,v,w. 这场考过. T1 u 差分裸题 #include<bits/stdc++.h> using namespace std; const int N=5000; int n,m; ...
- Mysql常用sql语句(5)- as 设置别名
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 需要注意,创建数据库和创建表的语句博文都在前面哦 整个 ...
- AgileConfig轻量级配置中心1.4.0发布,重构了发布功能
加入 NCC 先说一个事,AgileConfig 在 7 月底终于通过了 NCC 社区的审核,正式成为了 NCC 大家庭的一员.这对 AgileConfig 来说是一个里程碑,希望加入 NCC 后能更 ...
- CSS003. 盒子水平垂直居中简写属性(place-items)
place-items CSS 中的 place-items 是一个简写属性 ,它允许你在相关的布局(如 Grid 或 Flexbox)中可以同时沿着块级和内联方向对齐元素 (例如:align-it ...
- 利用GetInvalidFileNameChars()得到有效的文件名
public static string GetValidName(string fileName) { foreach (char c in System.IO.Path.GetInvali ...
- electron-vue 开发问题合集
(一)Found 'electron' but not as a devDependency, pruning anyway 原因:对electron没有严格要求的话可以忽略,不影响打包,但会影响第三 ...
- iOS之多语言开发
前要:iOS多语言开发,可以分为两种 系统设置,通过在手机设置中切换语言,进而改变app中语言: app中手动切换,用户在app中,手动选择语言,进行切换. 一.添加需要的语言 不管使用哪种方法,都需 ...