关于MySQL、分布式系统、SpringCloud面试题

前言

之前为了准备面试,收集整理了一些面试题。
本篇文章更新时间2023年12月27日。
最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv

MySQL

索引

关于MySQL、分布式系统、SpringCloud面试题_第1张图片

说一下有哪些锁?

关于MySQL、分布式系统、SpringCloud面试题_第2张图片

行锁有哪些?

关于MySQL、分布式系统、SpringCloud面试题_第3张图片

性能优化

关于MySQL、分布式系统、SpringCloud面试题_第4张图片

分库分表

常用库:mycat、shardingsphere

Sharding 策略

  • 哈希取模
  • 范围:时间范围、ID范围
  • 增加映射表

高性能、高可用

关于MySQL、分布式系统、SpringCloud面试题_第5张图片

什么时候分库?什么时候分表?

分库的时机:

  • 性能需求:比如高并发下,连接数不够用。
  • 数据规模:数据库服务器空间不足、数据量大性能下降。

分表时机:

  • 单表过大
  • 冷、热数据分离;

分布式系统

分布式锁

关于MySQL、分布式系统、SpringCloud面试题_第6张图片

分布式事务

关于MySQL、分布式系统、SpringCloud面试题_第7张图片

Seata提供的分布式事务方案

关于MySQL、分布式系统、SpringCloud面试题_第8张图片

分布式接口幂等性

关于MySQL、分布式系统、SpringCloud面试题_第9张图片

SpringCloud

什么是微服务?

微服务标签:一种架构风格、拆分成多个小服务、独立进程、服务围绕业务功能而构建、可独立开发、部署、扩展、轻量级通信、多语言&不同存储技术

简单地说,微服务架构风格就是一种将单个应用拆分成一组小服务开发的方法,每一个小服务运行在它自己的进程中并且使用轻量的协议通信,通常是一个HTTP资源API。这些服务围绕业务能力构建并且由自动化部署机器部署。这些服务有着最小化的中央管理,这个中央管理可以使用不同语言编写并使用不同的数据存储技术。—— James Lewis and Martin Fowler(马丁·福勒)

SpringBoot和SpringCloud的区别?

SpringBoot专注开发单个服务。
SpringCloud关注全局的微服务协调治理。
SpringCloud依赖SpringBoot。

谈谈服务降级、熔断、服务隔离

  • 服务降级:服务不可用时直接返回结果给客户端,不用一直等待。
  • 熔断:错误率达到一定的阈值之后就断路,之后慢慢重新开放。
  • 隔离:防止调用雪崩。一般是通过线程池、或信号量隔离。

服务隔离方案

类别 线程池隔离 信号量隔离
线程 使用线程池的内的线程,而非调用线程 与调用线程是同一个
开销 线程切换、排队、调度 无切换开销
异步 支持 不支持
超时 支持 支持
并发控制 线程池大小控制 信号量数控制

微服务治理

微服务治理是指在微服务架构中,通过一系列的策略工具实践来 管理、监控和控制微服务的运行和交互。
它旨在确保微服务系统的可靠性、高效性和可扩展性,并提供一致的开发和运维体验。
关于MySQL、分布式系统、SpringCloud面试题_第10张图片

你可能感兴趣的:(面试整理专栏,mysql,spring,cloud,数据库,面试)