前景提要
是的,2024又开始找工作了,浅浅记录一下今年碰到的面试题~
一、Spring Cloud
1、eureka的cpa理论
先说CAP 定理
CAP 定理描述了在分布式系统中,无法同时满足一致性、可用性和分区容忍性三个要求,只能在其中选择两个。这三个要素的具体含义如下:
- Consistency (一致性): 每次读取都能获得最近一次成功写入的结果,即所有节点上的数据在同一时刻是一致的。
- Availability (可用性): 系统在任意时间都能响应读写请求,即使有部分节点发生故障,系统依然能够正常提供服务。
- Partition Tolerance (分区容忍性): 系统能够在出现网络分区的情况下继续运行,节点之间可能无法通信,但系统仍然能够继续提供服务。
Eureka 的 CPA 策略
在 Eureka 的设计中,更倾向于保证 可用性 (Availability) 和 分区容忍性 (Partition Tolerance),在某些情况下会牺牲 一致性 (Consistency)。这意味着 Eureka 可能会在短时间内提供不一致的信息,以换取系统的高可用性和对网络分区的容忍。
- Availability (可用性)
Eureka 服务器集群中的每个节点都可以独立处理客户端的服务注册、发现和续约请求,即使部分节点不可用,整个服务发现功能仍然可以继续运行。
当客户端无法与 Eureka 服务器通信时,客户端会使用本地缓存的服务注册信息继续运行,这种机制进一步提高了系统的可用性。 - Partition Tolerance (分区容忍性)
Eureka 能够容忍网络分区或节点故障。在网络分区的情况下,Eureka 服务器会继续接受客户端的请求,并在网络恢复后再同步数据。
即使发生网络分区,Eureka 服务器也不会停止对外提供服务,确保系统的持续可用性。 - Consistency (一致性)
为了保证高可用性,Eureka 在某些情况下可能会返回过期或不一致的服务实例信息。例如,当某个服务实例已经不可用,但由于网络分区或同步延迟,Eureka 可能还会返回该实例的地址。
这种设计是为了在发生网络故障时,保证服务注册中心的高可用性和分区容忍性,但可能会出现短暂的服务注册信息不一致。
2、如果eureka节点挂了怎么办
如果 Eureka 节点挂了,可能会影响到注册到该节点的服务的可用性。在这种情况下,以下是一些常见的处理策略和建议:
- 多个 Eureka 实例
集群部署:将 Eureka 部署为集群,运行多个 Eureka 实例。这样,即使一个节点宕机,其他节点仍然能够提供服务。 - 服务注册和发现
客户端重试:配置服务客户端(如 Ribbon 或 Feign)使其能够自动尝试连接其他 Eureka 实例。
时间间隔更新:增加服务的心跳间隔,减少对单个节点的依赖。 - 客户端缓存
Eureka 客户端会在本地缓存注册的服务信息。如果 Eureka 节点挂掉,客户端仍然可以基于本地缓存正常工作一段时间,直到缓存过期。 - 健康检查
确保系统有健康检查机制,及时发现并替换故障服务。 - 监控和告警
使用监控工具(如 Prometheus、Grafana)来监控 Eureka 实例的状态,并设置告警通知,以便及时处理故障。 - 配置容错
使用诸如 Hystrix 之类的熔断器模式,以便在服务不可用时能够优雅地降级。 - 备份机制
定期备份 Eureka 的注册信息,以便在重启或恢复时能快速恢复。
项目相关
1、说一说你认为最能体现你技术的项目
可以从以下几个方面说:
- 项目背景
项目名称和目的:介绍项目的名称及其实现的目标。
技术栈:说明使用的技术栈,包括编程语言、框架、数据库等。 - 你的角色
职责:阐述你在项目中承担的具体角色和责任。
贡献:突出你在项目中的重要贡献,比如设计、编码、解决技术难题等。 - 技术挑战
面对的挑战:描述在项目中遇到的技术难题(如性能瓶颈、高并发处理、架构设计等)。
解决方案:分享你是如何解决这些问题的,应用了哪些技术或工具。 - 项目成果
结果:讲述项目的最终成果,如提升了性能、用户增长等。
学习:分享你从这个项目中学到了什么,以及如何提升了自己的技能。