简介
负载均衡就是在有多个服务器节点的情况下,让每个服务器的任务分配合理,比如两台服务器都是能一秒处理1w个请求,此时有2w个请求,那么就分别分配到每台服务器1w的请求。
当然实际上还有服务器配置不一样的情况,就要根据权重去分配,比如服务器1只能一秒处理5k请求,服务器2一秒能处理 1.5w请求,那么就根据实际能力去分,这个操作就是负载均衡,实现这种操作的叫负载均衡器。
简而言之,就是根据某个条件去做任务合理分配。负债均衡后对消费者无影响,只是能处理更多消费者,举个栗子:
有个包子店叫黄记包子铺,自己有个工坊,黄记包子工坊,一天能制作500个包子,后来由于包子好吃,
现在每天要卖的包子数量可达到2000,此时,一个工坊的产能远不够,于是又开了3个工坊,刚好一天
能做2000个包子,同时为了区分包子来自哪个工坊,对工坊进行编号为工坊1,工坊2,工坊3,工坊4,
避免如果数量对不上,包子铺不知道找哪个工坊问责。但是对于客户来说,并不知道工坊的存在,只知道店铺在哪里即可。
L4 & L7 负载均衡
首先解释一下这个概念,这个 4 和 7 就是指的是 OSI 七层模型中的层次,可以参考这篇文章:
OSI 四层/七层 网络模型通俗解析 数据链路层/网络层 解析_四层网络模型-CSDN博客
L4L7负载均衡_l4负载-CSDN博客
层级 | OSI七层网络模型 | TCP/IP四层概念模型 | 相关网络协议 |
---|---|---|---|
7 | 应用层 | 应用层 | HTTP,FTP,NFS |
6 | 表示层 | 应用层 | Telnet,SNMP |
5 | 会话层 | 应用层 | SMTP,DNS |
4 | 传输层 | 传输层 | TCP,UDP |
3 | 网络层 | 网络层 | IP,ICMP,ARP |
2 | 数据链路层 | 数据链路层 | FDDI,PPP,Ethernet |
1 | 物理层 | 数据链路层 | IEEE 802.X |
L4 负载均衡
四层就是基于IP+端口的负载均衡;
L7 负载均衡
七层就是基于URL等应用层信息的负载均衡;
同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,
二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;
三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;
四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;
七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。
envoy
envoyproxy/envoy: Cloud-native high-performance edge/middle/service proxy
gRPC的负载均衡
可以使用nginx ,Envoy等实现grpc负载均衡
相关链接
OSI 四层/七层 网络模型通俗解析 数据链路层/网络层 解析_四层网络模型-CSDN博客
#程序的负载均衡_gRPC实战--Kubernetes中使用envoy负载均衡gRPC流量-CSDN博客
L4L7负载均衡_l4负载-CSDN博客
应用高可用服务AHAS_多活容灾MSHA_高可用演练_混沌工程CHAOS-阿里云
GRPC中的服务发现——Envoy_envoy 热加载-CSDN博客
grpc 负载均衡 ( DNS负载均衡,java客户端负载均衡,nginx反向代理负载均衡,k8s集群环境负载均衡 ) 学习总结_grpc nacos负载均衡实现-CSDN博客
Nginx代理gRPC反向代理和负载均衡配置_nginx grpc-CSDN博客
gRPC使用性能增强的HTTP/2协议。 HTTP/2具备更低的延迟的特点,其实是通过利用单个长期存在的TCP连接并在其上多路复用请求/响应。这会给第4层(L4)负载均衡器带来问题,因为它们的级别太低,无法根据接收到的流量类型做出路由决策。这样,尝试对HTTP/2流量进行负载均衡的L4负载均衡器将打开一个TCP连接,并将所有连续的流量路由到该相同的长期连接,从而实际上取消了负载均衡。
Kubernetes的kube-proxy本质上是一个L4负载均衡器,因此我们不能依靠它来均衡微服务之间的gRPC调用。
发表评论