主题
面试速答(先看这里)
**一句话结论:**选择合适的 分布式系统架构 ,例如 微服务架构 、 SOA架构 等,可以有效地提高系统性能。
60秒标准回答:
设计高性能的分布式系统需要考虑多个因素,简单介绍一些和性能优化、高性能有关的技术方案
选择合适的 分布式系统架构 ,例如 微服务架构 、 SOA架构 等,可以有效地提高系统性能
使用 缓存技术 可以减轻数据库的负载,提高系统性能。而且缓存也分很多,分布式缓存、本地缓存等等,理论上来说离用户越近的缓存效果越好,但是相对来说一致性可能也越差一点
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**设计高性能的分布式系统需要考虑多个因素,简单介绍一些和性能优化、高性能有关的技术方案。
- **要点2:**使用 缓存技术 可以减轻数据库的负载,提高系统性能。
- **要点3:**缓存可以提升性能,但是有的时候缓存如果没有做提前预热,也可能会导致一些热点问题和缓存击穿的问题,会导致性能下降,所以需要考虑预热的方案。
- **要点4:**很多时候,一个系统的性能瓶颈是在数据库层面的,尤其是一些慢sql,会导致应用的整体性能下降,所以,需要做SQL优化才行。
- **要点5:**压测是一种非常常见的帮我们做性能评估的手段。
**记忆锚点:**但是其实性能也是可用性 → 来说离用户越近的缓存 → 致一些热点问题和缓存 → 一般是用来保障可用性 → 但是相对来说一致性 → 分布式系统架构
关键取舍:
- 设计高性能的分布式系统需要考虑多个因素,简单介绍一些和性能优化、高性能有关的技术方案。
- 选择合适的 分布式系统架构 ,例如 微服务架构 、 SOA架构 等,可以有效地提高系统性能。
- 使用 缓存技术 可以减轻数据库的负载,提高系统性能。
易错提醒:
- 异步,这个是最容易理解的,通过异步的方案让代码不要同步执行,可以减少等待时间。
加分表达:
- 缓存可以提升性能,但是有的时候缓存如果没有做提前预热,也可能会导致一些热点问题和缓存击穿的问题,会导致性能下降,所以需要考虑预热的方案。
- 很多时候,一个系统的性能瓶颈是在数据库层面的,尤其是一些慢sql,会导致应用的整体性能下降,所以,需要做SQL优化才行。
追问准备:
- 围绕「但是其实性能也是可用性」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「来说离用户越近的缓存」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「致一些热点问题和缓存」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
设计高性能的分布式系统需要考虑多个因素,简单介绍一些和性能优化、高性能有关的技术方案。
1、部署架构
选择合适的分布式系统架构,例如微服务架构、SOA架构等,可以有效地提高系统性能。
2、缓存
使用缓存技术可以减轻数据库的负载,提高系统性能。而且缓存也分很多,分布式缓存、本地缓存等等,理论上来说离用户越近的缓存效果越好,但是相对来说一致性可能也越差一点。
3、缓存预热
缓存可以提升性能,但是有的时候缓存如果没有做提前预热,也可能会导致一些热点问题和缓存击穿的问题,会导致性能下降,所以需要考虑预热的方案。
4、异步
异步,这个是最容易理解的,通过异步的方案让代码不要同步执行,可以减少等待时间。不管使用消息队列,还是用线程池,亦或是定时任务,都是比较常见的异步的方案。
5、多线程
这个就很好理解了,多个线程一起干活,要比单个线程执行快的。当然,还可以考虑使用线程池来减少线程的创建和销毁过程的开销。
6、SQL优化
很多时候,一个系统的性能瓶颈是在数据库层面的,尤其是一些慢sql,会导致应用的整体性能下降,所以,需要做SQL优化才行。
7、单元化架构
在单元化架构中,分成很多个单元和一个中心。每个单元之间都是相互独立的。一个单元中完整的部署了一整套业务,如电商交易,金融支付,一次用户操作可以在一个单元内部完成,不需要跨单元执行。可以减少网络延迟。
8、压测
压测是一种非常常见的帮我们做性能评估的手段。通过模拟用户请求,帮助我们发现系统的瓶颈以及评估系统的整体水位。
9、限流&降级&熔断
这三个东西,一般是用来保障可用性的,但是其实性能也是可用性的一个重要指标,有的时候下游接口很慢,或者垮了,我们如果不做手段的话,会把我们的性能也拖垮的。所以需要考虑这些方案。
10、架构方案
还有很多架构手段,比如分库分表、读写分离、多级缓存、并发消息等等,都是可以提升性能的重要手段。
11、网络优化
有的时候,存在一些网络延迟是因为有跨机房,跨地区调用,或者是网络环境不好,这些都是可以优化的,比如做同单元、同机房调用,拉专线等等。
12、扩容
终极方案,扩容,能力不够,机器来凑。