主动学习

负载均衡

集群部署的特点

信息系统都需要利用多台机器来扩展服务能力,希望用户的请求不管连接到哪台机器上,都能得到相同的处理。

必须对用户一侧保持足够的透明,即使请求背后是由一千台、一万台机器来共同响应的,这也都不是用户会关心的事情,用户需要记住的只有一个域名地址而已。

负载均衡器Load Balancer

四层负载
数据链路层负载均衡
网络层负载均衡
应用层负载均衡

七层负载

均衡与实现

轮循均衡(Round Robin)
权重轮循均衡(Weighted Round Robin)
随机均衡(Random)
权重随机均衡(Weighted Random)
一致性哈希均衡(Consistency Hash)
响应速度均衡(Response Time)
最少连接数均衡(Least Connection)

另外,从实现角度来看,负载均衡器的实现有“软件均衡器”和“硬件均衡器”两类。

在软件均衡器方面,又分为直接建设在操作系统内核的均衡器和应用程序形式的均衡器两种。前者的代表是 LVS(Linux Virtual Server),后者的代表有 Nginx、HAProxy、KeepAlived,等等;前者的性能会更好,因为它不需要在内核空间和应用空间中来回复制数据包;而后者的优势是选择广泛,使用方便,功能不受限于内核版本。

在硬件均衡器方面,往往会直接采用应用专用集成电路(Application Specific Integrated Circuit,ASIC)来实现。因为它有专用处理芯片的支持,可以避免操作系统层面的损耗,从而能够达到最高的性能。这类的代表就是著名的 F5 和 A10 公司的负载均衡产品。

写在最后

真正的大型系统的负载均衡过程往往是多级的。比如,在各地建有多个机房,或者是机房有不同网络链路入口的大型互联网站,然后它们会从 DNS 解析开始,通过“域名” → “CNAME” → “负载调度服务” → “就近的数据中心入口”的路径,先根据 IP 地址(或者其他条件)将来访地用户分配到一个合适的数据中心当中,最后到服务端的各式负载均衡。

《周志明的软件架构课》学习笔记 Day15相关推荐

  1. 读《周志明的软件架构课》--学习笔记和感想随笔

    主要记录对周老师的<周志明的软件架构课>的学习笔记,本篇章是对课程不可变基础设施部分的学习,从虚拟化的技术理解容器技术的产生和发展,从部署运维角度理解应用的封装,从网络虚拟化理解容器网络, ...

  2. 《周志明的软件架构课》学习笔记 Day11

    1.主动学习 TCC事务 TCC(Try-Confirm-Cancel) TCC 方案,它天生适合用于需要强隔离性的分布式事务中,它是一种业务侵入性较强的事务方案,要求业务处理过程必须拆分为" ...

  3. 《周志明的软件架构课》学习笔记 Day6

    1.主动学习 RESTful 服务 REST概念:资源,表征,状态,转移. 服务端与客户端分离(Client-Server) 无状态(Stateless) 可缓存(Cacheability) 分层系统 ...

  4. 《周志明的软件架构课》学习笔记 Day7

    1.主动学习 本地事务如何实现原子性和持久性 事务处理 事务处理几乎是每一个信息系统中都会涉及到的问题,它存在的意义就是保证系统中的数据是正确的,不同数据间不会产生矛盾,也就是保证数据状态的一致性(C ...

  5. 《周志明的软件架构课》学习笔记 Day1

    1.主动学习 每个开发者都需要学习「如何构建一个可靠的分布式系统」 工作这么多年,发现架构设计,还是需要从业务中来迭代,「作为一名架构师,在软件研发的过程中,最难的事儿,其实并不是如何解决具体某个缺陷 ...

  6. 《周志明的软件架构课》学习笔记 Day5

    1.主动学习 远程服务调用(Remote Procedure Call,RPC) RPC 是我们构建分布式系统的最基本前置条件. 这篇文章我们来了解周志明老师笔下的 RPC. RPC 出现的最初目的, ...

  7. 《周志明的软件架构课》学习笔记 Day16

    主动学习 服务端缓存 为系统引入缓存的理由 从开发角度来说,引入缓存会提高系统的复杂度,因为你要考虑缓存的失效.更新.一致性等问题(硬件缓存也有这些问题,只是不需要由你来考虑,主流的 ISA 也都没有 ...

  8. 《周志明的软件架构课》学习笔记 Day13

    主动学习 浏览器的客户端缓存 背景:当万维网刚刚出现的时候,浏览器的缓存机制差不多就已经存在了.在 HTTP 协议设计之初,人们便确定了服务端与客户端之间"无状态"(Statele ...

  9. 周志明jvm第三版笔记-第一部分:第一章 走进java

    1.1 概述:java过去.现在.未来简要概述 1.2 java技术体系 Java技术体系包括了以下几个组成部分: Java程序设计语言: 各种硬件平台上的Java虚拟机实现: Class文件格式: ...

最新文章

  1. hive中的UDAF的使用流程记载
  2. android paint 圆角 绘制_[BOT] 一种android中实现“圆角矩形”的方法
  3. C++(STL):16---deque之常规用法
  4. 11月12号 用户登录输入密码错误达到指定次数后,锁定账户 004
  5. java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...
  6. 简历不会做?集设网社区带来精致的个人网站供你参考
  7. go 排序sort的使用
  8. c语言spi测试代码,C语言程序SPI
  9. [转载] python面向对象编程实例
  10. 【scala】 scala xml 处理(⑨)
  11. 三维地图前端js api对比分析
  12. 用rollup打包vue组件库
  13. linux宝塔下如何强制ssl,宝塔面板一键安装SSL证书强制HTTPS访问设置
  14. 抽基类与PullToRefreshListView
  15. 如何重新安装正版Win10
  16. 百度地图集成,经纬度返回 4.9e-324
  17. 卸载Win10右下角资讯和兴趣(天气)
  18. Python的线程18 Condition类实现田径运动场景
  19. 使用internal(com.android.internal)和hidden(@hide)APIs
  20. WLAN无线局域网IEEE802.11协议二

热门文章

  1. 基于51单片机简易数字示波器Proteus仿真
  2. 数据结构——折半查找法
  3. 对Aurora8b10b的简要理解
  4. 工作站和微型计算机的区别,轻松了解工作站和台式机的区别,用Precision 3551挥洒创意...
  5. js 点击按钮打开浏览器新页签,兼容版
  6. 解决电脑不能进入BIOS页面
  7. 为啥中国移动免费宽带突然不香了, 背后的猫腻,你知道吗?
  8. 在我们使用vue-admin-templete进行二次开发的时候,我们会发现有些是英文,比如分页里面的每页尺码。
  9. 计算Grassmannian geodesic
  10. HTML5基础:布局和标签