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

2023-12-28 12:25:03

前言

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

MySQL

索引

说一下有哪些锁?

行锁有哪些?

性能优化

分库分表

常用库:mycat、shardingsphere

Sharding 策略

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

高性能、高可用

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

分库的时机:

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

分表时机:

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

分布式系统

分布式锁

分布式事务

Seata提供的分布式事务方案

分布式接口幂等性

SpringCloud

什么是微服务?

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

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

SpringBoot和SpringCloud的区别?

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

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

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

服务隔离方案

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

微服务治理

微服务治理是指在微服务架构中,通过一系列的策略工具实践来 管理、监控和控制微服务的运行和交互。
它旨在确保微服务系统的可靠性、高效性和可扩展性,并提供一致的开发和运维体验。

文章来源:https://blog.csdn.net/qq_38974073/article/details/135245439
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。