spring cloud 学习(二)关于 Eureka 的学习笔记
关于 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 的学习笔记的更多相关文章
- Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】
Spring Cloud(二):服务注册与发现 Eureka[Finchley 版] 发表于 2018-04-15 | 更新于 2018-05-07 | 上一篇主要介绍了相关理论,这一篇开始我们 ...
- Spring Cloud(二):Eureka 服务注册中心
前言 服务治理 随着业务的发展,微服务应用也随之增加,这些服务的管理和治理会越来越难,并且集群规模.服务位置.服务命名都会发生变化,手动维护的方式极易发生错误或是命名冲突等问题.而服务治理正是为了解决 ...
- (转)Spring Cloud(二)
(二期)23.微服务框架spring cloud(二) [课程23]熔断器-Hystrix.xmind0.1MB [课程23]微服务...zuul.xmind0.2MB 熔断器-Hystrix 雪崩效 ...
- spring cloud 服务注册中心eureka高可用集群搭建
spring cloud 服务注册中心eureka高可用集群搭建 一,准备工作 eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心 1 本文三台eu ...
- spring cloud: zuul(二): zuul的serviceId/service-id配置(微网关)
spring cloud: zuul(二): zuul的serviceId/service-id配置(微网关) zuul: routes: #路由配置表示 myroute1: #路由名一 path: ...
- spring cloud 2.x版本 Eureka Server服务注册中心教程
本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 1.创建服务注册中心 1.1 新建Spring boot工程:eureka-server 1 ...
- spring cloud 2.x版本 Eureka Client服务提供者教程
本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 1 创建eureka client 1.1 新建Srping boot工程:eureka-c ...
- spring Cloud服务注册中心Eureka集群
spring Cloud服务注册中心Eureka集群配置: 在application.yml文件加以下配置: server: port: 8761 tomcat: uri-encoding: UTF- ...
- 二、Spring Cloud之注册中心 Eureka
前言 算是正式开始学习 spring cloud 的项目知识了,大概的知道Springcloud 是由众多的微服务组成的,所以我们现在一个一个的来学习吧. 注册中心,在微服务中算是核心了.所有的服务都 ...
随机推荐
- php 设置模式 单元素模式(单例模式或单件模式)
单元素模式: 某些应用程序资源是独占的,因为有且只有一个此类型的资源.应用程序每次包含且仅包含一个对象,那么这个对象就是一个单元素.指的是在应用程序的范围内只对指定的类创建一个实例.通常该模式中包含一 ...
- 20145304 Exp3 免杀原理与实践
20145304 Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 检验特征码,包含特征码的代码会被杀软认为是恶意代码,例如一些常用恶意代码加壳后就有一个固定的代码会被认为是 ...
- 20135234mqy-——信息安全系统设计基础第二周学习总结
Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数 选项(options)或参数(argument ...
- jQuery 源码分析:当 selector 传来一个函数时,怎么进行处理?
本文章为 0.9 版本,将会在稍后润色更新.本文使用的 jQuery 版本为 3.4.0 我们知道使用 $ 操作符时,可以往里面塞很多类型的参数,字符串,对象,函数...,jQuery 会根据不同的参 ...
- 本地连接VM virtualBox ubuntu16.04 中的Mysql数据库
1.打开mysql配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = 127.0.0.1注销 2.重启ubuntu数据库 3. ...
- Shell变量知识进阶
一,Shell中特殊且重要的变量 $0结合dirname和basename分别取出脚本名称和脚本路径 [root@192-168-3-163 scripts]# cat test.sh #!/bin/ ...
- 【第二十七章】 springboot + zipkin(brave-okhttp实现)
本文截取自:http://blog.csdn.net/liaokailin/article/details/52077620 一.前提 1.zipkin基本知识:附8 zipkin 2.启动zipki ...
- Unity3D学习笔记(十一):布料和协程
延迟函数:动态资源加载:T:Resources.Load<T>(string path);Assets - Resources,Resources是一个资源管理的工具类,预制体放在Reso ...
- HDU 3065 病毒侵袭持续中(AC自动机(每个模式串出现次数))
http://acm.hdu.edu.cn/showproblem.php?pid=3065 题意:求每个模式串出现的次数. 思路: 不难,把模板修改一下即可. #include<iostrea ...
- UVa 10723 电子人的基因(LCS)
https://vjudge.net/problem/UVA-10723 题意: 输入两个A~Z组成的字符串,找一个最短的串,使得输入的两个串均是它的子序列,另外还需要统计长度最短的串的个数. 思路: ...