SpringCloud学习(3)——Eureka服务注册中心及服务发现

Eureka概述

Eureka是Netflix的一个子模块, 也是核心模块之一。Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务框架来说非常重要, 有了服务注册和发现, 只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于Dubbo的注册中心, 比如Zookeeper。

Eureka架构

Eureka采用C-S设计架构。Eureka Server作为服务注册功能的服务器, 它是服务中策中心。而系统中的其他微服务, 使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中的各个微服务是否正常运行。

Eureka中包含两个组件, Eureka Server和Eureka Client

Eureka Server提供注册服务,各个节点启动后, 会在Eureka Server中进行注册, 这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息, 服务节点的信息可以在界面中直接观看到。

Eureka Client是一个java客户端, 用于简化Eureka Server的交互, 客户端同时也具备一个内置的、使用轮询负载算法的负载均衡器。在应用启动后, 将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期中没有收到某个节点的心跳, 将会从服务注册表中将此服务节点移除(默认90秒)。

 

创建服务注册中心:microservicecloudeureka7001

在启动类中必须添加@EnableEurekaServer, 启动注册中心, 接受其他服务注册进来

测试是否启动成功: 在浏览器中输入localhost:7001 出现如下图的图标页面说明启动成功

 

 

修改服务提供工程:microservicecloudproviderdept8001

在启动类中必须添加@EnableEurekaClient, 启动服务客户端,向注册中心注册

pom.xml中添加Eureka客户端依赖

在application.yml中添加Eureka配置

配置微服务名称

修改入驻Eureka中的别名id:

修改访问名称有IP信息提示:

修改前:

 

修改后:

修改微服务info内容详细信息:

 

在客户端pom.xml中添加依赖

在总工程pom中添加检索插件:

 

在客户端application.yml中添加info内容详细信息:

 

结果:

Eureka自我保护机制

某一时刻某一服务不可用, Eureka不会立即清理,依旧会对该服务的信息进行保存。

在自我保护模式中, Eureka Server会保护服务注册表中的信息, 不再注销任何服务实例。当它收到的心跳数重新恢复到阈值以上时, 该Eureka Server节点就会自动退出自我保护模式。它的设计思想是: 宁可保留错误的服务注册信息, 也不盲目的注销任何可能健康的服务实例。使用自我保护模式可以使Eureka集群更加健壮。稳定。

在SpringCloud中可以使用eureka.server.enable-self-preservation=false禁用自我保护模式。

因为长时间没有任何操作, Erueka Server自动启动自我保护模式。

服务发现

添加服务发现接口:

在启动类中添加@EnableDiscoveryClient启动服务发现注解。

测试:http://localhos:8001/dept/discovery

修改微服务消费客户端服务发现:microservicecloudconsumerdept80

添加远程调用服务发现接口:

 

集群搭建

创建microservicecloudeureka7002

创建microservicecloudeureka7003

修改启动类名称。

因为只有一台机器, 所以得做一下映射: 修改C:\Windows\System32\drivers\etc目录下hosts文件

 

修改配置文件: 

microservicecloudeureka7001

microservicecloudeureka7002

 

microservicecloudeureka7003

microservicecloudproviderdept8001

测试是否搭建成功: 在浏览器重输入http://eureka7001.com:7001/是否显示如下信息

 

其他节点测试同上。

 

Eureka和Zookeeper的区别

传统的关系型数据库遵循ACID(A:原子性, C:一致性, I:独立性, D:持久性)

非关系型数据库遵循CAP三选二原则(C:强制一致性, A:可用性, P:分区容错性)

Eureka遵循AP原则

Zookeeper遵循CP原则

Eureka可以很好的应对因网络故障导致部分节点失去联系的情况, 而不会像Zookeeper那样使整个注册服务瘫痪。

 

GitHub源码

https://github.com/wcd19901010/microservicecloud

 

posted @ 2018-06-12 17:14  Chinda  阅读(943)  评论(0编辑  收藏  举报