如果项目的用户量少、访问量不大、数据量也不多的时候,一台服务器足以支撑,那么直接项目部署一套,直接访问使用就可以了,但是当用户和数据量不断增多,访问量(并发量)不断增加,一台服务器不在能够支撑业务的时候,就需要使用多台机器,设计高性能的集群来应对。那么当我部署了多台服务器(这里假如是两台),那么调用方是如何访问的呢?服务方如何均衡访问的流量呢?这时候就需要引出负载均衡了。负载均衡就是通过一定的策略,把用户的访问量均匀地转发给后端的服务器;负载均衡可以提高系统的服务能力和高可用性。负载均衡分类常见的负载均衡技术有三种:DNS负载均衡:大概的原理是,当用户访问域名的时候,需要先通过DNS解析域名,找到对应的IP地址,在这个过程中,可以让DNS服务器,根据用户的地理位置,返回不同的IP,这样就可以实现负载均衡,同时也可以提升用户的访问速度。软件负载均衡:用软件来实现流量的分发,有基于传输层实现的负载均衡,比如LVS,也有基于应用层来实现的,比如Nginx;软件负载均衡实现起来很简单,只需要在服务器上部署并进行配置就可以实现;硬件负载均衡:用硬件来实现负载均衡,比如F5(F5NetworkBig-IP),这是一台网络设备,性能很高,同时价格非常的贵。从另外一个角度对负载均衡进行分类,可以分成两种:服务端负载均衡:调用方只访问负载均衡的IP,不需要管后面有多少台服务器。客户端负载均衡:服务端部署多台服务器,客户端知道每台服务器的地址,并通过一定的路由规则,均衡地访问,比如SpringCloudRibbon,当然客户端的负载均衡,通常是需要服务注册发现的配合。常见的负载均衡调度算法轮循(RoundRobin):将请求循环分配给有效的服务器;加权轮循(WeightedRoundRobin):轮训的升级版,给后端的服务器分配不同的权限,根据权重进行循环分配;比如
A、B服务器权重分别是100和50,那么请求会保持2:1的比例进行分配;最少连接数(LeastConnection):分配的请求根据每台服务器当前所打开的连接数来进行分配;源IP哈希(SourceIPHash):对调用方的IP进行HASH运算,并根据这个计算结果分配服务器,这样的好处是同一个主机的请求,始终会被同一个服务器响应(但是不一定均衡)。我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
什么事负载均衡网络的负载均衡是一种动态均衡技术,常见的实现方式是通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。通俗的讲,在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如。那么当用户在浏览器输入的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等。在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的是后端的集群。图中电脑请求淘宝网服务器集群,中间会经过负载均衡器,将请求落到一个具体的服务器上。常见的负载均衡技术
1.LVS技术LVS(LinuxVirtualServer),也就是Linux虚拟服务器。使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。LVS架设的服务器集群系统由三个部分组成:最前端的负载均衡层(LoaderBalancer),中间的服务器群组层,用ServerArray表示,最底层的数据共享存储层,用SharedStorage表示。
2.Nginx是一个网页服务器,它能反向代理HTTP、HTTPS,、SMTP、POP3、IMAP、TCP的协议链接,以及一个负载均衡器和一个HTTP缓存。Nginx主要用来做七层负载均衡,有时候也能够负载TCPIP层。并发性能:官方支持每秒5万并发,实际国内一般到每秒2万并发,有优化到每秒10万并发的。具体性能看应用场景。
3.HAProxyHAProxy也是使用较多的一款负载均衡软件。HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,是免费、快速并且可靠的一种解决方案。特别适用于那些负载特大的Web站点。运行模式使得它可以很简单安全的整合到当前的架构中,同时可以保护你的web服务器不被暴露到网络上。HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。Haproxy主要用来做七层负载均衡。
负载均衡是指将网络流量均衡地分配到多个服务器上,以提高系统的性能和可用性。负载均衡可以分为两类:
1.基于硬件的负载均衡:这种负载均衡通常使用专用的硬件设备,如路由器、交换机和防火墙,来实现负载均衡。
2.基于软件的负载均衡:这种负载均衡使用软件来实现,它可以在服务器上安装负载均衡软件,以实现负载均衡。负载均衡的作用是提高系统的可用性和性能,减少服务器的负载,提高网络的可靠性,并且可以提供高可用性和容错性。