Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】
Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】
上一篇主要介绍了相关理论,这一篇开始我们来一个个的实践一下。
Just code it.
本系列介绍的配置均基于 Spring Boot 2.0.1.RELEASE 版本和 Spring Cloud Finchley.RC1 版本
服务注册中心
Spring Cloud 已经帮我们实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。
首先我们创建一个 Spring Boot 工程,名字就叫 eureka-server,可以直接使用 Spring Initializr 创建

也可以直接在 pom.xml 中引入以下依赖
1 |
<parent> |
通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的 Spring Boot 应用中添加这个注解就能开启此功能,比如
1 |
@EnableEurekaServer |
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在 application.yml 配置文件中增加如下信息:
1 |
spring: |
server.port:为了与后续要进行注册的服务区分,这里将服务注册中心的端口设置为 7000。eureka.client.register-with-eureka:表示是否将自己注册到 Eureka Server,默认为 true。eureka.client.fetch-registry:表示是否从 Eureka Server 获取注册信息,默认为 true。eureka.client.service-url.defaultZone:设置与 Eureka Server 交互的地址,查询服务和注册服务都需要依赖这个地址。默认是 http://localhost:8761/eureka ;多个地址可使用英文逗号(,)分隔。
启动工程后,访问 http://localhost:7000/,可以看到下面的页面,其中还没有发现任何服务
集群
注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka 通过互相注册的方式来实现高可用的部署,所以我们只需要将 Eureke Server 配置其他可用的 service-url 就能实现高可用部署。
双节点注册中心
首先我们尝试一下双节点的注册中心的搭建。
1、我们将之前的 application.yml 复制一份并命名为 application-peer1.yml,作为 peer1 服务中心的配置,并将 service-url 指向 peer2
1 |
spring: |
2、将之前的 application-peer1.yml 复制一份并命名为 application-peer2.yml,作为 peer2 服务中心的配置,并将 service-url 指向 peer1
1 |
spring: |
3、配本地 host:
在 hosts 文件中加入如下配置
1 |
127.0.0.1 peer1 peer2 |
4、打包启动
依次执行下面命令
1 |
# 打包 |
在刚启动 peer1 的时候,启动完成后会在控制台看到一些异常信息,大致就是拒绝连接、请求超时这一类的,这个不用管,启动 peer2 后就好了。
依次启动完成后,访问 http://localhost:7001/,效果如下
根据图可以看出 peer1 的注册中心 DS Replicas 已经有了 peer2 的相关配置信息,并且出现在 available-replicas 中。我们手动停止 peer2 来观察,发现 peer2 就会移动到 unavailable-replicas 一栏中,表示 peer2 不可用。

到此双节点的配置已经完成。
注意事项
- 在搭建 Eureka Server 双节点或集群的时候,要把
eureka.client.register-with-eureka和eureka.client.fetch-registry均改为true(默认)。否则会出现实例列表为空,且 peer2 不在 available-replicas 而在 unavailable-replicas 的情况(这时其实只是启动了两个单点实例)。如果是像我这样图省事把之前的单节点配置和双节点的配置放在一个工程里,双节点的配置里要显示设置以上两个参数,直接删除是用不了默认配置的——Spring profile 会继承未在子配置里设置的父配置(application.yml)中的配置。 - 在注册的时候,配置文件中的
spring.application.name必须一致,否则情况会是这样的
Eureka 集群使用
在生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,每台注册中心分别又指向其它两个节点即可。
application-peer1.yml
1 |
spring: |
application-peer2.yml
1 |
spring: |
application-peer3.yml
1 |
spring: |
修改 hosts 文件中的配置,添加 peer3
1 |
127.0.0.1 peer1 peer2 peer3 |
分别以 peer1、peer2、peer3 的配置参数启动 Eureka 注册中心
1 |
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 |
依次启动完成后,访问 http://localhost:7001/,效果如下
可以在 peer1 中看到了 peer2、peer3 的相关信息,至此 Eureka 集群也已经完成了。
注册中心 Eureka 就介绍到这里,下一节我们将利用我们搭建的 Eureka Server 来为服务提供者 / 调用者提供注册 / 发现服务。
相关阅读
Spring Cloud(一):服务治理技术概览
Spring Cloud(二):服务注册与发现 Eureka
Spring Cloud(三):服务提供与调用 Eureka
Spring Cloud(四):服务容错保护 Hystrix
Spring Cloud(五):Hystrix 监控面板
Spring Cloud(六):Hystrix 监控数据聚合 Turbine
Spring Cloud(七):配置中心(Git 版与动态刷新)
Spring Cloud(八):配置中心(服务化与高可用)
Spring Cloud(九):配置中心(消息总线)
Spring Cloud(十):服务网关 Zuul(路由)
Spring Cloud(十一):服务网关 Zuul(过滤器)
Spring Cloud(十二):分布式链路跟踪(Sleuth 与 Zipkin)
示例代码:GitHub
参考
springcloud(二):注册中心 Eureka
Spring Cloud 构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston 版】
Spring Cloud 技术分析(1)——服务治理
Spring Cloud - Peer Awareness
- 本文作者: Yibo
- 本文链接: https://windmt.com/2018/04/15/spring-cloud-2-eureka/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】的更多相关文章
- Spring cloud实现服务注册及发现
服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务. 本文属于<7天学会spring cloud系列& ...
- Spring Cloud 之 服务注册与发现
作为微服务框架,提供服务注册发现是最基本的功能.Spring Cloud 针对服务注册发现 提供了 Eureka版本的实现 .Zookeeper版本的实现.Consul版本的实现.由于历史原因 Eur ...
- 【Spring Cloud】服务注册与发现组件——Eureka(二)
一.Eureka原理 1.架构图 首先来看eureka的官方结构图 所有应用作为Eureka Client和Eureka Server交互,服务提供者启动时向Eureka Server注册自己的IP. ...
- spring cloud(二)服务(注册)中心Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- SpringCloud(二) 服务注册与发现Eureka
1.eureka是干什么的? 上篇说了,微服务之间需要互相之间通信,那么通信就需要各种网络信息,我们可以通过使用硬编码的方式来进行通信,但是这种方式显然不合适,不可能说一个微服务的地址发生变动,那么整 ...
- 用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现
前提: 先安装好ZooKeeper的环境,搭建参考:http://www.cnblogs.com/EasonJim/p/7482961.html 说明: 可以再简单的理解为有两方协作,一个是服务提供这 ...
- SpringBoot + Spring Cloud Consul 服务注册和发现
什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式" ...
- Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼
Spring Cloud并不与Spring MVC类似是一个开源框架,而是一组解决问题的规范(个人理解).解决哪些问题呢?如下: 1)服务管理:⾃动注册与发现.状态监管 2)服务负载均衡 3)熔断 4 ...
- Spring Cloud 之 服务注册与发现实战
一. 启动Eureka Server集群 准备二台云主机,二个eureka server服务互相进行复制.准备二个application.yml配置,分别如下: application-server1 ...
随机推荐
- java Math数学工具及Random随机函数
Math类包含用于执行基本数学运算的方法,如绝对值.对数.平方根和三角函数.它是一个final类,其中定义的都是一些常量和静 态方法.常用方法如下:public static double sqrt( ...
- 【Jenkins持续集成】好用的插件集合
1. Promoted Builds Plugin 这个插件在job构建成功后,依据设置条件(仅手动执行/成功时执行等),执行操作(操作和构建过程基本类似),这样我们就可以在构建之后有机会执行拉分支. ...
- python第十二课——for in循环
1.for...in循环: 有两个使用场景: 场景一:for in和range对象配合使用 range对象的引入讲解 格式:range([start,end,step]): 特点:索引满足含头不含尾的 ...
- CSS3新特性2D、3D效果讲解
希望这篇博客可以对你有所帮助,如果有什么技术上的问题,希望我们可以做进一步的交流,如果你觉得我哪里阐述的不正确或者你有更好的更透彻的理解,也可以联系我,我在这里随时等着你. 对于css/html是每个 ...
- 1217. [HNOI2003]消防局的设立【贪心】
Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成 ...
- Spring Boot中使用EhCache实现缓存支持
SpringBoot提供数据缓存功能的支持,提供了一系列的自动化配置,使我们可以非常方便的使用缓存.,相信非常多人已经用过cache了.因为数据库的IO瓶颈.一般情况下我们都会引入非常多的缓存策略, ...
- python操作数据库(Mysql)
原文地址:https://www.cnblogs.com/R-bear/p/7022231.html python DB-API介绍 1.python标准数据库接口为 python DB-API,py ...
- Qt在线/离线安装包下载网址和说明
截至到2018年3月27日,Qt最新版本的安装需要使用在线安装工具:qt-unified-windows-x86-3.0.2-online.exe,该安装个工具的下载地址为: http://downl ...
- c++——深拷贝和浅拷贝
深拷贝和浅拷贝 默认复制构造函数可以完成对象的数据成员值简单的复制 对象的数据资源是由指针指示的堆时,默认复制构造函数仅作指针值复制 1浅拷贝问题 1.c++默认的拷贝构造函数 2.=号操作符 都是浅 ...
- MySQL(四)执行计划
转载自:Oo若离oO,原文链接 在MySQL中使用explain查询SQL的执行计划 目录 一.什么是执行计划 二.如何分析执行计划 一.什么是执行计划 要对执行计划有个比较好的理解,需要先对MySQ ...