Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方。

Eureka Server的高可用:就是将自己作为服务向其他服务注册中心注册自己,形成一组互相注册的服务注册中心,实现服务清单的互相同步,达到高可用的效果。

Example:现有两个服务注册中心(RegisterCenterOne、RegisterCenterTwo)

application-centerOne.properties内容如下:

  spring.application.name=eureka-server

  server.port=1111

  eureka.instance.hostname=registercenterone

  eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka

application-centerTwo.properties内容如下:

  spring.application.name=eureka-server

  server.port=1112

  eureka.instance.hostname=registercentertwo

  eureka.client.serviceUrl.defaultZone=http://registercenterone:1111/eureka

服务提供方配置内容如下(application.properties):

  spring.application.name=hello-service

  eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka,http://registercenterone:1111/eureka

Eureka基础架构的三个核心要素:

    服务注册中心:提供服务注册与发现

    服务提供者:提供服务的应用

    服务消费者:消费者应用从服务注册中心获取服务列表,从而使消费者可以知道从何处调用其所需的服务

服务提供者

服务注册:

  “服务提供者”在启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。在服务注册时,需要确认eureka.client.register-with-eureka=true(默认为true),若设置为false将不会启动注册操作。

服务同步:

  服务注册中心之间互相注册为服务,当服务提供者发送注册请求到一个服务注册中心时,它会将请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。

服务续约:

  在注册完服务之后,服务提供者会维护一个心跳用来告诉Eureka Server:“我还活着”,以防止Eureka Server的“剔除任务”姜该服务实例从服务列表中排除出去,该操作作为服务续约。

服务消费者

获取服务:

  当启动服务消费者的时候,它会发送一个REST请求给服务注册中心,来获取上面注册的服务清单。Eureka Server会维护一份份只读的服务清单来返回给客户端,同时该缓存清单会每隔30秒更新一次(可通过设置eureka.client.registry-fetch-interval-seconds=30的值进行修改,单位为s)。

服务调用:

  服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息。

服务下线:

  在客户端程序中,当服务实例精细正常的关闭操作时,它会触发一个服务下线的REST请求给Eureka Server,告诉服务注册中心。服务端在接收到请求后,将该服务状态置为下线,并把该下线事件传播出去。

服务注册中心

失效剔除:

  Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认60秒)将当前清单中超时(默认90秒)没有续约的服务剔除出去。

自我保护:

  Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期。可以通过设置eureka.server.enable-self-preservational=false参数关闭保护机制。

实例名规则设置:eureka.instance.instanceId=${spring.application.name}:${random.int}(利用应用名加随机数的方式区分不同实例,从而实现在同一主机上不指定端口就能启动多个实例)

在Spring Cloud Eureka中, 我们可以通过简单的配置, 把Eureka客户端的健康检测交给spring-boot-actuator模块的/health端点, 以实现更加全面的健康状态维护。详细的配置步骤如下所示:

  • 在pom.xml中引入spring-boot-starter-actuator模块的依赖。

  • 在application.proper巨es中增加参数配置eureka.client.healthcheck.enabled=true。
  • 如果客户端的/health端点路径做了一些特殊处理,请参考前文介绍端点配置时的方法进行配置, 让服务注册中心可以正确访问到健康检测端点。

SpringCloud--注册中心Eureka的更多相关文章

  1. SpringCloud注册中心(Eureka)

    注册中心的作用就是用来方便接口暴露出来的一个管理工具,如果所有的接口只是暴露出来,没有一个同一的管理工具,又有谁知道你暴露了哪些接口了,Eureka是一个springcloud的服务注册和发现模块 搭 ...

  2. springcloud注册中心Eureka<英 [juəˈri:kə]>的基本搭建

    1.http://start.spring.io搭建基本的springboot环境,版本用的是1.5.10 2.在pom文件中添加注册中心的jar包和springcloud的jar包 <!-- ...

  3. springcloud注册中心eureka

    1.前提 springcloud的注册中心是以springboot为基础搭建起来的. 开发工具:IDEA 项目管理工具:maven 2.搭建步骤 创建一个web项目(建议使用IDEA工具构建项目) 修 ...

  4. 跟我学SpringCloud | 第二篇:注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  5. springcloud入门系列(二):注册中心Eureka

    搭建注册中心Eureka 1.pom中依赖 <dependencies> <dependency> <groupId>org.springframework.clo ...

  6. SpringCloud(四):服务注册中心Eureka Eureka高可用集群搭建 Eureka自我保护机制

    第四章:服务注册中心 Eureka 4-1. Eureka 注册中心高可用集群概述在微服务架构的这种分布式系统中,我们要充分考虑各个微服务组件的高可用性 问题,不能有单点故障,由于注册中心 eurek ...

  7. 【Docker】(5)---springCloud注册中心打包Docker镜像

    [Docker](5)---springCloud注册中心打包Docker镜像 上一篇文章讲了将镜像推送到远处私有仓库,然后再从私有仓库拉取该镜像的过程.而这里的镜像是直接从Docker拉取的. 所以 ...

  8. IDEA快速搭建 SpringCloud 注册中心与

    第一步:创建 注册中心(eureka)项目 按照以下步骤一步一步来(只是对于IDEA的初学者来说) (我这里选择maven项目.比较方便) 给注册中心项目 取上可爱的名称 第二步配置 eureka的p ...

  9. 孰能巧用 Spring Cloud 服务注册中心Eureka

    Eureka介绍 在Spring Cloud Netflix 整合技术栈中,Eureka既可以作为服务注册中心也可以用于服务发现对整个微服务架构起着最核心的整合作用. Eureka是基于REST(Re ...

  10. spring cloud 注册中心--eureka注册与发现

    本文详细介绍spring cloud微服务的默认注册中心--eureka注册与发现.开发环境需要Windows系统.jdk和intellij idea.与zookeeper注册中心相比,eureka不 ...

随机推荐

  1. inline函数出现 undefined reference 错误

    原因:你把inline函数的implementation放到cpp文件里肯定要报这个错误 正确的做法:把inline函数的声明和实现都放到header里,例如 // declaration: retu ...

  2. jdom 读取

    读取XML文档 读取文档,首先需要一个xml的解析器,它可以自动的解析出各个元素,并且把子元素作为自己的孩子节点,方便操作. 主要使用的函数: SAXBuilder.build("xxx.x ...

  3. FreeRTOS 中断优先级配置(重要)

    以下转载自安富莱电子: http://forum.armfly.com/forum.php NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断 ...

  4. 分享8个常用的jQuery焦点图插件

    现在web网页jquery应用越来越广泛,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多初学者只需稍微 ...

  5. SpringMVC请求后台地址URL没有.*的几种实现方式

    今天做项目,由于项目是通过扫二维码进入,二维码存放的地址不希望有 .do,而是http:xxxx:8080/xxx/yyy/zzz的格式(zzz为参数),但是项目其它请求url后面都必须要有.do,想 ...

  6. 微信小程序 - toptip效果

    在Page顶部下滑一个提示条 , 代码见 /mixins/UIComponent.js ,其中的self 可以认为是微信小程序的Page对象 效果: 默认2秒展示,上移动画隐藏 /** * 展示顶部 ...

  7. CRC16

    http://www.stmcu.org/chudonganjin/blog/12-08/230184_515e6.html 1.循环校验码(CRC码): 是数据通信领域中最常用的一种差错校验码,其特 ...

  8. JAVASCRIPT+DHTML实现表格拖动

    自已做的,本来想在网上找前辈们做的,可是总找不到这种例子,要么找出来的太复杂, 要么就没法用,索性自己写了一个.看看还可以用!贡献出来,估计和我一样的菜鸟用的着! <html> <s ...

  9. Hadoop源码分析之数据节点的握手,注册,上报数据块和心跳

    转自:http://www.it165.net/admin/html/201402/2382.html 在上一篇文章Hadoop源码分析之DataNode的启动与停止中分析了DataNode节点的启动 ...

  10. Oracle字符串分割Split(超简单一条sql解决)

    ) FROM renyuan where name ='张三' 解决如下问题 我现在有一个字段是存:,,3的,而它对应另一张值集表中.eg; 课程人员表 renyuan id name Course ...