一、 什么是负载均衡?
什么是负载均衡?
记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡和 HTTP 缓存等。那么这里的 负载均衡 是什么?
负载均衡(LB,Load Balance),是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。
资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行,用来解决互联网分布式系统的大流量、高并发和高可用的问题。那什么是高可用呢?
二、什么是高可用?
首先了解什么是高可用?
这是 CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:
那高可用(High Availability)是什么?高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。
衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。
举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如电商网站有赞,服务不可用会造成商家损失金钱和用户。那么在提高可用性基础上同时,对系统宕机和服务不可用会有补偿。
比如下单服务,可以使用带有负载均衡的多个下单服务实例,代替单一的下单服务实例,即使用冗余的方式来提高可靠性。
总而言之,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,冗余同一个服务实例的方式,解决分布式系统的大流量、高并发和高可用的问题。负载均衡核心关键:在于是否分配均匀。
三、常见的负载均衡案例
场景1:微服务架构中,网关路由到具体的服务实例 hello:
两个相同的服务实例 hello service ,一个端口 8000 ,另一个端口 8082
通过 Kong 的负载均衡 LB 功能,让请求均匀的分发到两个 hello 服务实例
Kong 的负载均衡策略算法很多:默认 weighted-round-robin 算法,还有 consumer: consumer id 作为 hash 算法输入值等。
场景2:微服务架构中,A 服务调用 B 服务的集群。通过了 Ribbon 客户端负载均衡组件:
四、互联网分布式系统解决方案
常见的互联网分布式系统架构分为几层,一般如下:
一个请求从第 1 层到第 4 层,层层访问都需要负载均衡。即每个上游调用下游多个业务方的时候,需要均匀调用。这样整体系统来看,就比较负载均衡
第 1 层:客户端层 -> 反向代理层 的负载均衡
客户端层 -> 反向代理层的负载均衡如何实现呢?
答案是:DNS 的轮询。 DNS 可以通过 A (Address,返回域名指向的 IP 地址)设置多个 IP 地址。比如这里访问 bysocket.com 的 DNS 配置了 ip1 和 ip2 。为了反向代理层的高可用,至少会有两条 A 记录。这样冗余的两个 ip 对应的 nginx 服务实例,防止单点故障。
每次请求 bysocket.com 域名的时候,通过 DNS 轮询,返回对应的 ip 地址,每个 ip 对应的反向代理层的服务实例,也就是 nginx 的外网ip。这样可以做到每一个反向代理层实例得到的请求分配是均衡的。
第 2 层:反向代理层 -> Web 层 的负载均衡
反向代理层 -> Web 层 的负载均衡如何实现呢?
是通过反向代理层的负载均衡模块处理。比如 nginx 有多种均衡方法:
1.请求轮询。请求按时间顺序,逐一分配到 web 层服务,然后周而复始。如果 web 层服务 down 掉,自动剔除
ip 哈希。按照 ip 的哈希值,确定路由到对应的 web 层。只要是用户的 ip 是均匀的,那么请求到 Web 层也是均匀的。
1.还有个好处就是同一个 ip 的请求会分发到相同的 web 层服务。这样每个用户固定访问一个 web 层服务,可以解决 session 的问题。
weight 权重 、 fair、url_hash 等
第 3 层:Web 层 -> 业务服务层 的负载均衡
Web 层 -> 业务服务层 的负载均衡如何实现呢?
比如 Dubbo 是一个服务治理方案,包括服务注册、服务降级、访问控制、动态配置路由规则、权重调节、负载均衡。其中一个特性就是智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
为了避免避免单点故障和支持服务的横向扩容,一个服务通常会部署多个实例,即 Dubbo 集群部署。会将多个服务实例成为一个服务提供方,然后根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。LoadBalance 组件从提供者地址列表中,使用均衡策略,选择选一个提供者进行调用,如果调用失败,再选另一台调用。
Dubbo内置了4种负载均衡策略:
同样,因为业务的需要,也可以实现自己的负载均衡策略
第 4 层:业务服务层 -> 数据存储层 的负载均衡
数据存储层的负载均衡,一般通过 DBProxy 实现。比如 MySQL 分库分表。
当单库或者单表访问太大,数据量太大的情况下,需要进行垂直拆分和水平拆分两个维度。比如水平切分规则:
但伴随着这块的负载会出现下面的问题,需要解决:
现状分库分表的产品方案很多:当当 sharding-jdbc、阿里的 Cobar 等
五、小结
对外看来,负载均衡是一个系统或软件的整体。对内看来,层层上下游调用。只要存在调用,就需要考虑负载均衡这个因素。所以负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。考虑主要是如何让下游接收到的请求是均匀分布的:
第 1 层:客户端层 -> 反向代理层 的负载均衡。通过 DNS 轮询
第 2 层:反向代理层 -> Web 层 的负载均衡。通过 Nginx 的负载均衡模块
第 3 层:Web 层 -> 业务服务层 的负载均衡。通过服务治理框架的负载均衡模块
第 4 层:业务服务层 -> 数据存储层 的负载均衡。通过数据的水平分布,数据均匀了,理论上请求也会均匀。比如通过买家ID分片类似。
评论时间:2024-03-25 12:25:01
2.打开安怎么访问虚拟主机站点 装包北京虚拟主机提供商 包
评论时间:2022-11-02 15:25:01
香港的vps服务器是云主机与服务器的区别 目前最先进、功能最全,便宜虚拟主机价格 前最先进、功能最全,性能最高的
评论时间:2022-10-23 15:25:02
这种基于分布式存储、虚拟化与多任务协同处理等新特性,可以将大量分散的计算资源集中起来进行分析处理和运行管理,从而提高数据处理效率云主机组成 并降低运营成本,实现快速高效地服务于各种业务场景江苏虚拟主机购买 快速高效地服务于各种业务场景
评论时间:2022-09-01 03:25:01
12.具有一定的团队合作精神以及组织管共享虚拟主机是什么 理能力服务器搭建教程 神以及组织管理能力
评论时间:2022-08-01 15:25:02
服务器可服务器架子怎么拆 以分为两类:I/O类服务器和软件定服务器作用 和软件定义型服务器
2023-12-25 22:44:35 admin
活动发布区版规2023-05-27 22:03:52 御风而行
容器、无服务器、虚拟机:安全性差...2023-05-27 20:43:39 1356
服务器宕机的造成原因和解决方法介...2023-05-27 20:43:25 qingym
别糊涂了!服务器与工作站的五大区...2023-05-27 19:08:41 小绵羊0123
科技巨头布局云端 服务器 网络硬...2023-05-27 18:17:46 姐姐的跟屁虫
钉钉因系统访问流量激增,宕机1小...2022-07-23 00:34:02 freeatom
常见ftp命令 FTP命令使用详...2022-07-21 02:17:02 ares
双硬盘组建Raid0磁盘阵列图文...2022-07-20 06:17:02 mankeung123
用友软件客户端连接不上服务器的解...2022-07-23 00:51:02 antonfxb
WebService实例2022-07-13 05:38:02 苯小孩
开发、运维不可不看的Linux调...2022-07-20 18:51:02 nightstone
如何使用Charles抓取Web...2021-12-25 05:38:01 青青子w
石家庄服务器托管并不局限于石家庄...2022-02-11 05:38:03 迷失與我
Wins服务器配置2022-03-26 05:38:03 cech
如何在webmin中设置samb...2022-04-06 05:38:02 shuiduo
如何在自己电脑架设FTP服务器2022-07-04 05:38:02 csf1906
20款开发运维必备的顶级工具,速...2022-07-15 05:38:02 gt2571
9个优秀SSD状态监控及性能优化...2022-07-19 20:17:02 dengyu0429
linux vi使用及详细介绍2022-07-20 01:00:05 激动的舌头
Linux视频教程:用户管理命令...2022-07-21 20:51:02 jessica-an
创建本地FTP站点2022-02-07 05:38:03 jasonkidd
WEB服务器配置详解2022-07-20 04:51:02 wolfssss
ACL权限-默认与递归(4)2022-07-22 15:00:05 淡水珊瑚
Linux下 Samba Ser...