练习题与扩展阅读
练习题
基础题
- 性能分析的通用步骤是什么?性能优化有哪些基本原则?
- 阿姆达尔定律的核心思想是什么?对性能优化有什么指导意义?
- 性能优化的优先级是什么?为什么架构优化的优先级比代码优化高?
- 常见的缓存问题有哪些?分别怎么解决?
- CAP定理的三个特性分别是什么?为什么分布式系统只能同时满足其中两个?
- 消息队列在分布式系统中的作用是什么?适合什么场景?
实操题
- 找一个你负责的系统,按照性能分析步骤,测量系统的性能指标,定位当前的性能瓶颈在哪里,设计优化方案。
- 对一段热点代码进行性能优化,用profiler工具测量优化前后的性能提升,评估优化收益。
- 搭建一个简单的微服务demo,包含服务注册发现、负载均衡、RPC调用三个核心组件,理解微服务的基本原理。
- 用压测工具(JMeter、wrk等)对你的服务进行压测,找到系统的瓶颈点,优化到压测指标符合预期。
思考题
- 为什么说“过早优化是万恶之源“?怎么平衡性能优化和业务开发的关系?
- 分布式系统怎么保证数据一致性?强一致性和最终一致性分别适合什么业务场景?举几个你遇到的场景。
- 性能优化和系统稳定性之间怎么平衡?优化过程中如何避免引入稳定性问题?
- 你在实际工作中遇到过最严重的性能问题是什么?是怎么排查和解决的?
扩展阅读
书籍推荐
-
《性能之巅:系统、企业与云可观测性》(第2版)
- 性能优化领域的经典著作,系统讲解了系统性能分析和优化的方法,覆盖了CPU、内存、IO、网络等各个层面的优化,非常全面。
-
《数据密集型应用系统设计》
- 分布式系统领域的圣经,深入讲解了分布式系统的核心概念、数据模型、一致性、分布式事务等核心内容,每个后端开发者都应该读。
-
《微服务设计》
- 微服务架构的经典书籍,讲解了微服务的设计原则、架构模式、服务治理等内容,是微服务入门的必读。
-
《高可用架构》
- 讲解高可用分布式系统的设计思想和实践,包含降级、熔断、限流、灾备等核心内容,适合架构师和后端开发者。
-
《计算机程序的构造和解释》(SICP)
- 虽然不是专门讲性能优化的书,但能提升你对程序本质的理解,写出更高效优雅的代码。
在线资源
-
- Google官方的SRE系列书籍,讲解了Google的运维和性能优化最佳实践,非常值得学习。
-
- 本书作者Brendan Gregg的个人网站,有大量关于性能分析和优化的文章和工具,是性能优化领域的权威资料。
-
- 美团技术团队分享了很多分布式系统、性能优化、微服务相关的实战文章,非常接地气,适合国内开发者学习。
-
- MIT 6.824分布式系统课程,是学习分布式系统的经典课程,有丰富的论文和实验。
-
- 酷Shell的高并发编程系列文章,通俗易懂地讲解了高并发系统的设计和优化思路。
工具推荐
- 压测工具:wrk、JMeter、k6、Locust,用来对系统进行压力测试,找到性能瓶颈。
- 链路追踪:SkyWalking、Jaeger、Zipkin,分布式系统全链路追踪,排查慢请求和错误。
- APM监控:Prometheus + Grafana、Datadog、New Relic,系统性能指标监控和告警。
- 性能分析:perf、bcc/BPF、eBPF,Linux下高级性能分析工具,深入分析系统性能问题。
- 微服务组件:Nacos(服务发现)、Sentinel(限流熔断)、Dubbo/Spring Cloud(微服务框架)、RocketMQ/Kafka(消息队列)。
参考答案
练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。