说到SpringCloud,我们来看一下权威的解释:
SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。SpringCloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
来源百度百科
下面我们来看一下官网的架构图

从这个里面我们可以看到SpringCloud的一些核心组件,当然现在SpringCloud已经拥有一个非常强大的体系,具体内容可以访问官网这里面是官方提供的入门教程,可以根据自己的需要学习相关的内容。下面我们就从上面的图中,来介绍SpringCloud的核心组件。

注册与发现 Eureka,Consul,Zookeeper

负载均衡 Ribbon

Api网关 Zuul,Gateway

Rest调用 Feign

容错处理 hystrix

统一管理配置 Config

服务跟踪 Sleuth

我们先来说一下,服务的注册与发现:Eureka,在上面的架构图中我们可以看到,位于右上角的service registry。同类型的还有:
Consul,Zookeeper,都可以用来做服务的注册中心。
Double 中就是使用Zookeeper来做注册中心。

consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。
参考 https://www.cnblogs.com/cuishuai/p/8194345.html

本篇中我们主要讲Eureka。Eureka,分为客户端和服务端。在我们创建微服务的时候,我们首先要创建一个服务端,用来注册我们的子服务即客户端。
熟悉一个技术的最好方式就是了解它的原理,然后再自己实践。当然也可以先应用出来,之后在慢慢的去了解它的原理,及实现方法。本文采用的是第一种方法。
还是从官网上找它的架构图 官网地址

这个图从上而下,首先看到us-east-1c、us-east-1d、us-east-1e这些代表了一个可用区。简单举个栗子,假设Eureka Server集群下面的分布情况是这样的:

"北京集群中心"是一个区域,北京市内的机房A和B为可用区(对应官网图片中的us-east-1c、us-east1-d、us-east-1e)。区域(Region)和可用区(Zone或者Availability Zone)均是AWS的概念。在非AWS环境下,我们可以简单地将region理解为Eureka某个地区的集群中心,zone理解成该区域的每个机房。每个区域是通过外网链接,所以速度、稳定性上不能保证。而每个可用区之间一般是内网直连,保证速度。想更多了解AWS概念的可以查看
回到官网的图片可以看出在这个体系中有2个主体:Eureka Server和Eureka Client.。
Eureka Server:
提供服务注册:各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息(例如服务信息和网络信息),Eureka Server会存储该服务的信息。

提供服务信息:服务消费者在调用服务时,本地Eureka Client没有的情况下,会到Eureka Server拉去信息。

提供服务管理:通过Eureka Client的Cancel、心跳监控、renew等方式来维护该服务提供的信息以确保该服务可用以及服务的更新。

信息同步:每个Eureka Server同时也是Eureka Client,多个Eureka Server之间通过P2P复制的方式完成服务注册表的同步。同步时,被同步信息不会同步出去,也就是说有3个Eureka Server,Server1有新的服务信息时,同步到Server2后,Server2和Server3同步时,Server2不会把从Server1那里同步到的信息同步给Server3,只能由Server1自己同步给Server3。

每个可用区有一个Euerka集群,并且每个可用区至少有一个Eureka服务器来处理区内的故障。为了实现高可用,一般一个可用区中由三个Eureka Server组成。

Eureka Client

Eureka Client 是一个java客户端,用于简化与Eureka Server的交互。并且管理当前微服务,同时为当前的微服务提供服务提供者信息。

Eureka Clien会拉去、更新和缓存Eureka Server中的信息。即使所有的Eureka Server节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

Eureka Client在微服务启动后,会周期性得向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认90秒)

Eureka Client包含服务提供者Application Service和服务消费者Application Client
Application Service:服务提供者,提供服务给别个调用
Application Client:服务消费者,调用别个提供的服务

往往大多数服务本身即使服务提供者,也是服务消费者。

下面我们来看一个Eureka服务的调用图

在Eureka Client启动的时候,将自身的服务信息发送到Eureka Server.然后进行2调用当前服务器节点中的其他服务信息,保存到EurekaClient中。当服务间相互调用其它服务时,在Eureka Client中获取服务信息(如服务地址,端口等)后,进行第3步,根据信息直接调用服务。(ps:服务的调用通过http(s)调用)

当某个服务仅需要调用其他服务,自身不提供服务调用时。在EurekaClient启动后会拉取Eureka Server的其他服务信息,需要调用时,在Eureka Client的本地缓存中获取信息,调用服务。

Eureka Client通过向Eureka Serve发送心跳(默认30秒)来续约服务。如果客户端持续不能续约,那么,它将在大约90秒内从服务器注册表中删除。注册信息和续约被复制到集群中的Eureka Server所有节点。以此来确保当前服务还“活着”,可以被调用。

来自任何区域的Eureka Client都可以查找注册表信息(每30秒发生一次),以此来确保调用到的服务是“活的”。并且当某个服务被更新活着新加进来,也可以调用到新的服务。

了解了以上一些基础的概念和原理,对于Eureka的运行情况以及Eureka配置的理解就相对容易多了。之后附上一个转载来的Eureka参数配置项详解:http://www.jianshu.com/p/98f4e5f6bca7

下面我们来看一下Eureka的基本使用
Eureka主要包含两个组件EurekaServer和EurekaClient,下图显示EurekaServer和EurekaClient的关系

其中,ServiceProvider是服务提供方,需要将自己注册到Eureka,从而使服务消费方能够找到,ServiceConsumer为服务消费方,从Eureka获取注册服务列表
1.添加依赖

<!--eureka-server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

2.在启动类添加注解:

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

3.在application.yml中进行参数配置

eureka:instance:hostname: eureka7002.com #eureka服务端的实例名称client:register-with-eureka: false    #false表示不向注册中心注册自己。fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:#集群指向其它eurekadefaultZone: http://localhost:7001/eureka/#单机就是7001自己#defaultZone: http://eureka7001.com:7001/eureka/#server:#关闭自我保护机制,保证不可用服务被及时踢除#enable-self-preservation: false
server:port: 7002

EurekaClient:
1.添加依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.在主启动类上添加注解:
@EnableEurekaClient或者@EnableDiscoveryClient

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

3.配置application.yml

spring:application:name: cloud-order-service
server:port: 90
eureka:client:#表示是否将自己注册进EurekaServer默认为true。register-with-eureka: true#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡fetchRegistry: trueservice-url:#单机版#defaultZone: http://localhost:7001/eureka# 集群版defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka

下篇将介绍服务的调用与负载均衡,欢迎大家留言讨论。。。

详解SpringCloud-Eureka(一)相关推荐

  1. 微服务实践之通信(OpenFeign)详解-SpringCloud(2021.0.x)-6

    [版权申明] 非商业目的注明出处可自由转载 出自:shusheng007 首发于:shusheng007.top 文章目录 概述 OpenFeign简介 基本使用 新建provider与consume ...

  2. 详解springcloud微服务技术栈(一)

    1.微服务技术栈 2.认识微服务 2.1.微服务架构演变 2.2.springcloud(Spring Cloud) SpringCloud和SpringBoot的版本兼容关系如下: 2.3.微服务拆 ...

  3. 详解SpringCloud中RabbitMQ消息队列原理及配置,一篇就够!

    作者:kosamino cnblogs.com/jing99/p/11679426.html 一.MQ用途 1.同步变异步消息 场景:用户下单完成后,发送邮件和短信通知. 运用消息队列之后,用户下单完 ...

  4. Spring Cloud Eureka 配置原理详解

    导语:   首先对于Eureka注册中心默认大家都有所了解,这篇博客主要就是来通过Eureka的配置源码来了解一下关于Eureka配置中心都有那些详细的配置内容.对于Eureka 客户端的配置主要分为 ...

  5. SpringCloud Alibaba 详解

    SpringCloud Alibaba 基础详解 SpringCloud Alibaba 概念 SpringCloud Alibaba配置及使用 SpringCloud Alibaba Nacos服务 ...

  6. eureka-server详解

    注册中心 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCloud将它集 ...

  7. 89-Spring Cloud 微服务详解

    Spring Cloud 微服务详解 微服务架构: 在说明该架构之前,再次的说明互联网应用架构演进(虽然之前说明过了) 随着互联网的发展,用户群体逐渐扩大,网站的流量成倍增长,常规的单体架构已无法满足 ...

  8. 微服务之SpringCloud实战(五):SpringCloud Eureka详解

    Eureka详解 在第三节高可用中,实际已经讲解了服务的注册,只不过注册的是Eureka本身,原理相同,通过这几篇文章我相信大家对Eureka有了一定的了解,三个核心角色:服务注册中心.服务提供者和服 ...

  9. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  10. Spring Cloud Eureka 入门 (二)服务提供者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "优秀不是过 ...

最新文章

  1. jstl c:choose、c:when和c:otherwise标签
  2. 【微软公有云系列】(七)SCVMM模板--Windows server 2012 虚拟机模板
  3. mysql 4 基础教程_MySQL基础教程(四):MySQL 管理
  4. 邻接表建立图(c语言)
  5. 201621123053 张雨阳软工作业2
  6. Linux命令之初出茅庐
  7. ExtJs UI框架学习六
  8. 便宜的手机图传遥控模块
  9. 如今在农村做生意,为啥越来越难了?
  10. Python与开源GIS:在OGR中使用SQL语句进行查询
  11. 2.7配置自定义的Formatters
  12. 实时即未来!Flink Forward Asia 2021 议程正式上线!
  13. webmagic模拟登陆获取cookie_Python3爬虫:selenium模拟登录获取cookie提取数据,存入数据库MySQL...
  14. 经典CNN之:VGGNet
  15. 简明Python3教程 1.翻译
  16. 技术宅改变世界 如何在12306买到下铺
  17. EXCEL 图表-双坐标轴
  18. 【区块链扩容】侧链技术 Plasma(Layer 2)
  19. Profinet协议解析-过程数据
  20. 2020下半年软考中级(系统集成项目管理工程师)(个人备考用)

热门文章

  1. 分布式数据中心交换机(DC switches)详解,全面解析现代网络架构!
  2. 装了VMware虚拟机之后,出现的两个网卡vmware1和vmware8
  3. samba 服务安装及原理介绍
  4. cocos2d-x下实现spine骨骼动画皮肤合成功能(局部换皮)
  5. 千兆网络变压器工作原理
  6. LTE: BSR, buffer状态上报
  7. tableau prep处理数据简介
  8. python——网络爬虫快速入门【数据提取篇】
  9. 管仲、鲍叔、小白、公子纠的爱恨情仇,这是一篇考场上的零分作文,却是职场上的满分作文!
  10. kompose:把docker-compose转化成k8s部署