Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

练习题与扩展阅读

练习题

基础题

  1. 性能分析的通用步骤是什么?性能优化有哪些基本原则?
  2. 阿姆达尔定律的核心思想是什么?对性能优化有什么指导意义?
  3. 性能优化的优先级是什么?为什么架构优化的优先级比代码优化高?
  4. 常见的缓存问题有哪些?分别怎么解决?
  5. CAP定理的三个特性分别是什么?为什么分布式系统只能同时满足其中两个?
  6. 消息队列在分布式系统中的作用是什么?适合什么场景?

实操题

  1. 找一个你负责的系统,按照性能分析步骤,测量系统的性能指标,定位当前的性能瓶颈在哪里,设计优化方案。
  2. 对一段热点代码进行性能优化,用profiler工具测量优化前后的性能提升,评估优化收益。
  3. 搭建一个简单的微服务demo,包含服务注册发现、负载均衡、RPC调用三个核心组件,理解微服务的基本原理。
  4. 用压测工具(JMeter、wrk等)对你的服务进行压测,找到系统的瓶颈点,优化到压测指标符合预期。

思考题

  1. 为什么说“过早优化是万恶之源“?怎么平衡性能优化和业务开发的关系?
  2. 分布式系统怎么保证数据一致性?强一致性和最终一致性分别适合什么业务场景?举几个你遇到的场景。
  3. 性能优化和系统稳定性之间怎么平衡?优化过程中如何避免引入稳定性问题?
  4. 你在实际工作中遇到过最严重的性能问题是什么?是怎么排查和解决的?

扩展阅读

书籍推荐

  1. 《性能之巅:系统、企业与云可观测性》(第2版)

    • 性能优化领域的经典著作,系统讲解了系统性能分析和优化的方法,覆盖了CPU、内存、IO、网络等各个层面的优化,非常全面。
  2. 《数据密集型应用系统设计》

    • 分布式系统领域的圣经,深入讲解了分布式系统的核心概念、数据模型、一致性、分布式事务等核心内容,每个后端开发者都应该读。
  3. 《微服务设计》

    • 微服务架构的经典书籍,讲解了微服务的设计原则、架构模式、服务治理等内容,是微服务入门的必读。
  4. 《高可用架构》

    • 讲解高可用分布式系统的设计思想和实践,包含降级、熔断、限流、灾备等核心内容,适合架构师和后端开发者。
  5. 《计算机程序的构造和解释》(SICP)

    • 虽然不是专门讲性能优化的书,但能提升你对程序本质的理解,写出更高效优雅的代码。

在线资源

  1. Google SRE 书籍

    • Google官方的SRE系列书籍,讲解了Google的运维和性能优化最佳实践,非常值得学习。
  2. 性能之巅官方网站

    • 本书作者Brendan Gregg的个人网站,有大量关于性能分析和优化的文章和工具,是性能优化领域的权威资料。
  3. 美团技术团队博客

    • 美团技术团队分享了很多分布式系统、性能优化、微服务相关的实战文章,非常接地气,适合国内开发者学习。
  4. 分布式系统理论进阶

    • MIT 6.824分布式系统课程,是学习分布式系统的经典课程,有丰富的论文和实验。
  5. 高并发编程系列

    • 酷Shell的高并发编程系列文章,通俗易懂地讲解了高并发系统的设计和优化思路。

工具推荐

  1. 压测工具:wrk、JMeter、k6、Locust,用来对系统进行压力测试,找到性能瓶颈。
  2. 链路追踪:SkyWalking、Jaeger、Zipkin,分布式系统全链路追踪,排查慢请求和错误。
  3. APM监控:Prometheus + Grafana、Datadog、New Relic,系统性能指标监控和告警。
  4. 性能分析:perf、bcc/BPF、eBPF,Linux下高级性能分析工具,深入分析系统性能问题。
  5. 微服务组件:Nacos(服务发现)、Sentinel(限流熔断)、Dubbo/Spring Cloud(微服务框架)、RocketMQ/Kafka(消息队列)。

参考答案

练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。