DNS 负载均衡、硬件负载均衡和软件负载均衡[通俗易懂]

DNS 负载均衡、硬件负载均衡和软件负载均衡[通俗易懂]当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的负载均衡器。负载均衡不只是为了计算单元的负载达到均衡状态,他依据分配算法目标,有的基于负载考虑,有的基于性能(吞吐量、响应时间)考虑,有的基于业务考虑。DNS负载均衡DNS是最简单也是最常见的负载均衡方式,一般用来实现地理级别…

大家好,又见面了,我是你们的朋友全栈君。

当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。

高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的负载均衡器。负载均衡不只是为了计算单元的负载达到均衡状态,他依据分配算法目标,有的基于负载考虑,有的基于性能(吞吐量、响应时间)考虑,有的基于业务考虑。

DNS 负载均衡

DNS 是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。DNS 负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点。仔细分析一下优缺点,

优点:

简单、成本低:负载均衡工作交给 DNS 服务器处理,无须自己开发或者维护负载均衡设备。

就近访问,提升访问速度:DNS 解析时可以根据请求来源 IP,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。

缺点:

更新不及时:DNS 缓存的时间比较长,修改 DNS 配置后,由于缓存的原因,还是有很多用户会继续访问修改前的 IP,这样的访问会失败,达不到负载均衡的目的,并且也影响用户正常使用业务。

扩展性差:DNS 负载均衡的控制权在域名商那里,无法根据业务特点针对其做更多的定制化功能和扩展特性。

分配策略比较简单:DNS 负载均衡支持的算法少;不能区分服务器的差异(不能根据系统与服务的状态来判断负载);也无法感知后端服务器的状态。

针对 DNS 负载均衡的一些缺点,对于时延和故障敏感的业务,有一些公司自己实现了 HTTP-DNS 的功能,即使用 HTTP 协议实现一个私有的 DNS 系统。这样的方案和通用的 DNS 优缺点正好相反。

 

硬件负载均衡

硬件负载均衡是通过单独的硬件设备来实现负载均衡功能,这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络设备。目前业界典型的硬件负载均衡设备有两款:F5 和 A10。这类设备性能强劲、功能强大,但价格都不便宜,一般只有“土豪”公司才会考虑使用此类设备。普通业务量级的公司一是负担不起,二是业务量没那么大,用这些设备也是浪费。

硬件负载均衡的优点是:

功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。

性能强大:对比一下,软件负载均衡支持到 10 万级并发已经很厉害了,硬件负载均衡可以支持 100 万以上的并发。

稳定性高:商用硬件负载均衡,经过了良好的严格测试,经过大规模使用,稳定性高。

支持安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙、防 DDoS 攻击等安全功能。

硬件负载均衡的缺点是:

价格昂贵

扩展能力差:硬件设备,可以根据业务进行配置,但无法进行扩展和定制。

 

软件负载均衡

软件负载均衡通过负载均衡软件来实现负载均衡功能,常见的有 Nginx 和 LVS,其中 Nginx 是软件的 7 层负载均衡,LVS 是 Linux 内核的 4 层负载均衡。4 层和 7 层的区别就在于协议和灵活性,Nginx 支持 HTTP、E-mail 协议;而 LVS 是 4 层负载均衡,和协议无关,几乎所有应用都可以做,例如,聊天、数据库等。

软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。Ngxin 的性能是万级,一般的 Linux 服务器上装一个 Nginx 大概能到 5 万 / 秒;LVS 的性能是十万级,据说可达到 80 万 / 秒;而 F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有。当然,软件负载均衡的最大优势是比硬件负载均衡便宜。

软件负载均衡的优点:

简单:无论是部署还是维护都比较简单。

便宜:只要买个 Linux 服务器,装上软件即可。

灵活:4 层和 7 层负载均衡可以根据业务进行选择;也可以根据业务进行比较方便的扩展,例如,可以通过 Nginx 的插件来实现业务的定制化功能。

性能一般:一个 Nginx 大约能支撑 5 万并发。

功能没有硬件负载均衡那么强大。一般不具备防火墙和防 DDoS 攻击等安全功能。

参考来源:极客时间

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159089.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstrom 2022激活码[最新免费获取]

    (phpstrom 2022激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月2日
    243
  • c++中 this指针详解[通俗易懂]

    c++中 this指针详解[通俗易懂]this是c++中的一个关键字,也是一个常量指针,指向当前对象,也就是当前对象的首地址。通过this指针,可以访问当前对象的成员变量和成员函数。【特性】1. this指针的类型是类类型*const2. this指针并不是对象本身的一部分,不会影响sizeof的结果3. this的作用域在类成员函数的内部4. this指针是类成员函数的第一个默认隐含参数,

    2022年5月13日
    48
  • 奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用

    奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用本打算实现一个点击按钮弹出一个landKindView然后点击屏幕其他部分时移除这个VIew,没想到的是,出了诸多不可思议的问题。在给这个控制器的View添加手势时,然后居然拦截不到,touchesbegin方法,然后又试了下添加tapGesture,依旧是没有反应。然后我试着在touchesBegin方法中 实现[supertouchesBegins….];依旧是没有任

    2022年7月25日
    11
  • webstorm关闭eslint检测

    webstorm关闭eslint检测vue项目已经设置关闭eslint,但是代码还是很多标红线的地方,原因是webstorm这个ide默认启用了eslint,可以在设置中关闭把Enable的勾去掉即可

    2022年5月2日
    68
  • ftk学习记(icon篇)

    ftk学习记(icon篇)

    2022年1月28日
    66
  • android小游戏源码_全球最大手游源码共享网站

    android小游戏源码_全球最大手游源码共享网站Android自定义效果——随机抽奖一个模拟抽奖的效果,用户设定若干个选项,添加之后,就可以通过程序,来帮助随机选择其中一项出来。这个类似超市里面那种指针转盘抽奖,run之后是一个动态效果图,初始快速

    2022年8月2日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号