您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
高并发系列:垂直性能优化之细说负载均衡
 
   次浏览      
 2021-5-12
 
编辑推荐:
本文从服务的整体优化为出发点叙述了主要技术手段--负载均衡的主要内容,希望此文对您的学习有所帮助。
来自于微信公众号:Coder的技术之路,,由火龙果软件Alice编辑、推荐。

高并发系列第一篇:垂直性能优化之细说负载

高并发是业务发展到一定阶段必须面对的问题,那么面对高并发的问题,我们可以从哪些方面入手优化呢?

垂直性能优化 [包含整体层面的负载均衡、中间件异步化、存储优化、代码层面调优、jvm容器调优等等]

整体可用性优化 [包含服务治理、服务保护、可靠性保障、生产验证、故障演练等等]

水平扩展提升 [包含分层架构、弹性架构、服务拆分及单元化等等]

从这篇开始将对上述问题进行逐点阐述,欢迎大家一起交流讨论~

前言

性能为王。可用性和水平扩展,都要建立在性能优良的基础上才会去考虑。

性能是高并发的基础,而且涉及面极广,也是需要我们投入更多的精力去对待;同时,大部分优化点也是我们一线研发日常可以直接接触的模块。也是大厂面试的时候会经常涉及到的模块。

所以第一部分大概十几篇可能都会在垂直性能优化上。第一篇,垂直性能优化之细说集群部署和负载均衡。

从阿里架构演变来看负载均衡

我们将淘宝网的架构演进(即时通讯网[1])整理到一个滑动图里,如下图所示:

 

当然,比如中台建设、上云等更高级演进就在此忽略了;

可以更清晰的看到,在集群部署和负载均衡,几乎分布在了整个演进链路上最关键的节点上:

当解决了本地存储的性能瓶颈,新的瓶颈出现在了web容器的单体性能上。因此,使用nginx反向代理来实现多个web容器负载均衡

当数据库和tomcat都达到水平扩容,可支撑的并发大幅提升时,单体nginx代理的性能成了新的瓶颈。因此,使用F5或LVS来实现多个nginx反向代理服务器负载均衡

当业务进一步发展,达到多地多机房部署,垮地域访问延迟成了新的瓶颈。因此,使用DNS来实现地域机房间的负载均衡。

细说负载均衡方案

常见的实现方案,其实从上面的演进链路中也已经可以基本了解到各个方案适用的发展阶段和应对常见,这里再系统的总结下:

基于DNS的负载

基于硬件的负载,如F5

基于软件的负载,如Nginx/Squid

DNS负载

头条号[2] 知乎[3]

上面两副图,可以看到DNS的解析过程和负载均衡的原理。天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。

而缺点也比较明显:

目前的DNS是多级解析的,每一级都可能缓存。所以生效不及时。

不能按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异和运行状态,不灵活

额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证数据及时更新,一般都要将刷新时间设置的较小,可能造成流量增大。

基于硬件的负载均衡

「F5 Network Big-IP」 是一个网络设备,可以简单的认为是一个网络交换机一类的东西,性能非常好,百万级TPS。

性能优良、功能强大,多种均衡算法都可以支持,还有防火墙等安全功能。但,非常贵,一般小公司可用不起。

基于软件的负载均衡

软件负载均衡都是以TCP/IP协议的OSI模型的运用:(即时通讯网[4])

根据OSI模型可将负载均衡分为:

二层负载均衡(一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应);

三层负载均衡(一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应);

四层负载均衡(在三次负载均衡的基础上,用 ip+port 接收请求,再转发到对应的机器);

七层负载均衡(根据虚拟的url或是IP,主机名接收请求,再转向相应的处理服务器)。

常见的其实只有4层和7层负载。

四层和七层的横向对比

常见的负载均衡算法

广义的负载均衡

上述内容基本都是基于服务级别来叙述的负载均衡的概念。其实,负载被运用的场景还很多,比如,服务端rpc选址、以及一些中间件的投递和请求分发,再有一些弹性架构下的弹性路由,单元化下的单元路由,其实也是更高层面的负载均衡。相应的,也有很多特定的负载算法,比如rpc中的本地优先负载等等。

结束语

负载均衡是业务发展到一定阶段必经的优化过程。掌握负载相关的原理和算法,对我们日常业务问题排查甚至是架构设计都可以起到很好的帮助。

本篇是高并发系列中垂直性能优化的第一篇,从服务的整体优化为出发点叙述了主要技术手段--负载均衡的主要内容,下一篇,将从中间件的应用入手,再聊性能优化。欢迎大家来一起交流。

 

 

   
次浏览       
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
架构设计-谈谈架构
实现SaaS(软件及服务)架构三大技术挑战
到底什么是数据中台?
响应式架构简介
业务架构、应用架构与云基础架构
最新课程
软件架构设计方法、案例与实践
从大型电商架构演进看互联网高可用架构设计
大型互联网高可用架构设计实践
企业架构师 (TOGAF官方认证)
嵌入式软件架构设计—高级实践
更多...   
成功案例
某新能源电力企业 软件架构设计方法、案例与实践
中航工业某研究所 嵌入式软件开发指南
某轨道交通行业 嵌入式软件高级设计实践
北京 航天科工某子公司 软件测试架构师
北京某领先数字地图 架构师(设计案例)
更多...