当前项目架构问题分析 -引出 Eureka
1.
在企业级项目中,服务消费访问请求会存在高并发
2.
如果只有一个会员中心(provider)
-
提供服务,可用性差
3.所以,会员中心(provider)提供服务往往是一个集群,也就是说会有多个会员中心-
提供服务微服务
模块
4.
那么这个时候,就存在一个问题就是服务消费方,怎么去发现可以使用的服务
5.
当服务消费方,发现了可以使用的服务后
(
可能是多个,又存在一个问题就是到底调用
A
服务,还是
B
服务的问题,这就引出了服务注册和负载均衡
)
6.Eureka
就可以解决上述问题
Eureka 包含两个组件∶Eureka Server 和 Eureka Client
1.Eureka Server
提供注册服务
,
各个微服务节点通过配置启动后,会在
Eureka Server
中进
行注册,这样
EurekaServer
中的服务注册表中将会存储所有可用服务节点的信息,服务节
点的信息可以在界面中直观看到。
2. EurekaClient
通过注册中心进行访问
,
是一个
Java
客户端,用于简化
Eureka Server
的交
互,客户端同时也具备一个内置的、使用轮询
(round-robin)
负载算法的负载均衡器。
心跳机制:
在应
用启动后,将会向 Eureka Server 发送心跳(默认周期为 30 秒)。如果 Eureka Server 在多个
心跳周期内没有接收到某个节点的心跳,EurekaServer 将会从服务注册表中把个服务节
点移除(默认 90 秒)
服务注册和发现
--系统中的其他微服务,使用
Eureka
的客户端连接到
Eureka Server
并维持心跳连接,
通过
Eureka Server
来监控系统中各个微服务是否正常运行。
--
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器
的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。
--
服务消费者或者服务提供者,以服务别名的方式去注册中心上获取到实际的服务提供
者通讯地址,然后通过
RPC
调用服务
个人Eureka理解
服务提供者将信息保存到注册中心主要为ip和端口号以后方便供服务消费者灵活调用
服务消费者在需要点用接口时去注册中心获取实际的RPC远程调用地址,得到后会缓存到jvm中每30s更新一次服务调用地址(防止服务提供者down掉)
Eureka 自我保护模式
自我保证机制/模式说明
-
默认情况下
EurekaClient
定时向
EurekaServer
端发送心跳包
-
如果
Eureka
在
server
端在一定时间内(默认
90
秒)没有收到
EurekaClient
发送心跳包,
便会直接从服务注册列表中剔除该服务
-
如果
Eureka
开启了自我保护模式
/
机制
,
那么在短时间(
90
秒中)内丢失了大量的服
务实例心跳,这时候
EurekaServer
会开启自我保护机制,不会剔除该服务(该现象可
能出现在如果网络不通或者阻塞
)
因为客户端还能正常发送心跳,只是网络延迟问题,
而保护机制是为了解决此问题而产生的
3. 自我保护是
属于 CAP 里面的 AP 分支
, 保证高可用和分区容错性
4. 自我保护模式是—种应对网络异常的安全保护措施。它的
架构哲学是宁可同时保留
所有微服务(健康的微服务和不健康的微服务都会保留)也不盲目注销任何健康的微服
务 。
使 用 自 我 保 护 模 式 , 可 以 让 Eureka 集 群 更 加 的 健 壮 、 稳 定 。 参 考 :
https://blog.csdn.net/wangliangluang/article/details/120626014