消息队列

消息队列是一种用于异步通信的中间件,通过解耦生产者和消费者,实现系统的高可用性、扩展性和灵活性

RabbitMQ 的消息传递流程是怎样的

生产者发送消息到 Exchange,Exchange 根据路由规则将消息转发到相应的 队列,消费者从 队列 中获取消息

RocketMQ 的消息传递流程是怎样的?

生产者通过 服务器 获取 路由,然后将消息发送到指定 路由 的 队列
消费者订阅路由 并拉取消息,从 队列 中读取数据

数据库

Redis

redis是一个非关系型数据库,项目中主要是用来存储热点数据,减轻数据库压力

持久化方式

它的持久化方式有两种,一种是ROB,另一种是AOF
RDB是以快照的方式来存储的,也是redis默认的持久化方式,每隔一段时间进行存储
AOF是在配置文件配置,每秒或每一次操作持久化一次。

Redis 支持哪些数据类型

我记得有5种数据类型,分别是
字符串
​列表(List)​:双端链表,支持 push/pop 操作。
​哈希(Hash)​:键值对的集合,适合存储对象。
​集合(Set)​:无序不重复元素集合,支持交集、并集等操作。
​有序集合(Sorted Set)​:元素按分数排序,适合排行榜。

MySQL

MySQL的索引

MySQL的索引主要就是用来提升查询的效率

​创建索引的时候有些需要注意的地方,就是高频查询的字段建立索引;还有就是可以建立关联索引:使用多个字段建立索引
还有就是建立的索引不能过多,否则会影响新增,更新的效率

​事务的 ACID

​原子性(Atomicity)​:事务要么全部成功,要么全部回滚。
​一致性(Consistency)​:事务前后数据保持逻辑一致性。
​隔离性(Isolation)​:通过锁 保证并发事务互不干扰。
​持久性(Durability)​:提交后数据永久保存(通过 redo log 实现)。

where和having的区别?

where是对分组前的条件进行限定。having是对分组后的内容进行限定。
where后面不能加聚合函数,having后可以跟聚合函数。

缓存

​1. 缓存穿透
​问题:恶意请求不存在的 Key,导致缓存未命中,直接查询数据库。
​解决方案:
缓存空值(如 @Cacheable(value = “users”, unless = “#result == null”) 改为缓存空对象)。
使用布隆过滤器(Bloom Filter)拦截非法 Key。
​2. 缓存雪崩,缓存击穿
​问题:大量缓存同时失效,导致数据库压力骤增。
​解决方案:
设置随机过期时间(如 expireAfterWrite(30 + random.nextInt(10), TimeUnit.MINUTES))。
使用缓存预热(启动时加载热点数据)。
使用互斥锁(如 Redis 的 SETNX)。
通过 @Cacheable(sync = true) 启用同步执行(仅 Spring 5.3+ 支持)。

微服务

什么是微服务

我理解的微服务就是将应用程序拆分成多个小型、独立的服务;每个服务专注于单一的业务功能
Java这块的微服务,我对SpringCloud和SpringCloudAlibaba比较了解

  • SpringCloud是基于SpringBoot专为分布式微服务架构而实现
    它的核心组件有
    ​Eureka 注册中心,服务注册与发现(AP协议,高可用)
    Gateway 网关
    Feign 它负责微服务间的 API 调用
    ​Ribbon 负载均衡(与RestTemplate结合使用)
    Resilience4j 熔断降级、线程隔离

  • SpringCloudAlibaba是由阿里专为云生态设计的一套微服务框架
    它的核心组件有
    nacos 注册中心;它的作用类似于​Eureka
    Dubbo 服务调用作用类似Feign
    Sentinel 负责流量控制、熔断降级、负载均衡
    RocketMQ 消息队列

负载均衡机制

我记得有好多种;常用的有两种
一种是轮询机制,就是1,2,3;这样一个一个调用,完了再次循环调用
还有就是随机的方式,这种就是随机选个服务调用

熔断机制

它是微服务架构中用于防止系统雪崩的机制
熔断的工作流程分为三个状态

  • 闭合状态(Closed)​
    正常情况,请求正常调用下游服务。
    若失败次数超过阈值(如连续5次失败),触发熔断,进入打开状态。

  • 打开状态(Open)​
    直接拒绝所有请求,返回错误或降级结果。
    经过一段时间后(如5秒),进入半开状态。

  • ​半开状态(Half-Open)​
    允许少量请求尝试调用下游服务。
    若请求成功,则关闭熔断,恢复正常;若失败,则重新打开熔断


文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录