八股文12:SpringCloud + Gateway +Nacos +Openfeign +Sentinel

本文详细介绍了SpringCloud生态中的关键组件,包括CAP理论、Nacos服务注册与配置、Gateway网关核心功能、Openfeign负载均衡与重试机制、Sentinel限流熔断策略。通过深入探讨各组件的工作原理和应用场景,帮助读者掌握微服务架构中的关键实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

别人的完善笔记

SpringCloud总体

CAP & BASE理论

在这里插入图片描述

CAP(分布式系统设计理论)

C一致性,A高可用性,P分区容错性,一般只能保证CP和AP,无法同时满足三种情况(AC无法同时达到)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

看看这个博主的讲解

针对Zookeeeper的分布式集群之间保证注册信息的强一致性,导致主挂了选主时–暂停了服务注册的服务–即不能保证高可用;
针对Eureka集群之间每个节点是平等的,只不过节点之间的数据不一定强一致(可能稍微有点先后顺序),一个节点挂了,就用另一个节点的注册信息(只不过信息可能不是最新的)—保证了高可用,但是不能保证一致性问题

在这里插入图片描述

在这里插入图片描述

BASE(CAP的延伸—对AP的补充+想要一点C)

在这里插入图片描述

在这里插入图片描述

Nacos(Naming + Configure+service)—服务注册与配置

在这里插入图片描述

nacos的功能:服务注册中心+配置中心(AP/CP集群管理)
在这里插入图片描述

对于nacos服务来讲它是如何判断服务实例的状态的 && 如何读取配置中心信息?

nacos服务客户端(要注册到nacos的服务)启动时会每隔一段时间(默认5秒)向nacos发送心跳包,nacos注册中心15秒内没有检测到心跳包会默认认为nacos处于一种不健康的状态,30秒还没收到则认为这个服务已不可用或停止了。

在这里插入图片描述

配置文件读取的优先级(bootstrap高于application文件)

在这里插入图片描述

配置文件的定位:NameSpace(开发环境,测试环境,生产环境)+group(不同的微服务组)+dataId(随意)
在这里插入图片描述

一般在bootstrap配置指定的Namespace和GroupID,可以切换不同的dataID

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

nacos的集群管理(AP/CP切换)

### 2025年Java面试常见问题及知识点总结 #### 1. Spring Boot 3 相关问题 Spring Boot 3 是当前大厂面试中的热门话题,主要涉及其新特性、自动配置机制、Starter依赖管理、以及与Spring Cloud的集成。例如,面试中可能会问到如何利用Spring Boot 3的Jakarta EE 9支持来构建现代化的Web应用,或者如何通过Spring Boot Actuator实现应用的监控和管理。 #### 2. 云原生与微服务架构 云原生和微服务架构是Java开发中的重要方向,面试中常见的问题包括如何使用Spring Cloud Alibaba、Spring Cloud GatewayNacosSentinel等组件构建高可用的微服务系统。此外,Docker和Kubernetes的相关知识也常常被提及,例如如何将Java应用容器化并部署到Kubernetes集群中。 #### 3. MyBatis 实现原理 MyBatis 是一个流行的持久层框架,其核心实现原理包括动态SQL、缓存机制、以及与Spring的集成。面试官可能会要求解释MyBatis如何通过Mapper接口生成代理对象,或者如何通过Executor执行SQL语句并返回结果。 #### 4. JVM 性能调优 JVM性能调优是Java开发中的难点之一,常见的问题包括垃圾回收机制(如G1、ZGC)、内存模型(堆、栈、方法区)、以及如何通过JVM参数优化应用性能。例如,面试中可能会问到如何通过JVM参数调整堆内存大小,或者如何分析和解决频繁Full GC的问题。 #### 5. 多线程与并发编程 Java的多线程与并发编程是高频考点,常见的问题包括线程池的使用、锁机制(如synchronized、ReentrantLock)、以及并发工具类(如CountDownLatch、CyclicBarrier)。例如,面试中可能会要求实现一个生产者-消费者模式,或者解释ThreadLocal的实现原理。 #### 6. 手写代码题 手写代码题是Java面试中的常见环节,主要考察候选人的编码能力和对Java核心API的掌握。例如,可能会要求实现一个单例模式、快速排序算法,或者使用BlockingQueue实现生产者-消费者模式。 ```java public class ProducerConsumer { private final BlockingQueue<Integer> queue = new LinkedBlockingQueue<>(10); public void produce(int data) throws InterruptedException { queue.put(data); } public int consume() throws InterruptedException { return queue.take(); } } ``` #### 7. 数据库与SQL优化 数据库相关问题主要涉及SQL优化、索引使用、以及事务管理。例如,面试中可能会问到如何通过索引优化查询性能,或者如何处理数据库的锁竞争问题。 #### 8. 分布式系统与消息队列 分布式系统和消息队列是Java开发中的重要方向,常见的问题包括如何使用Kafka、RabbitMQ等消息队列实现异步通信,或者如何通过分布式事务保证数据一致性。 #### 9. 设计模式与架构设计 设计模式和架构设计是高级Java开发中的核心内容,常见的问题包括单例模式、工厂模式、观察者模式等的实现与应用场景,以及如何设计一个高并发、高可用的系统架构。 #### 10. 热点问题与性能优化 热点问题与性能优化是Java开发中的实际挑战,常见的问题包括如何通过缓存(如Redis)减少数据库压力,或者如何通过异步处理提升系统吞吐量。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值