一、概述java
1.1 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,基于Netflix Eureka作了二次封装,主要负责完成微服务架构中的服务治理功能;json
1.2 Spring Cloud经过为Eureka增长了Spring Boot风格的自动化配置,咱们只须要经过简单引入依赖、注解配置就能让Spring Boot构建的微服务应用轻松地与Eureka服务治理体系进行整合;缓存
1.3 Spring Cloud Eureka包含了服务端组件、客户端组件,而且均采用java编写;架构
Eureka服务端:负载均衡
也称为服务注册中心;框架
同其余服务注册中心同样,支持高可用配置;微服务
在SpringBoot启动类经过@EnableEurekaServer注解启动一个注册中心;spa
Eureka客户端:设计
处理服务注册、服务发现;对象
客户端经过@EnableDiscoveryClient注解和参数配置的方式,嵌入在客户端应用程序的代码中;
在应用程序运行时,Eureka客户端向注册中心(Eureka服务端)注册自身提供的服务并周期性地发送心跳来更新它的服务租约;
Eureka客户端也能从服务端查询当前注册的服务信息并把它们缓存到本地并周期性地刷新服务状态;
二、服务治理:
微服务架构中最为核心、基础的模块;
做用:实现各个微服务实例的自动化注册与发现
为了解决微服务架构中的服务实例维护问题,产生了大量的服务治理框架和产品,这些框架和产品的实现都围绕着服务注册、服务发现机制来完成对微服务应用实例的自动化管理;
1.1 服务注册:
在服务治理框架中,一般会构建一个注册中心,每一个服务单元向注册中心登记本身提供的服务,将主机与端口号、版本号、通讯协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单;
1.2 服务发现:
因为在服务治理框架下运做,服务间的调用再也不经过指定具体的实例地址来实现,而是经过向服务名发起请求调用实现;
服务调用方在调用服务提供方接口的时候,并不知道提供方的服务实例的具体位置,须要向服务注册中心咨询服务,并获取全部服务实例清单,以实现对具体实例的访问;
三、高可用注册中心
1.1 在Eureka的服务治理设计中,全部的节点既是服务提供方,也是服务消费方,服务注册中心也同样;
Eureka Server的高可用实际上就是将本身做为服务向其余服务注册中心注册本身,这样能够造成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果;
1.2 暂搁置
四、服务发现与消费
1.1 服务发现的任务由Eureka的客户端完成;
1.2 服务消费由Ribbon完成;
Ribbon:
一个基于HTTP和TCP的客户端负载均衡器;
经过在客户端中配置的ribbonServerList服务端列表去轮询访问以达到负载均衡的做用;
当Ribbon和Eureka联合使用时,Ribbon的服务实例清单RibbonServerList会被DiscoveryEnableNIWSServerList重写,扩展成从Eureka注册中心获取服务端列表,同时也会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来肯定服务端是否已经启动;
五、Eureka详解
1.1 基础架构
服务注册中心:
EurekaServer
服务提供者:
提供服务的应用,能够是Spring boot应用,也能够是其余技术平台(遵循Eureka通讯机制的应用);
服务消费者:
消费者应用从服务注册中心获取服务列表,从而使消费者能够知道去哪调用其须要的服务;
1.2 通讯机制
Eureka采用了 与平台无关性的 基于HTTP的Rest接口;
默认状况下,Eureka使用Jersey、XStream配合json做为Server与Client之间的通讯协议:
Jersey:JAX-RS的参考实现;
JAX-RS:
java EE6引入的新技术,即java API for Restful Web Services;
XStream:将对象序列化成json、反序列化为对象的一个java类库;