一、服务治理参与者

  • 服务注册中心: eureka-server
  • 服务提供者:HELLO-SERVICE
  • 服务消费者 :HELLO-CONSUMER

很多时候,客户端既是服务提供者又是服务消费者,-》@EnableDiscoveryClient。

服务提供者和服务消费者都是Eureka的客户端,是大部分通信行为的主动发起者。

二、各参与者之间的交互模式

Application-Service --(注册、续约、下线)--》Eureka-Server

Application-Service --(获取registry)--》Eureka-Server

Application-Client --(获取registry)----》Eureka - Server

Application-Client --(本地负载均衡下的远程调用)----》Application - Service

Eureka-Server1 --(复制) --》 Eureka-Server2 --(复制) --》 Eureka-Server3 --(复制) --》  Eureka-ServerN

三、流程描述

1、服务提供者

1.1、服务注册

服务提供者 启动时发送rest请求注册自己到EurekaServer,注册自己的一些元数据。

EurekaServer接收注册内容,放到双层map,第一层的key是服务名,第二层的key是具体服务实例名。

服务提供者:

eureka.client.register-with-eureka=true,默认值为true。否则将不会启动注册操作。

EurekaServer:

1.2、服务同步 - regist

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

1.3、服务续约 - renew

注册完服务之后,服务提供者会维持一个心跳用来告诉EurekaServer:我还在,防止EurekaServer的剔除任务将该服务实例从服务列表中排除出去!

2、服务消费者

2.1、获取服务

启动服务消费者时,服务消费者会发送一个请求给 服务注册中心,来获取上面注册的服务清单。

服务注册中心会每隔30秒更新一次服务缓存清单。

2.2、服务调用

服务消费者获得服务清单后,通过服务名可以获得具体提供服务的实例名和实例元数据信息,可以根据需要决定调用哪个实例。

ribbon中默认采用轮询方式进行调用,从而实现客户端的负载均衡。

2.3、服务下线

服务实例关闭,会触发一个服务下线的rest请求给EurekaServer,告诉服务器,我要下线了!

服务端收到下线请求,将该服务实例状态设置为下线,并传播该下线事件。

3、服务注册中心

3.1、失效剔除

服务实例非正常下线,如:内存溢出、网络断开等原因导致服务实例无法正常工作时,服务注册中心无法按期收到“服务下线“消息请求。

EurekaServer会有一个定时任务,默认每隔一段时间(60秒)从当前清单中剔除没有续约(默认90秒)的服务实例。

3.2、自我保护

EurekaServer统计心跳失败比例,如果15分钟内低于85%,则触发自我保护机制:保存当前实例信息,让这些实例不会过期。

三、其他概念

针对区域性故障的容错集群

一个region 对应多个 zone

微服务应用中使用ribbon调用服务时,会优先访问同客户端处于一个zone的服务实例,只有当同一个zone中没有可用的服务实例时才会访问其他zone中的实例。

SpringCloud的服务注册中心(三) - 进一步了解 Eureka的更多相关文章

  1. springcloud搭建服务注册中心与服务发现

    1.创建服务注册中心 创建一个普通的Spring Boot工程 首先我们需要创建一个普通的Spring Boot工程,命名为eureka-server,普通到什么程度呢?就是一个starter都不需要 ...

  2. SpringCloud + Consul服务注册中心 + gateway网关

    1  启动Consul 2  创建springcloud-consul项目及三个子模块 2.1 数据模块consul-producer 2.2 数据消费模块consul-consumer 2.3 ga ...

  3. SpringCloud之服务注册中心

    1.Eureka 1.1RestTemplate 它提供了多种访问远程http服务的方法,是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集. 1 ...

  4. SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建

    一.双 服务注册注册中心 1.服务注册中心的服务端 - EurekaServer 1.1.EurekaServer1 String.application.name=eureka-server ser ...

  5. SpringCloud的服务注册中心(一)

    一.概念和定义 1.服务治理:服务注册与服务发现 服务注册中心,提供服务治理功能,用来实现各个微服务实例的自动注册与发现. 服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,维护人员就不需 ...

  6. springcloud 笔记-服务注册中心

    1.搭建springcloud服务注册中心需要添加eureka的依赖: <?xml version="1.0" encoding="UTF-8"?> ...

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

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

  8. SpringCloud的服务注册中心(二)注册中心服务端和两个微服务应用客户端

    一.构建EurekaServer工程 1.pom.xml 2.application.yml 3. EurekaServerApp.java 4.启动EurekaServer 二.构建部署 Eurek ...

  9. spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

    在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的, 但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样 ...

随机推荐

  1. Maven打包的三种方式(转)

    Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...

  2. 引用第三方dll引发的问题解决

    引用的程序集错误  如果引用第三方dll,调试出现引用的程序集出现错误,可以下载dependency,查看这个dll的依赖dll,如果本地电脑没有依赖dll或依赖dll出现问题,则下载或取代依赖dll ...

  3. New Windows 10 SDK - Multi-instance UWP apps

    概述 前面一篇 About Windows 10 SDK Preview Build 17110 中,我们简单介绍了 Multi-instance UWP Apps,今天结合开发过程详细讲解一下. 在 ...

  4. 你学会UI设计了吗?

    你学会UI设计了吗? UI设计师如何前驱? 关于产品 作为一个UI设计师,我们还在干巴巴的等着产品经理甚至交互提供的需求和原型再开始动手吗?这样被动的工作是永远无法提升自己的,当然你也永远只能拿到几千 ...

  5. Unity的常用API

    1.Event Function:事件函数   Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧 ...

  6. Linux centos 7 安装NFS服务

    NFS服务简介:NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下.---主要功能指的是共享文件 为什么要安装NF ...

  7. Day3--------------目录文件的浏览、管理及维护

    1.pwd命令功能 2.cd命令功能 cd..      返回上一级 cd~ cd- 返回上一次的目录 cd 3.ls命令功能 ls -a ls -all ls -l 4.cp命令功能 cp -i 覆 ...

  8. 制作Linux登录欢迎界面

    1.登录提示语: 将提示语写入/etc/motd 文件 _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ ...

  9. 配置SecureCRT以SSH公钥方式登录服务器

    为了更方便管理服务器,CRT一个功能非常方便.那就是可以使用私钥认证通过后直接连接,而且对于密码保护比较安全一点. 首先配置ssh Port 32812Protocol 2UseDNS noPubke ...

  10. codeforce round#466(div.2)C. Phone Numbers

    C. Phone Numbers time limit per test2 seconds memory limit per test256 megabytes inputstandard input ...