1. 什么是Eureka
Eureka 是Netflix 的一个子模块, 也是核心模块之一。Eureka 是基于REST 的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移。 服务注册与发现对于微服务架构来说是非常重要的, 有了服务发现与注册, 只需要使用服务的表示符, 就可以访问到服务, 而不需要修改服务调用的配置文件了。 功能类似于dubbo的注册中心比如Zookeeper
2. Eureka 的基本框架
SpringCould 封装了Netflix 公司开发的Eureka模块来实现服务注册和发现
Eureka 采用了C-S 的设计架构。 Eureka Server作为服务注册功能的服务器, 它是服务注册中心. 而系统中的其他微服务, 使用Eureka的客户端连接到EurekaServer来监控系统中各个微服务是否正常运行。SpringCould的一些其他模块(比如Zuul)就可以通过EurekaServer 来发现系统中的其他微服务, 并执行相关的逻辑
3.Eureka Server 和 Eureka Client
Eureka Server :提供服务注册服务, 各个节点启动后, 会在EurekaServer 中进行注册, 这样EurekaServer 中的服务注册表中将会存储所有可能的服务节点的信息, 服务节点的信息可以再界面中直观的看到
EurekaClient是java 的客户端, 使用EurekaServer 的交互, 客户端同时也具备有个内置的, 使用轮询(round——robin)负载算法的负载均衡器。 在应用启动后, 将会向EurekaServer 发送心跳(默认周期为30s)。 如果EurekaServer在多个心跳周期内没有接收到某个节点的心跳, EurekaServer将会从服务注册表中吧这个服务节点移除(默认90s)
4. Eureka 的自我保护
某时刻某一个微服务不可用了, Eureka 不会立即清理, 依旧会对该微服务的信息进行保存
在SpringCloud中 可以使用eureka.server.enable-self-preservation=false 禁用自我保护的模式 (不建议使用)
5. actuator监控信息完善
1. 子工程引入以下jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2. 父工程里面构建
<!-- 子工程使用actuator之后, 在父工程里面进行构建 -->
<build>
<finalName>microservicecloud</finalName>
<resources>
<resource>
<directory>src/main/resources</directory> <!--允许获取所有项目 src/main/resources 目录下的配置文件(yml config。。) -->
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <!-- 解析src/main/resources 这个目录下$开始$结束的配置信息-->
<configuration>
<delimiters>
<delimit>$</delimit>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
3.子工程yml里配置info信息
info:
app.name: jamapro-mircroserviceclound
company.name: www.jamapro.com
build.artifactId: $project.artifactId$
build.version: $project.version$
6.服务发现
@EnableDiscoveryClient
服务端通过@EnableDiscoveryClient将服务端信息暴露给消费者, 消费者可以通过访问来获取服务端的信息。
7.Netflix 在设计Eureka时遵守的就是AP 原则
CAP: NOSQL 数据库 Consistency(强一致性),Availability(可用性),Partition tolerance(分区容错性)
ACID: 传统数据库 Atomicity(原子性),Consistency(一致性),Isolation(独立性),Durability(持久性)
8.Eureka比Zookeeper比较
Zookeeper 保证的是CP, Eureka 则是AP