古代皇帝,后宫佳丽三千,没法做到雨露均沾,但为了繁衍后代,子嗣繁盛,弱水三千,只取一瓢饮显然是不行的。不同的朝代有不同的宠幸妃子的方法,著名的有羊车望幸、掷筛侍寝、翻牌悬灯等等。如果皇帝懂得负载均衡算法的话,就大可不必这么折腾了!
讨论负载均衡,那么归根结底其要解决的问题是什么?当一台服务器的承受能力达到上限时,那么就需要多台服务器来组成集群,提升应用整体的吞吐量,那么这个时候就涉及到如何合理分配客户端请求到集群中不同的机器,这个过程就叫做负载均衡,当然这也是负载均衡要解决的问题。
按实现方式,可以分为硬件负载均衡(如 F5 、A10)、软件负载均衡(如 LVS、Nginx、HAProxy)、DNS 负载均衡。软件负载均衡又分四层和七层负载均衡,四层负载均衡就是在网络层利用 IP 地址端口进行请求的转发,基本上就是起个转发分配作用。而七层负载均衡就是可以根据访问用户的 HTTP 请求头、URL 信息将请求转发到特定的主机。LVS 为四层负载均衡。Nginx、HAProxy 可四可七。
除了专用硬件和 Nginx 这种专业软件提供负载均衡外,在代码中直接实现也是种常见的方式。比如使用 Memcached 集群时通常会在 client 中采用 hash 取模或者一致性哈希来使数据均匀分布。
在分布式系统中,多台服务器同时提供一个服务,并统一到服务配置中心进行管理。消费者通过查询服务配置中心,获取到服务到地址列表,需要选取其中一台来发起RPC远程调用。如何选择,则取决于具体的负载均衡算法,对应于不同的场景,选择的负载均衡算法也不尽相同。负载均衡算法的种类有很多种,常见的负载均衡算法包括轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法等,应根据具体的使用场景选取对应的算法。
2月2日~4日晚八点,架构师Tony老师将开启全新训练营《.Net5+负载均衡算法实战 》,Tony老师在JD、艺龙等知名互联网企业拥有过丰富的高并发、高可用实战经验,此次课程,案例全部来自于企业实战场景,耗时两周研发,全网首发!本号粉丝,一律免费学习,内容很干,赶快抢占名额!!!
长按扫码,免费入群学习
如遇扫码失败,请添加下方微信
微信号:ruanmou_xy
10000分钟学习资料免费领
感谢大家长期以来的支持与关注!年底了,给大家送一波超级福利,扫下方二维码入群即可获取超10000分钟全套学习资料。此视频合集涵盖.Net5,技术架构和系统架构技术栈全面讲解,能够快速提升架构思维能力。
长按扫码,免费入群学习
如遇扫码失败,请添加下方微信
微信号:ruanmou_xy