关于 Eureka 的学习笔记


个人博客地址 : https://zggdczfr.cn/ ,欢迎光临~


前言

Eureka是Netflix开发的服务发现组件,本身是一个基于REST的服务。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。
在Spring Cloud中,将会使用 Eureka 作为发现服务,所以了解 Eureka 是非常重要的。因此做了一下翻译以及学习笔记记录。
Eureka的Github:https://github.com/Netflix/Eureka

Eureka 笔记

什么是 Eureka?

Eureka 是基于 REST(Representational State Transfer)服务。主要用于AWS云中的定位/发现服务,从而实现对于中间层服务器的负载均衡(Load Balance)和故障切换(failover)。
同时,Eureka 还提供了一个基于JAVA的客户端组件(Eurake Client),便于与Eureka Server进行交互。在客户端中,同样内置了负载均衡,用于执行基本的负载均衡轮询制度。
而 Netflix 将它们集合成一个更加负载的负载均衡器,通过对流量、资源使用等因素,提供了更加合理的加权负载均衡策略服务。Eureka 具有心跳检测、健康检查和客户端缓存等多种机制提高了服务系统的灵活性。

什么是AWS云?

对于AWS云,可以参考一下这篇博文 http://blog.csdn.net/awschina/article/details/17639191
感觉 Eureka 就是为了提供对于 AWS云服务 的补充(中间层负载均衡)。

什么是中间层(Middle Tier)?

上面老是提到了中间层(Middle Tier)。中间层 (Middle Tier)也称作“应用程序服务器层或应用服务层”,是用户接口或 Web 客户端与数据库之间的逻辑层。典型情况下 Web 服务器位于该层,业务对象在此实例化。(来源于百度百科)

Eureka 目的/优点

  • 中间层的负载均衡
  • 使用 Netflix 的红/黑部署(red/black deployments),使开发者更加容易实现云部署
  • 对于 cassandra deployments,方便于对实例化后的对象维护
  • 利用 memcached 提供缓存服务(Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。)。
  • 可配置性/动态配置。使用Eureka,可以即时添加或删除群集节点;Eureka使用archaius(Netflix开源的配置管理类):如果你有一个配置源实现,这些配置可以进行动态调整应用。

Eureka 最大的特性

Eureka 集群服务具有极大的”弹性”(Resilience)。这个是我认为它最大的特点。
* Eureka Client 处理一个或多个Eureka服务器的故障。 由于 Eureka Client 在其中具有注册表缓存信息,因此即使所有 Eureka Servers 都关闭,它们还是可以很好地运行。
* Eureka Servers 即使在其他 Eureka 挂了也具有极大的”弹性”。既是是在 Client 与 Server 的网络分裂(network partition)期间,Eureka Server 具有的内部弹性特性也能防止大规模服务中断。

Eureka Server 与 Client 之间的通信

Eureka 只是找到有关客户端与之通信的服务器的信息,但不对通信的协议或方法施加任何限制。通常情况下,我们可以使用 Eureka 获取目标服务器地址,并使用thrift,http(s)或任何其他RPC机制等协议来进行交互通信。

Eureka 架构


上图为 Eureka 官方架构图。
接下来,对其中的名词进行解释:

  • Application Service 相当于服务提供者
  • Application Client 相当于服务消费者
  • Make Remote Call,其实就是实现服务的使用
  • us-east-1 其实实现了Eurake 集群服务
  • us-east-1c、us-east-1d、us-east-1e 就是集群服务中的某个具体实现区域(感觉找不到一个合适的词来解释这种抽象的概念)

Eureka 架构机制
我们的 Eureka 集群服务其实就是靠 Server 与 Client 之间的交互来实现的。
1. 前面说过,Eureka Server 具有服务定位/发现的能力,在各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息(例如网络信息)。
2. 一般情况下,微服务启动后,Eureka Client 会周期性向 Eureka Server 发送心跳检测(默认周期为30秒)以注册/更新自己的信息。
3. 如果 Eureka Server 在一定时间内(默认90秒)没有收到 Eureka Client 的心跳检测,就会注销掉该微服务点。
4. 同时,Eureka Server 它本身也是 Eureka Client,多个 Eureka Server 通过复制注册表的方法来完成服务注册表的同步从而达到集群的效果

spring cloud 学习(二)关于 Eureka 的学习笔记的更多相关文章

  1. Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】

    Spring Cloud(二):服务注册与发现 Eureka[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  上一篇主要介绍了相关理论,这一篇开始我们 ...

  2. Spring Cloud(二):Eureka 服务注册中心

    前言 服务治理 随着业务的发展,微服务应用也随之增加,这些服务的管理和治理会越来越难,并且集群规模.服务位置.服务命名都会发生变化,手动维护的方式极易发生错误或是命名冲突等问题.而服务治理正是为了解决 ...

  3. (转)Spring Cloud(二)

    (二期)23.微服务框架spring cloud(二) [课程23]熔断器-Hystrix.xmind0.1MB [课程23]微服务...zuul.xmind0.2MB 熔断器-Hystrix 雪崩效 ...

  4. spring cloud 服务注册中心eureka高可用集群搭建

    spring cloud 服务注册中心eureka高可用集群搭建 一,准备工作 eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心 1 本文三台eu ...

  5. spring cloud: zuul(二): zuul的serviceId/service-id配置(微网关)

    spring cloud: zuul(二): zuul的serviceId/service-id配置(微网关) zuul: routes: #路由配置表示 myroute1: #路由名一 path: ...

  6. spring cloud 2.x版本 Eureka Server服务注册中心教程

    本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 1.创建服务注册中心 1.1 新建Spring boot工程:eureka-server 1 ...

  7. spring cloud 2.x版本 Eureka Client服务提供者教程

    本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 1 创建eureka client 1.1 新建Srping boot工程:eureka-c ...

  8. spring Cloud服务注册中心Eureka集群

    spring Cloud服务注册中心Eureka集群配置: 在application.yml文件加以下配置: server: port: 8761 tomcat: uri-encoding: UTF- ...

  9. 二、Spring Cloud之注册中心 Eureka

    前言 算是正式开始学习 spring cloud 的项目知识了,大概的知道Springcloud 是由众多的微服务组成的,所以我们现在一个一个的来学习吧. 注册中心,在微服务中算是核心了.所有的服务都 ...

随机推荐

  1. spring mvc @ModelAttribute 每次执行requestmapping前自动执行

    在不少应用场景中,我们希望在每次执行requestmapping前自动执行一些操作,比如把某些数据(比如数据字典.系统配置.标准错误号,这在企业应用系统中极为常见)塞到model中供view访问,因为 ...

  2. nodejs 导出 exel文件 xlsx

    参考: https://www.npmjs.com/package/node-xlsx Building a xlsx import xlsx from 'node-xlsx'; // Or var ...

  3. 20165211 2017-2018-2 《Java程序设计》第5周学习总结

    20165211 2017-2018-2 <Java程序设计>第5周学习总结 教材学习内容总结 本周,我学习了书本上第五.六两章的内容,以下是我整理的主要知识. 第五章 内部类与异常类 内 ...

  4. mpvue小程序开发入门级指南

    报错指南 "Error: ERR_GET_SESSION_KEY {"code":5100,"message":"(-1)服务内部错误,请稍 ...

  5. 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]

    MyEclipse出现下面两条报错: The project cannot be built until build path errors are resolved HelloWord Unknow ...

  6. opencv-python 学习初探2 去图片水印

    我要去除的水印是红色的.网上已经有很不错的帖子,我就不贴自己的代码了.留个指路自己以后查资料. 大概的思路就是用颜色拾取工具,拾取水印颜色,分析了图片,找到规律.比如我的图片水印是红色的,红色差不多g ...

  7. Leetcode——Target Sum

    Question You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you ha ...

  8. python 插入查找

    def interpolation_search(data,val): low= high=len(data)- print('查找过程中......') : mid=low+int((val-dat ...

  9. c++ primer plus 第三章 课后题答案

    #include<iostream> using namespace std; int main() { ; int shen_gao; cout <<"Please ...

  10. Java实现冒泡排序算法

    一.基本思路: 冒泡排序是一种简单的交换类排序.其基本思路是,从头开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将关键字值大的元素后移.每经过 一趟排序后,关键字值最大的元素将移到末尾,此 ...