浅谈负载均衡的分类
刚毕业的时候,接触到正式的项目,头一次听说负载是做一个接口,外围系统提供的是负载地址,那时对于负载的概念并不清晰,后来网上查阅的一些资料,大概对负载的作用有了一些了解。对于刚刚提到的那个接口,解释起来就是请求负载服务器地址,然后通过负载均衡器(比如最常见的F5这些商业的负载均衡器)将请求转发到单机服务器上。
18年开始接触做微服务的项目,第一次听说使用nginx可以做到负载均衡,还蒙了一下,因为在我的潜意识里,实现负载均衡的都是那些负载均衡器硬件设备,使用nginx实现负载均衡还是头一次听说,后续又接触到了Ribbon等等。然后就分析了一下负载均衡的实现方式。
负载均衡主要是通过一系列的算法,将请求分发到不同的服务器上,以减轻每台服务器的压力。
常用的负载均衡算法有:轮询、随机、加权轮询、加权随机、最小链接法、原地址哈希等方法。
按照设备分类:
又分为软件负载均衡和硬件负载均衡。
硬件例如F5、Array、Netscaler等等硬件负载均衡器,这些硬件设施有专门的公司去维护,性能也是杠杠的,且不需要我们程序员去踩坑,最大的缺点就是贵!只要公司有钱,买它!
软件方面接触最多的要数nginx、ribbon、fegin这些了,实际上fegin是内嵌了ribbion,这些软件用起来也是非常的方便,开源的,免费的,但是这些东西用起来就需要我们自己去踩坑了,难~
按照技术分类
又分为服务端负载均衡和客户端负载均衡【顾名思义,就是负载是在服务端进行的还是客户端进行的】
服务端:常见技术有Nginx、HAProxy、LVS。各个之间的优缺点可以参考https://www.cnblogs.com/ahang/p/5799065.html
客户端:常见的技术有Ribbion
实际上硬件负载均衡器、服务端负载均衡器和客户端负载均衡是可以同时使用的,我之前做过的一个项目,买的F5做硬件服务器,前端发起请求时通过nginx做反向代理也实现了负载均衡,同时后端使用的是SpringCloud,Eruake、Ribbon实现了客户端的负载均衡,由于项目并发量不大,在使用上并未发现有多大的性能优势,不过总归是用到了这些东西,也容得我慢慢去钻研一下。
下一篇文章我们分析一下负载均衡的算法吧~