iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >分布式系统负载均衡案例分析
  • 888
分享到

分布式系统负载均衡案例分析

2023-06-27 19:06:56 888人浏览 八月长安
摘要

这篇文章主要介绍“分布式系统负载均衡案例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“分布式系统负载均衡案例分析”文章能帮助大家解决问题。什么是负载均衡?记得第一次接触 Nginx 是在实验室,

这篇文章主要介绍“分布式系统负载均衡案例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“分布式系统负载均衡案例分析”文章能帮助大家解决问题。

什么是负载均衡?

记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡和 Http 缓存等。那么这里的 负载均衡 是什么?

负载均衡(LB,Load Balance),是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。

分布式系统负载均衡案例分析

资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行,用来解决互联网分布式系统的大流量、高并发高可用的问题。那什么是高可用呢?

什么是高可用?

首先了解什么是高可用?

这是 CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:

Consistency(一致性)

Availability(可用性)

Partition tolerance(分区容错性)

那高可用(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 客户端负载均衡组件:

– 负载均衡策略算法并不高级,最简单的是随机选择和轮循

互联网分布式系统解决方案

分布式系统负载均衡案例分析

常见的互联网分布式系统架构分为几层,一般如下:

客户端层:比如用户浏览器、APP 端

反向代理层:技术选型 Nignx 或者 F5 等

WEB 层:前后端分离场景下, Web 端可以用 nodejs 、 RN 、Vue

业务服务层:用 Java 、Go,一般互联网公司,技术方案选型就是 SC 或者 Spring Boot + dubbo 服务化

数据存储层:DB 选型 MySQL ,Cache 选型 Redis ,搜索选型 ES 等

一个请求从第 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 有多种均衡方法:

请求轮询。请求按时间顺序,逐一分配到 web 层服务,然后周而复始。如果 web 层服务 down 掉,自动剔除

upstream web-server {   server ip3;   server ip4;}

ip 哈希。按照 ip 的哈希值,确定路由到对应的 web 层。只要是用户的 ip 是均匀的,那么请求到 Web 层也是均匀的。

还有个好处就是同一个 ip 的请求会分发到相同的 web 层服务。这样每个用户固定访问一个 web 层服务,可以解决 session 的问题。

upstream web-server {   ip_hash;   server ip3;   server ip4;}

weight 权重 、 fair、url_hash 等

第 3 层:Web 层 -> 业务服务层 的负载均衡

Web 层 -> 业务服务层 的负载均衡如何实现呢?

比如 Dubbo 是一个服务治理方案,包括服务注册、服务降级、访问控制、动态配置路由规则、权重调节、负载均衡。其中一个特性就是智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

为了避免避免单点故障和支持服务的横向扩容,一个服务通常会部署多个实例,即 Dubbo 集群部署。会将多个服务实例成为一个服务提供方,然后根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。LoadBalance 组件从提供者地址列表中,使用均衡策略,选择选一个提供者进行调用,如果调用失败,再选另一台调用。

Dubbo内置了4种负载均衡策略:

RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。

RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。

LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。

ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。

同样,因为业务的需要,也可以实现自己的负载均衡策略

第 4 层:业务服务层 -> 数据存储层 的负载均衡

数据存储层的负载均衡,一般通过 DBProxy 实现。比如 Mysql 分库分表。

当单库或者单表访问太大,数据量太大的情况下,需要进行垂直拆分和水平拆分两个维度。比如水平切分规则:

Range 、 时间

hash 取模,订单根据店铺ID 等

但伴随着这块的负载会出现下面的问题,需要解决:

分布式事务

跨库 join 等

现状分库分表的产品方案很多:当当 sharding-jdbc、阿里的 Cobar 等

关于“分布式系统负载均衡案例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 分布式系统负载均衡案例分析

本文链接: https://www.lsjlt.com/news/313305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分布式系统负载均衡案例分析
    这篇文章主要介绍“分布式系统负载均衡案例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“分布式系统负载均衡案例分析”文章能帮助大家解决问题。什么是负载均衡?记得第一次接触 Nginx 是在实验室,...
    99+
    2023-06-27
  • web分布式系统的负载均衡怎么实现
    本篇内容介绍了“web分布式系统的负载均衡怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、「负载均衡」是什么  &nbs...
    99+
    2023-06-02
  • 负载均衡与分布式的区别
    负载均衡与分布式的区别:1、负载均衡与分布式的集群处理维度不同;2、分布式管控所有节点的执行过程,而负载均衡则不对节点进行管控;3、分布式中节点是相互依存的,而负载均衡中各节点之间是平等独立的;4、分布式某节点宕机会直接影响全部程序运行,而...
    99+
    2024-04-02
  • Golang 函数在分布式系统中的负载均衡技术
    go 函数在分布式系统中可以采用多种负载均衡技术:轮询负载均衡加权轮询哈希负载均衡一致性哈希 Golang 函数在分布式系统中的负载均衡技术 在分布式系统中,将流量均匀分布在多个实例上...
    99+
    2024-04-20
    分布式系统 负载均衡 git golang
  • Kubernetes gRPC负载均衡分析
    本篇内容主要讲解“Kubernetes gRPC负载均衡分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes gRPC负载均衡分析”吧!安装环境依赖docker-desktop...
    99+
    2023-06-25
  • 分布式系统中Java语言如何实现负载均衡?
    随着互联网技术的发展,分布式系统越来越普及。在分布式系统中,负载均衡是一个非常关键的问题。负载均衡能够提高系统的可靠性和性能,保证系统的稳定运行。那么在Java语言中,如何实现负载均衡呢? 一、什么是负载均衡? 负载均衡是将工作负载分配给...
    99+
    2023-10-09
    分布式 关键字 numy
  • 分布式系统中的负载均衡,Go语言有哪些实现方案?
    随着分布式系统的普及,负载均衡技术也变得越来越重要。负载均衡的目的是将请求分配到多个服务器上,以提高系统的可用性、可靠性和性能。而Go语言的高并发和轻量级特性,使得它成为了分布式系统中负载均衡的首选语言之一。本文将介绍Go语言中的负载均衡...
    99+
    2023-09-04
    分布式 http leetcode
  • Java分布式系统中接口的负载均衡,你了解吗?
    随着互联网的发展,分布式系统已经成为了企业级系统的标配。分布式系统中,接口的负载均衡是一个非常关键的问题。在本文中,我们将深入探讨Java分布式系统中接口的负载均衡问题,并提供一些实用的演示代码。 什么是负载均衡? 负载均衡是指在分布式系...
    99+
    2023-08-29
    分布式 接口 实时
  • 分布式系统关注点——「负载均衡」到底该如何实施?
    本文长度为3032字,预计读完需1.1MB流量,建议阅读8分钟。         前面两篇《分布式系统关注点——初识「高可用」》、《分布式系统关注点——仅需这一篇,吃透「负载均衡」妥妥的》看...
    99+
    2023-06-05
  • 如何在PHP开发中处理分布式系统和负载均衡?
    如何在PHP开发中处理分布式系统和负载均衡?随着互联网技术的快速发展,分布式系统和负载均衡已经成为了处理高并发和大流量的重要手段。在PHP开发中,如何合理地处理分布式系统和负载均衡,提高系统的稳定性和性能成为了一个值得研究的问题。本文将针对...
    99+
    2023-11-04
    PHP 分布式系统 负载均衡
  • PHP开发缓存的分布式与负载均衡
    随着互联网的不断发展,网站的访问量越来越大,为了保证网站的可用性和性能,缓存、分布式和负载均衡成为了必不可少的技术。在PHP开发中,如何实现缓存的分布式和负载均衡是一大挑战。在本文中,将介绍基于Redis和Memcached的分布式缓存和基...
    99+
    2023-11-07
    缓存 分布式 PHP开发
  • 分布式系统中,Java关键字如何协助实现负载均衡?
    分布式系统中,负载均衡是一个非常重要的概念,它指的是将多个请求平均分配到不同的服务器上,以实现更高效的资源利用和更好的用户体验。而在实现负载均衡时,Java关键字也发挥了重要的作用。本文将详细讨论Java关键字在分布式系统中如何协助实现负载...
    99+
    2023-09-03
    关键字 分布式 load
  • k8s使用ingress-nginx负载均衡的示例分析
    本篇文章给大家分享的是有关k8s使用ingress-nginx负载均衡的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ingress-nginx负载均衡调用顺序:用户-...
    99+
    2023-06-04
  • Go语言的分布式文件负载均衡方案,你知道吗?
    分布式系统中的负载均衡是一个非常重要的问题。在分布式文件系统中,负载均衡尤其重要。如果在分布式文件系统中没有好的负载均衡方案,就会导致一些节点的负载过重,而其他节点却处于闲置状态。这不仅浪费了资源,而且可能会导致系统的崩溃。在Go语言中,...
    99+
    2023-08-18
    分布式 load 文件
  • kubernetes中负载均衡机制Ingress的示例分析
    这篇文章将为大家详细讲解有关kubernetes中负载均衡机制Ingress的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:前言Kubernetes在设计之初就充分考虑了针对容器的服务发现与负...
    99+
    2023-06-04
  • MongoDB的分布式架构与负载均衡怎么配置
    MongoDB是一个支持分布式架构的数据库系统,它可以通过配置副本集和分片集群来实现数据的分布存储和负载均衡。 在MongoDB中,...
    99+
    2024-05-07
    MongoDB
  • HBase负载均衡和性能指标的示例分析
    小编给大家分享一下HBase负载均衡和性能指标的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HBase负载均衡和性能指标在分布式系统中,负载均衡是一个非...
    99+
    2023-06-02
  • SpringCloud负载均衡组件Ribbon源码分析
    本文小编为大家详细介绍“SpringCloud负载均衡组件Ribbon源码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringCloud负载均衡组件Ribbon源码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-02
  • Java关键字是如何实现分布式负载均衡的?
    随着互联网的发展,分布式系统已成为现代软件开发的重要组成部分。在分布式系统中,负载均衡是一个至关重要的问题。Java关键字是如何实现分布式负载均衡的呢?本文将介绍Java关键字在分布式负载均衡中的应用以及演示代码。 一、Java关键字在分...
    99+
    2023-09-03
    关键字 分布式 load
  • 分布式文件负载均衡的解决方案:Go语言的好帮手
    在分布式系统中,文件负载均衡是一个重要的问题。由于文件在不同的节点之间传输,可能会导致某些节点负载过高,从而影响整个系统的性能。因此,如何实现文件负载均衡成为分布式系统设计中的一个关键问题。在这篇文章中,我们将介绍一种基于Go语言的分布式...
    99+
    2023-08-18
    分布式 load 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作