目录
前言:
对于代码中,我们只要使用
@EnableEurekaServer
就可以完成一个eureka的模块搭建。
并且使用两个eureka怎么用?
backupRegistryServer: eureka-server2
eureka:
instance:
hostname: eureka-server1
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${backupRegistryServer}:${server.port}/eureka/
1. eureka
1.1什么是服务治理?
因为在传统的RPC远程调用的框架中,管理每个服务于服务质检的依赖比较复杂,管理比较复杂,所以需要用到服务治理。
管理服务之间的依赖关系,实现服务的调用,负载均衡,容错等,实现服务的注册和发现。
1.2 什么是服务的注册和发现?
eureka是采用了CS的设计架构,eureka作为服务注册功能的服务器,他是服务的注册中心。
其他的微服务,是通过eureka的客户端,连接到Eureka server并维持心跳连接。
这样服务的运维人员就可以通过eureka的server来查看是否各种服务都正常运行。
为了避免单点故障,都配置多个。
在服务的注册和发现中,有一个注册中心,当服务器启动的时候,会把自己当前的服务器的信息 比如服务器的通讯地址等以别名的形式,注册到注册中心上。
其实对于RPC远程调用框架中,都会有一个注册中心 存放服务地址相关信息 (接口地址)
1.3 关于心跳
server提供服务注册服务,那么对于客户端,是一个java客户端,简化交互,具备了一个内置的使用轮询的负载均衡器。
在应用启动之后,向eureka server发送心跳,默认周期为30秒。如果server在多个心跳周期中没有接受到节点的心跳,那么EurekaServer会会从服务的注册表中,把这个节点移除,90S。
1.4 关于消费者消费过程
消费消费的时候,会获取服务地址之后,缓存在本地的JVM内存中,默认每30S更新一次服务调用地址。
1.5 关于Eureka的集群
相互注册,相互守望。
两个eureka相互注册进去。
集群版对于客户端来说,defaultZone需要注册多个地址Eureka。
对于客户端来说呢,做多节点的话,对外暴露的serverId是一个名字,其他端口是不同的。
1.6 actuator
actuator | 英[ˈæktjʊeɪtə] |
1.7 保护模式
一组客户端和Eureka Server之间存在网络分区的场景下的保护。
一旦进入保护模式,Eureka将会尝试保护服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
某时刻:某一个微服务不可用了,Eureka不会立刻清除,依然会保存其中的信息。(比如因为网络延迟,什么的不能心跳了不会立刻删除。)
所以属于CAP中的AP
Eureka如果一段时间内丢失大量的客户端的心跳,可能发生了网络分区的故障,那么这个节点进入保护模式。
1.8 Eurka 保证 AP
Eureka Server 各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而 Eureka Client 在向某个 Eureka 注册时,如果发现连接失败,则会自动切换至其它节点。只要有一台 Eureka Server 还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。