高并发系统设计 40 问
唐扬
美图公司技术专家
49013 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
高并发系统设计 40 问
15
15
1.0x
00:00/00:00
登录|注册

26 | 负载均衡:怎样提升系统的横向扩展能力?

一课一思
课程小结
如何检测节点是否故障
常见的负载均衡策略
负载均衡服务器的种类
负载均衡

该思维导图由 AI 生成,仅供参考

你好,我是唐扬。
在基础篇中,我提到了高并发系统设计的三个通用方法:缓存、异步和横向扩展。到目前为止,你接触到了缓存的使用姿势,也了解了如何使用消息队列异步处理业务逻辑。那么本节课,我将带你了解一下如何提升系统的横向扩展能力。
在之前的课程中,我也提到过提升系统横向扩展能力的一些案例。比如,08 讲提到可以通过部署多个从库的方式,来提升数据库的扩展能力,从而提升数据库的查询性能,那么就需要借助组件,将查询数据库的请求按照一些既定的策略分配到多个从库上,这是负载均衡服务器所起的作用,而我们一般使用 DNS 服务器来承担这个角色。
不过在实际的工作中,你经常使用的负载均衡的组件应该算是 Nginx,它的作用是承接前端的 HTTP 请求,然后将它们按照多种策略分发给后端的多个业务服务器上。这样,我们可以随时通过扩容业务服务器的方式来抵挡突发的流量高峰。与 DNS 不同的是,Nginx 可以在域名和请求 URL 地址的层面做更细致的流量分配,也提供更复杂的负载均衡策略。
你可能会想到,在微服务架构中我们也会启动多个服务节点承接从用户端到应用服务器的请求,自然会需要一个负载均衡服务器作为流量的入口,实现流量的分发。那么在微服务架构中,如何使用负载均衡服务器呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了负载均衡的基本概念和常见类型,以及在不同架构中的应用场景和选择策略。文章首先介绍了代理类和客户端负载均衡服务两大类别,分别以LVS和Nginx为代表,解释了它们在流量分发和性能方面的特点。针对微服务架构,文章提出了客户端负载均衡服务的应用,结合注册中心提供的服务节点列表,实现了更灵活的节点选择策略。此外,文章还建议在普通Web服务中,根据QPS量级选择合适的负载均衡方案,减少系统维护成本。总的来说,本文通过介绍负载均衡的种类和应用场景,为读者提供了系统横向扩展能力的重要知识,为实际工作中的负载均衡服务配置提供了指导和建议。 文章还介绍了常见的负载均衡策略,包括静态策略和动态策略,以及如何检测节点是否故障。静态策略中,轮询和带有权重的轮询策略被强调,而动态策略则优先考虑使用动态的策略。此外,文章还详细介绍了Nginx如何检测节点是否故障的方法,以及服务节点的启动和关闭标准姿势。 总的来说,本文内容涵盖了负载均衡的基本概念、常见类型、应用场景、选择策略以及节点故障检测等方面,为读者提供了全面的负载均衡知识和实际应用技巧。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(37)

  • 最新
  • 精选
  • 面试官问
    是否使用客户端负载均衡,跟微服务框架中服务之间通信是使用 RPC 协议还是 HTTP 协议无关,例如Spring Cloud 中的 Ribbon 就是用来进行客户端负载均衡的;一般来说,在系统接入层,使用的是服务端负载均衡,而微服务之间的内部调用,使用的是客户端负载均衡。

    作者回复: 是的

    2019-11-22
    40
  • 虚竹
    老师最后说的nginx启停服务时切流量部分,在刚刚启动时返回500,完全初始化后返回200,是指health_check接口返回的状态码是通过配置中心配置获取的,重启之前改为500,看实例日志全完启动成功之后再改为200?

    作者回复: 是的

    2020-03-25
    3
    16
  • jc9090kkk
    感谢老师分享,这一刻看完有一个疑问,对于负载均衡的一些策略都清楚了,但是对于负载均衡器的承载容量有点疑问,比如说通过nginx来作为负载均衡器,但是它本身的承载容量是有极限的,如果当前nginx的转发容量只能支撑10w/s的访问请求,但是流量如果达到20w/s,那么nginx作为负载均衡器来讲,是否需要增加新的负载均衡器一起协调工作,那么同时存在两个负载均衡器的话,工作于它上一层的任务由谁来处理呢?lvs?还是dns?或者是其他?负载均衡器不可能没有极限吧?

    作者回复: 是LVS,LVS的承载能力要大很多

    2020-01-16
    5
    12
  • sdjdd
    关闭服务之前,用 503 状态码响应健康检查是不是语义更明确一些。

    作者回复: 是的,我的意思是这样的

    2019-11-22
    8
  • 古德
    以前用阿里云的时候,我们的架构是使用阿里云的SLB,直接转发到微服务网关zuul上,再根据url去分发到对应服务。

    作者回复: 也可以,zuul作为7层负载

    2020-01-06
    6
  • M
    请教下老师,app与服务器之间使用websocket协议连接,如何使用负载均衡呢?

    作者回复: nginx可以支持websocket协议的

    2019-11-22
    3
    6
  • 如歌
    刷第二遍了 从操作系统到网络到这本书

    作者回复: 加油💪

    2020-03-28
    2
    3
  • い北风
    老师,我在之前的面试遇到过一个问题。知道已有功能,如何选取服务器。去购买服务器的配置呢?

    作者回复: 我想面试官想了解的是 你是否可以根据业务特点来选取服务器,比如数据库要选取大内存、大磁盘的存储型的服务器;计算比较多的业务要选取CPU性能比较好的

    2020-01-03
    3
    3
  • 阿土
    优雅关机与启动有案例么?理解了原理,具体怎么实现呢?

    作者回复: 文中提到的nginx的例子,就是一个案例 除此之外,在微服务在重启时,先从注册中心中摘掉节点,然后观察流量没有了之后再重启。 其实,总的一点就是先切流量,再重启

    2019-11-28
    3
    3
  • 啊啊啊哦哦
    nginx 上为什么要阶lvs。 一般dns服务器也可以实现轮训分发到不同的nginx上啊。

    作者回复: LVS能抗更高的并发

    2019-11-24
    3
收起评论
显示
设置
留言
37
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部