spring cloud eureka

cloud已经使用许久,今天想系统的复习一下cloud系列。from eureka!

本文中所有的斜体,表示需要替换的值。所有的源码,删除info日志。

整体架构

首先,让我们来看一下Eureka的架构图:


Eureka的架构图

如图,为3个区域(Regin)的服务。而在每一个区域(Region)内,有多个可用区(Availability Zone),一个可用区多个Eureka组成。而这些Eureka共同构成了Eureka集群。
其中,Producer用来提供微服务,Customer用来消费微服务。在一般的企业架构中,你可以理解为Customer调用Producer就好比Controller调用Service层一样。而Customer在实际中,对应一些可以直接向页面提供接口的web层,和一些运行调度的服务层。比如我司现在的层级调用为:

web层—调用—>facade层(EurekaClient)—指向—>Service层(该层操作数据库)。

Customer调用Producer是通过spring.application.name属性来进行调用的。

Producer默认会每隔30s发起一次心跳,然后进行更新注册列表信息,续约等操作。

而区域之间的Eureka Server、可用区内的Eureka Server都是会进行信息复制的。确保如果有一个注册中心挂掉了,其他的注册中心上的注册列表也是可用的。
ps:Eureka支持AP,即可用性和分区容错性,而当下互联网对于各个微服务的首先保证是服务的可用。ZK是支持CP(一致性和分区容错性,要求过于严格,适用于对数据一致性要求高的行业)。

Eureka Client

Client功能和源码分析链接:

Eureka Server

Server功能和源码分析链接:

进阶应用


错误部分

spring cloud eureka搭建时:
错误一为:

DiscoveryClient_ADMIN-SERVER/192.168.1.10 was unable to refresh its cache! status = Cannot execute request on any known server

或者错误为:

ERROR DiscoveryClient-<你的主机IP>- was unable to send heartbeat! 

解决:
第一步:配置host文件(如果配置用localhost,可以忽略这一步)

127.0.0.1  eureka-service admin-server admin-client admin-client2

其中eureka-service是你定义的spring.application.name的值。
第二步:
在client启动类上添加@EnableEurekaClient注解,在server上添加@EnableEurekaServer注解。
第三步:
在server端添加如下配置,让server不注册自己,不会自己从自己身上获取信息列表:

eureka:
  client:
     register-with-eureka: false
     fetch-registry: false

你可能感兴趣的:(spring cloud eureka)