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