✅如何设计一个高性能的分布式系统

✅如何设计一个高性能的分布式系统

典型回答

设计高性能的分布式系统需要考虑多个因素,简单介绍一些和性能优化、高性能有关的技术方案。

1、部署架构

选择合适的分布式系统架构,例如微服务架构SOA架构等,可以有效地提高系统性能。

✅分布式和微服务的区别是什么?

2、缓存

使用缓存技术可以减轻数据库的负载,提高系统性能。而且缓存也分很多,分布式缓存、本地缓存等等,理论上来说离用户越近的缓存效果越好,但是相对来说一致性可能也越差一点。

✅本地缓存和分布式缓存有什么区别?

3、缓存预热

缓存可以提升性能,但是有的时候缓存如果没有做提前预热,也可能会导致一些热点问题和缓存击穿的问题,会导致性能下降,所以需要考虑预热的方案。

✅如何实现缓存的预热?

4、异步

异步,这个是最容易理解的,通过异步的方案让代码不要同步执行,可以减少等待时间。不管使用消息队列,还是用线程池,亦或是定时任务,都是比较常见的异步的方案。

5、多线程

这个就很好理解了,多个线程一起干活,要比单个线程执行快的。当然,还可以考虑使用线程池来减少线程的创建和销毁过程的开销。

6、SQL优化

很多时候,一个系统的性能瓶颈是在数据库层面的,尤其是一些慢sql,会导致应用的整体性能下降,所以,需要做SQL优化才行。

✅如何进行SQL调优?

7、单元化架构

在单元化架构中,分成很多个单元和一个中心。每个单元之间都是相互独立的。一个单元中完整的部署了一整套业务,如电商交易,金融支付,一次用户操作可以在一个单元内部完成,不需要跨单元执行。可以减少网络延迟。

✅什么是单元化架构?

8、压测

压测是一种非常常见的帮我们做性能评估的手段。通过模拟用户请求,帮助我们发现系统的瓶颈以及评估系统的整体水位。

✅什么是压测,怎么做压测?

9、限流&降级&熔断

这三个东西,一般是用来保障可用性的,但是其实性能也是可用性的一个重要指标,有的时候下游接口很慢,或者垮了,我们如果不做手段的话,会把我们的性能也拖垮的。所以需要考虑这些方案。

✅限流、降级、熔断有什么区别?

10、架构方案

还有很多架构手段,比如分库分表、读写分离、多级缓存、并发消息等等,都是可以提升性能的重要手段。

✅什么是读写分离?如何实现?

11、网络优化

有的时候,存在一些网络延迟是因为有跨机房,跨地区调用,或者是网络环境不好,这些都是可以优化的,比如做同单元、同机房调用,拉专线等等。

12、扩容

终极方案,扩容,能力不够,机器来凑。

扩展知识

交易主链路提供风控决策要求RT 5ms的技术方案