Sping boot

Eureka是服务中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装。

在dubbo的使用中我们通常使用zookeeper作为注册中心。在这里spring cloud使用Eureka, 用一个标准的spring boot项目就可以快捷的搭建服务注册中心。

Eureka是一个C/S服务,我们需要区分两个,eureka Server和eureka Client

eureka Server是服务注册中心(服务端)。而系统中的其他微服务作为client连接到 Eureka Server,并维持心跳连接。

一、pom

服务端pom

<dependency>      <groupId>org.springframework.cloudgroupId>      artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>dependency>

客户端pom

   <dependency>    <groupId>org.springframework.cloudgroupId>    <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>    <version>2.2.3.RELEASEversion>dependency>

使用Eureka同时需要spring-web的依赖。

二、服务端

yml配置

spring:  application:    name: spring-cloud-eureka-serverserver:  port: 7001eureka:  client:    #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它 这里是服务端    fetch-registry: false       #表示是否从Eureka Server上获取注册信息,默认为true    register-with-eureka: false #表示是否从Eureka Server上获取注册信息,默认为true    serviceUrl:      # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔      defaultZone: http://localhost:${server.port}/eureka/

@EnableEurekaServer

@EnableEurekaServer@SpringBootApplicationpublic class EurekaApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaApplication.class, args);    }}

运行

此时还没有客户端服务注册进来。

三、客户端

yml配置

spring:  application:    name: spring-cloud-providerserver:  port: 8010eureka:  client:    service-url:      defaultZone: http://localhost:7001/eureka/ 

@EnableEurekaClient

@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClientpublic class EurekaProviderApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaProviderApplication.class, args);    }}

也可以使用@EnableDiscoveryClient

@EnableEurekaClient 只支持Eureka注册中心,@EnableDiscoveryClient 支持Eureka、Zookeeper、Consul 这三个注册中心。

四、Eureka集群

理论上来讲,因为服务消费者本地缓存了服务提供者的地址,即使Eureka Server宕机,也不会影响服务之间的调用,但是一旦新服务上线,已经在缓存在本地的服务提供者不可用了,服务消费者也无法知道,所以保证Eureka Server的高可用还是很有必要的。

实际上Eureka集群就是互相注册。我搭建了两台:

不同节点的Eureka Server通过Replicate(复制)进行数据同步 参数eureka.client.serviceUrl.defaultZone,分别配置对方的地址作为Eureka Client进行相互注册。

.

Eureka 集群单例多启动

本地修改host:

127.0.0.1 Eureka7001.com 127.0.0.1 Eureka7002.com 127.0.0.1 Eureka7003.com

yml配置:

spring:  application:    name: spring-cloud-eureka-serverserver:  port: 7002eureka:  instance:    hostname: Eureka7001.com  client:    #eureka默认情况下,把自己当做客户端来注册自己,所以我们要禁用它 这里是服务端    fetch-registry: false    register-with-eureka: false #不去检索eureka服务    serviceUrl:      # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;      #多个地址可使用 , 分隔      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/      #集群:7001 注册到 7002      #defaultZone: http://Eureka7002.com:7002/eureka/      #集群:7002 注册到 7001      defaultZone: http://Eureka7001.com:7001/eureka/

把同一个Eureka 改配置启动两次,即可实现。

注意服务注册时,两台Eureka 都要写

五、Eureka自我保护

默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制。

Eureka在运行期间会统计心跳失败的比例,在15分钟内是否低于85%,如果出现了低于的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务。

该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务。

禁止自我保护

eureka:  instance:    hostname: localhost  server:    enable-self-preservation: false #关闭自我保护机制

修改心跳时间

eureka:  server:    #开启自我保护模式    enable-self-preservation: false    #清理无效节点,默认60*1000毫秒,即60秒    eviction-interval-timer-in-ms: 5000

eureka集群只注册一个_一、Spring Cloud Eureka服务注册中心相关推荐

  1. eureka 集群失败的原因_对于注册中心,ZooKeeper、Eureka哪个更合适?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://h5ip.cn/Kr8D 简介 Eureka本 ...

  2. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  3. Spring cloud实现服务注册及发现

    为什么80%的码农都做不了架构师?>>>    服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访 ...

  4. Spring Cloud之服务注册与发现机制

    一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...

  5. eureka集群只注册一个_闲聊注册中心——ZK、Eureka、Sofa-Registry

    1. 写在前面 最开始服务之间的调用借助的是域名,域名其实是个好东西,使用起来很方便,但所有调用请求都得走域名解析和负载均衡,相对来说性能就差一点,而且这些夹在中间的零部件会演变成性能瓶颈和潜在的单点 ...

  6. eureka集群只注册一个_Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇

    Spring cloud系列教程第十篇- Spring cloud整合Eureka总结篇 本文主要内容: 1:spring cloud整合Eureka总结 本文是由凯哥(凯哥Java:kagejava ...

  7. .NET Core + Spring Cloud:服务注册与发现

    毫无疑问,微服务架构是目前的主流,在微服务架构下,服务治理.负载均衡.服务熔断.配置中心.API网关 等都是需要关注的问题,当然不是非要全部完善后才能进行微服务开发,在很多项目团队中,初期可能会将某个 ...

  8. 【Spring Cloud Alibaba】Spring Cloud Alibaba 服务注册与发现实践

    1. 简介 服务注册与发现是微服务架构体系中最关键的组件之一.如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于服务的动态扩缩容.Nacos Disc ...

  9. 用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现

    前提: 先安装好ZooKeeper的环境,搭建参考:http://www.cnblogs.com/EasonJim/p/7482961.html 说明: 可以再简单的理解为有两方协作,一个是服务提供这 ...

最新文章

  1. 多级反馈队列调度算法具体原理
  2. ANACONDA安装pytorch后Pycharm无法识别到解释器
  3. 2018python培训-Python学习之路—2018/7/2
  4. 知识图谱(四)——实体识别和扩展
  5. 光流 | 基于KLT(Kanade-Lucas-Tomasi)特征点跟踪算法(附代码,可扩展)
  6. 数组索引必须为正整数或逻辑值_Office 365函数新世界——动态数组
  7. Graphviz的安装及纠错
  8. 7-2 哈夫曼编码 (30 分)
  9. LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
  10. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]...
  11. 社保交了24年,还有十几年才到退休年龄。还有必要继续交下去吗?
  12. git 中使用git add . 命令时候报如下警warning: LF will be replaced by CRLF in …….
  13. Mac安装brew,国内推荐使用
  14. CDH 6.3.2 安装(二)
  15. 管理大规模容器集群能力包括_阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践...
  16. Activiti进阶
  17. 技术文摘9 刘 樱桃
  18. bootstrap中,role=form及role作用角色
  19. Arduino与Proteus仿真实例-简单信号频率计数仿真
  20. MATLAB中ode45()和Runge-Kutta算法(4阶)的比较

热门文章

  1. 阿里云飞天AI加速器+Serverless容器,帮助图森未来提升资源利用率
  2. 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。
  3. 陈旸:清华博士的模型信仰
  4. 滴滴经验分享:SQLFlow如何让运营专家用上AI?
  5. 图(关系网络)数据分析及阿里应用
  6. 云端一体化差分+安全升级,AliOS Things物联网升级“利器”
  7. 三招提升数据不平衡模型的性能(附python代码)
  8. 万物互联下的碎片化怎么破?UINO优锘推出物联网产业元宇宙“物联森友会”
  9. 使用了12个月的苹果 M1 芯片,我发现了它的「致命」弱点
  10. 东南亚再造天猫 Lazada品牌商城LazMall举办第二届品牌未来论坛