高并发是业务发展到一定阶段必须面对的问题,那么面对高并发的问题,我们可以从哪些方面入手优化呢?
从这篇开始将对上述问题进行逐点阐述,欢迎大家一起交流讨论~
性能为王。可用性和水平扩展,都要建立在性能优良的基础上才会去考虑。
性能是高并发的基础,而且涉及面极广,也是需要我们投入更多的精力去对待;同时,大部分优化点也是我们一线研发日常可以直接接触的模块。也是大厂面试的时候会经常涉及到的模块。
所以第一部分大概十几篇可能都会在垂直性能优化上。第一篇,垂直性能优化之细说集群部署和负载均衡。
从阿里架构演变来看负载均衡
我们将淘宝网的架构演进(即时通讯网[1])整理到一个滑动图里,如下图所示:
当然,比如中台建设、上云等更高级演进就在此忽略了;
可以更清晰的看到,在集群部署和负载均衡,几乎分布在了整个演进链路上最关键的节点上:
常见的实现方案,其实从上面的演进链路中也已经可以基本了解到各个方案适用的发展阶段和应对常见,这里再系统的总结下:
上面两副图,可以看到DNS的解析过程和负载均衡的原理。天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。
而缺点也比较明显:
性能优良、功能强大,多种均衡算法都可以支持,还有防火墙等安全功能。但,非常贵,一般小公司可用不起。
基于软件的负载均衡
软件负载均衡都是以TCP/IP协议的OSI模型的运用:(即时通讯网[4])
根据OSI模型可将负载均衡分为:
四层和七层的横向对比
常见的负载均衡算法
广义的负载均衡
上述内容基本都是基于服务级别来叙述的负载均衡的概念。其实,负载被运用的场景还很多,比如,服务端rpc选址、以及一些中间件的投递和请求分发,再有一些弹性架构下的弹性路由,单元化下的单元路由,其实也是更高层面的负载均衡。相应的,也有很多特定的负载算法,比如rpc中的本地优先负载等等。
负载均衡是业务发展到一定阶段必经的优化过程。掌握负载相关的原理和算法,对我们日常业务问题排查甚至是架构设计都可以起到很好的帮助。
本篇是高并发系列中垂直性能优化的第一篇,从服务的整体优化为出发点叙述了主要技术手段–负载均衡的主要内容,下一篇,将从中间件的应用入手,再聊性能优化。欢迎大家来一起交流。