美文网首页
分布式系统负载均衡

分布式系统负载均衡

作者: 仰望forward | 来源:发表于2019-12-06 14:36 被阅读0次

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

  • 客户端层:比如用户浏览器,APP端
  • 反向代理层:技术选型Nginx或者F5等
  • Web层:前后端分离场景下,Web端可以用NodeJS,RN,Vue
  • 业务服务层:java,go
  • 数据存储层:DB选型MySQL,Cache选型Redis,搜索选型ES等
第一层:客户端层->反向代理层的负载均衡

DNS轮询:DNS可以通过A(Address,返回域名指向的IP地址)设置多个IP地址。比如这里访问bysocket.com的DNS配置了ip1和ip2。为了反向代理层的高可用,至少会有两条A记录。这样冗余的两个IP对应的Nginx服务实例,防止单点故障。
每次请求bysocket.com域名的时候,通过DNS轮询,返回对应的IP地址,每个IP对应的反向代理层的服务实例,也就是nginx的外网IP。这样可以做到每一个反向代理层实例得到的请求分配是均衡的。

第二层:反向代理层->Web层的负载均衡

通过反向代理层的负载均衡模块处理。比如nginx有多种负载均衡方法:

  1. 请求轮询。请求按时间顺序,逐一分配到web层服务,然后周而复始。如果web服务层服务down掉,自动剔除
  2. ip哈希。按照ip的哈希值,确定路由到对应的web层。只要是用户的ip是均匀的,那么请求到web层也是均匀的。
  3. weight权重
第三层:web层->业务服务层

dubbo负载均衡;feign负载均衡

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

数据库存储层的负载均衡,一般通过DBProxy实现。比如MySQL分库分表。
当单库或者单表访问太大,数据量太大的情况下,需要进行垂直拆分和水平拆分两个维度。比如水平切分规则:

  1. Range、时间
  2. hash取模,订单根据店铺ID等

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

  1. 分布式事务
  2. 跨库join等

相关文章

  • 【转载】负载均衡算法实现java与场景分析

    负载均衡算法实现分布式系统中负载均衡算法在高可用场景下的分析

  • 一致性hash算法

    前言 在分布式系统中,很多服务需要进行负载均衡,负载均衡算法中,如果有映射需求且允许少量不可达重新映射,比如分布式...

  • 系统设计基础知识

    基础知识 负载均衡 分布式系统不可少的组件 有 user 到 web server 之间的负载均衡 有 web s...

  • 负载均衡是怎么做的?

    负载均衡 负载均衡是实现分布式系统高可用的方式之一;负载均衡策略实现了把高并发的流量分摊在其后的服务器集群上;常见...

  • 《分布式技术原理与算法解析》学习笔记Day25

    负载均衡 负载均衡是分布式可靠性中非常关键的一个问题,它在一定程度上反映了分布式系统对业务处理的能力。 什么是负载...

  • 关于负载均衡

    分布式系统中,负载均衡是一个重要功能,常见负载均衡的策略有random,round-robin,least-act...

  • 哈希算法(下)

    哈希算法在分布式系统中的应用 负载均衡 1.需求如何实现一个会话粘滞(session sticky)的负载均衡算法...

  • Nginx学习(一):负载均衡常见手段

    负载均衡   负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数...

  • 关于负载均衡的一切,简单易懂

    什么是负载均衡? 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求...

  • 负载均衡(均匀)

    什么是负载均衡 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/wjhegctx.html