宝塔做的网站怎么就可以进去了,求一个能用的网址,wordpress插件统计,打广告专用配图客户端与服务端负载均衡机制
可能有第一次听说集群和负载均衡#xff0c;所以呢#xff0c;我们先来做一个介绍#xff0c;然后再聊服务端与客户端的负载均衡区别。 集群与负载均衡
负载均衡是基于集群的#xff0c;如果没有集群#xff0c;则没有负载均衡这一个说法。 …客户端与服务端负载均衡机制
可能有第一次听说集群和负载均衡所以呢我们先来做一个介绍然后再聊服务端与客户端的负载均衡区别。 集群与负载均衡
负载均衡是基于集群的如果没有集群则没有负载均衡这一个说法。 先来看什么是集群 从图中可以看到集群就是由同一个服务进行的水平扩展只需要复制多方就能组成一个群体这个群体需要使用负载均衡器维系在一起他们才能成为一个集群整体才能说的上是一个集群架构。如果没有负载均衡器单独靠自己无法成为一个整体只能是单独的个体所以负载均衡器也是他们和外部联系的沟通渠道是一个领头羊。此外集群也提供了高可用的目的如果只有一个节点挂了则无法再继续为用户提供服务了显然这不符合如今的市场所以高可用一定要落地的。
负载均衡器 此外负载均衡器是可以用于平摊流量的如果现在流量有300万那么可以每台节点平摊100万的请求这样并发量就提升了压力也就平摊了。 多级网关负载均衡器的类型
硬负载均衡器F5性能非常强大企业级应用可以完全依靠他但是是在太贵了中小公司是无法承担的少则几十万多则上百万我们的老系统就是用的F5每年还要150万的维护费用企业负担太大了。传统软件用F5的会比较多。软负载均衡器解决中小企业痛点很便宜通过软件来实现负载均衡。只需要安装配置则可以实现负载均衡的效果比如NginxApacheHaproxy都可以那么这也是目前java生态里用的最多的方式。
此外还有基于网络模型的四层负载和七层负载
四层代理基于TCP比如LVSKeepalived这玩意就是云负载均衡器的底层如果自己部署需要有独立的机房。配置起来相对比较麻烦一些这个我在架构师课程中有手把手的搭建以及配置有兴趣可以了解一下。七层代理基于HTTP最具有代表的则是Nginx了后续我们也会用到这也是网关所以也可以称之为7层网关。
四层和七层的理解区别四层制作请求转发不会处理请求而七层可以处理请求的比如添加headers请求头修改cookie甚至设置缓存对数据压缩等等所以我们的微服务网关gateway也是四层网关的负载均衡器。所以相对来说四层的功能性会比七层少很多因为他不能处理请求正因为这样他的处理执行能力是相当强大的要比七层快很多。
举个例子你到园区要面试园区保安大爷只会跟你说你往后走左转走到底就是我们公司了。这是七层他不会带你去。而你到了大楼大楼的前台会领着你到公司带着你过去那么他就是七层负载了。这样你就可以更好的理解四层和七层的区别了。
多级网关模型 负载均衡算法
轮询权重url_haship_hash 服务端与客户端负载均衡 服务端负载均衡 上面所说的都是基于服务端的负载均衡器啥意思这是因为请求的分发是需要通过在服务端进行计算的如下图 客户端负载均衡 客户端负载均衡拉取集群列表是相反他会拉取ip列表到本地进行算法随后携带地址去请求目标接口如下图
所以相对的使用客户端负载均衡器的一个整体性能会更高一些因为压力在客户端服务端不需要进行计算了如果是服务端负载均衡器那么所有请求都会在一个地方进行计算那么这台节点就会很热所以往往使用的云服务器硬件配置也会更高更好一些。
此外客户端负载均衡是支持动态扩容的因为他是去中心化的如果是服务端负载那么每次扩展节点都需要修改配置并且重启而客户端则不需要直接复制一个新节点就行了不需要做额外代码或配置的修改非常方便。
微服务负载均衡NacosLoadBalancer LoadBalancer 其实我们之前在演示用户集群的时候其实就加入了这个依赖他就是用于处理微服务的负载均衡的他有自己的一套负载均衡算法。早期其实使用的是Ribbon只不过目前因为种种原因弃用了。现在所使用的都是LoadBalancer而且这是SpringCloud官方出的客户端负载均衡器目的就是用来替代Ribbon的。 测试负载均衡
和用户微服务一样构建2~3个工作微服务集群 配置集群服务 网关排除url为了方便测试 默认模式就是轮询规则。 Nacos的负载均衡 在nacos中设置微服务的负载均衡权重比例。但是设置后不生效。
早期版本自带ribbon可以直接在容器中构建一个Bean对象的NacosRule即可。新版本SpringCloudAibaba已经没有ribbon了。
所以新版本可以直接在yml中进行配置即可 在网关和用户服务中添加
spring:cloud:loadbalancer:nacos:enabled: true最后请求访问这个接口观察结果即可。
拓展OSI七层网络模型
网络模型就是 OSIOpen System Interconnect意思为开放网络互联是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版的他是一种网络互联模型也是一种规范。
网络模型分为七层也就是当用户发起请求到服务器接收会历经七道工序或者说用户利用互联网发送消息给另一个用户也会历经七道工序。这七层可以分为如下
| 层级 | 名称 | 说明 | | --- | --- | --- | | 第七层 | 应用层 | 与用户行为交互 | | 第六层 | 表示层 | 定义数据格式以及数据加密 | | 第五层 | 会话层 | 创建、管理以及销毁会话 | | 第四层 | 传输层 | 创建、管理请求端到响应端端到端的连接 | | 第三层 | 网络层 | 请求端的IP地址 | | 第二层 | 数据链路层 | 提供介质访问与链路管理 | | 第一层 | 物理层 | 传输介质物理媒介 |
以上七层每层可以与上下相邻层进行通信。每一层都是非常复杂的我们不在这里深究我们以举例的形式来阐述每一层是干嘛的。
应用层这是面向用户的最靠近用户为了让用户和计算机交互在计算机里会有很多软件比如eclipseideaqqnginx等这些都是应用软件用户可以通过这些应用软件和计算机交互交互的过程其实就是接口的调用应用层为用户提供了交互的接口以此为用户提供交互服务。那么在这一层最常见的协议有HTTP,HTTPS,FTP,SMTP,POP3等。Nginx在本层为七层负载均衡。 举例我要寄一封信给远在天边的老外LiLei我会打开快递软件下单这个时候我是用户快递软件就是应用服务是建立在计算机上的提供给用户交互的一种服务或称之为手段。表示层该层提供数据格式编码以及加密功能确保请求端的数据能被响应端的应用层识别。 举例我写中文给LiLei他看不懂这个时候我就会使用翻译软件把中文翻译成英文随后信中涉及到一些比较隐私的信息我会加密一下这个时候翻译软件和加密器就充当了表示层的作用他用于显示用户能够识别的内容。会话层会话可以理解为session请求发送到接受响应的这个过程之间存在会话会话层就充当了这一过程的管理者从创建会话到维护会话最后销毁会话。 举例我每次写信给LiLei都会记录在一个小本本上寄信时间日期收信时间日期这本小本本上存有每次通信记录这个小本本就相当于是一个会话的管理者。又或者说我们平时在打电话首先需要拨打电话这是建立会话对方接听电话此时正在通话维持并管理会话通话结束后会话销毁那么这也是一次会话的生命周期。传输层该层建立端到端的连接他提供了数据传输服务在传输层通信会涉及到端口号本层常见的协议为TCP、UDPLVS就是在传输层也就是四层负载均衡。 举例我和LiLei通信过程中会借助快递公司快递公司会分配快递员取件和寄件那么这个快递员则充当传输层的作用。网络层网络通信的时候必须要有本机IP和对方的IP请求端和响应端都会有自己的IP的IP就相当于你家地址门牌号在网络上云服务器有固定的公网IP普通计算机也有只不过是动态IP运营商每天会分配不同的IP给你的计算机。所以网络层也能称之为IP层IP是互联网的基础根本。能提供IP分配的设备则为路由器或交换机。 举例对于拥有固定IP的云服务来说他们都是由腾讯云、阿里云等这样的供应商提供的他们为云服务器提供固定ip电信、移动、联调等运营商为你的计算机动态分配ip每天都不同则这些供应商和运营商都是网络层。同理快递员由物流公司分配和管理那么物流公司就是网络层咯。数据链路层这一层会提供计算机MAC地址通信的时候会携带为了确保请求投递正确所以他会验证检测MAC地址以确保请求响应的可靠性。 举例快递员在投递派送的时候他或客服会预先提前打电话给你确认你家地址对不对、有没有人、货到付款有没有准备好钱等等这个时候快递员或客服就充当了数据链路层的职责。物理层端到端请求响应过程中的媒介物理介质比如网线、中继器等等设备都是你在端到端交互过程中不可缺少的基础设备。 举例快递员在投递的过程中你写的信会历经一些交通运输工具比如首先通过飞机运输到国外在海关统一拿到信以后会通过汽车运输到LiLei所在城市的物流集散地最后快递员通过三轮电频车寄到LiLei家里这个时候飞机、汽车、三轮电瓶车都是物理层的媒介。
那么以上就是七层网络模型大家需要理解其意义即可。需要注意的是Nginx存在于第七层属于七层负载均衡而第四层会有LVS属于四层负载均衡。