鱼缸为什么不能送人| 迟缓是什么意思| 身上长红色痣是什么原因| 总是犯困是什么原因| 抽水是什么意思| 魔性是什么意思| 女性尿急憋不住尿是什么原因| 多多益善的意思是什么| vjc是什么品牌| 生吃紫苏叶有什么功效| 大便是黑色是什么原因| 什么是化疗和放疗| 盆腔积液是什么症状| 镜检白细胞高是什么原因| 打喷嚏是什么原因引起的| 淋巴细胞偏高说明什么问题| 虎是什么结构| 胎菊泡水喝有什么功效| 脸上长痣是什么原因造成的| 植物神经紊乱用什么药| 肺ca是什么意思| 喝黑豆浆有什么好处| 百事可乐和可口可乐有什么区别| 七月上旬是什么时候| 什么什么有味| 青柠檬和黄柠檬有什么区别| 什么是免疫组化| 胆固醇高吃什么药| 眼皮发黑是什么原因| 中午喜鹊叫有什么预兆| 蒲公英和什么相克致死| 嗓子疼咳嗽挂什么科| loewe是什么牌子| 四叶草代表什么意思| 孔子姓什么| 巧囊是什么原因形成的| 晚上肚子疼是什么原因| 虫字旁与什么有关| 腔梗和脑梗有什么区别| 为伊消得人憔悴什么意思| 早搏什么意思| electrolux是什么牌子| 一条条什么| 飞短流长是什么意思| 明月对什么| camper是什么牌子| 淀粉在超市里叫什么| hrd阳性是什么意思| 站着腰疼是什么原因引起的| 鳄鱼为什么流眼泪| 什么原因引起尿酸高| 隐性基因是什么意思| 农转非是什么意思| 护照免签是什么意思| 什么是ci| 西南方向五行属什么| 头发属于什么组织| 甲木命是什么意思| 黄精是什么东西| 坐月子什么不能吃| 哈工大全称是什么| 软糯什么意思| 糖类抗原125偏高是什么意思| 心神不定是什么生肖| 身上痒是什么情况| 起鸡皮疙瘩是什么原因| 腱鞘炎贴什么膏药| ptc是什么| 随礼钱有什么讲究| 男的叫少爷女的叫什么| 喝山楂水有什么功效与作用| 前列腺特异性抗原是什么意思| 包皮发炎红肿用什么药| 厘清和理清的区别是什么| 泻火是什么意思| 白头翁是什么生肖| 爱吃甜食是缺乏什么| 龟苓膏不能和什么一起吃| 老婆的弟弟叫什么| 穿丝袜有什么好处| 瘦脸针的危害有什么副作用| 小姨的女儿叫什么| 手筋痛是什么原因| 比翼双飞是什么意思| 一马平川是什么生肖| 螺蛳粉有什么危害| 泌乳素高是什么原因引起的| 反清复明的组织叫什么| ws什么意思| 春节在什么时候| 表现优异是什么意思| 风格是什么意思| 肌酐高用什么药| 耳朵痛吃什么药| 炁怎么读什么意思| 串词是什么| kp是什么意思| 坊字五行属什么| 激光脱毛有什么副作用| 苍耳是什么东西| 粉红色泡沫样痰是什么病| 庶子是什么意思| 太平果是什么水果| 毛囊炎用什么药膏好| 小孩肚脐眼周围疼是什么原因| 心包隐窝是什么意思| 土耳其烤肉是用什么肉| 无花果吃多了有什么坏处| 降压药什么时候吃比较好| 促甲状腺激素偏高是什么意思| 空调什么牌子的好| 月经没来吃什么药可以催月经来| 非典是什么| 蓝营绿营什么意思| 阴灵是什么意思| 睾丸癌是由什么引起的| kate是什么意思| 心房颤动是什么意思| 白细胞十一是什么意思| 青鱼和草鱼有什么区别| 尿道炎吃什么药好得快| 冬字五行属什么| 白细胞高是什么病| 奇门遁甲是什么意思| 每天吃洋葱有什么好处| 黑色记号笔用什么能擦掉| 路人皆知的上一句歇后语是什么| 龙凤胎是什么意思| ctp是什么| 叩首是什么意思| 胸闷是什么原因造成的| 唯利是图是什么生肖| 洁面慕斯和洗面奶有什么区别| 隐翅虫皮炎用什么药| 类风湿关节炎吃什么药效果好| 儿童手指头脱皮什么原因引起的| 鸽子夏天喝什么水好| 护士节送什么花| 梦见自己会开车了是什么意思| 什么是纤维化| phr是什么词性| 什么是欲望| 送老师什么花好| 管医院的是什么部门| 豌豆黄是什么| 人中长痘痘什么原因| 嗜是什么意思| 检查肺部最好做什么检查| 梦到人死了是什么意思| 银屑病是什么| 农历10月14日是什么星座| 甲沟炎有什么药| 补肾最好的药是什么药| 什么东西护肝养肝| 白居易有什么之称| 什么时候开始暑伏| 熬夜到什么程度会猝死| 扭捏是什么意思| 大便少是什么原因| a和b生的孩子是什么血型| 猪尾巴炖什么好吃| 当医生学什么专业| 吃洋葱有什么好处| 现在当兵需要什么条件| 沙拉酱可以做什么美食| 清新的什么| 吃什么增加卵泡| 小朋友膝盖疼是什么原因| 什么是冰种翡翠| 乙肝复查检查什么项目| 寒性和凉性有什么区别| 八十岁叫什么之年| 拌黄瓜需要什么调料| 耳后淋巴结肿大挂什么科| 住院医师是什么意思| 107是什么意思| ip地址是什么意思| 儿童铅超标有什么症状| 肛门跳动是什么原因| 雌激素是什么| 黑枸杞和红枸杞有什么区别| 指甲小月牙代表什么| 肺气肿是什么原因引起的| 海马体是什么| 乳腺炎吃什么药好| 丝光棉是什么面料| 手淫什么意思| 备孕去医院挂什么科| gdp是什么意思| 肾结水是什么原因造成的| 胃出血吃什么食物好养胃| 四肢无力是什么原因| 尿酸高要注意什么饮食| no是什么| 四肢无力是什么原因| 头癣用什么药膏最好| 女性内分泌失调有什么症状| 电影bd是什么意思| 肚脐周围是什么肠| 山楂片泡水喝有什么好处| 领结婚证需要准备什么| 孕妇吃蓝莓对胎儿有什么好处| 腰椎ct能查出什么| 什么的朝霞| 甲状腺结节不能吃什么东西| 五月份是什么季节| 虾黄是虾的什么部位| 血糖高吃什么菜| 梦见看房子是什么预兆| 元宵节送什么| 103是什么意思| prn是什么意思| 投诉与举报有什么区别| 飞字五行属什么| 查甲功是什么意思| b27是什么检查| 抗心磷脂抗体是什么| 唐筛和无创有什么区别| dfs是什么| 黑五是什么时候| absorb什么意思| 五月十二是什么星座| 尿道炎吃什么药| 坐月子可以吃什么蔬菜| 自传是什么意思| 一级法官是什么级别| 呃逆是什么意思| gucci是什么品牌| 对对子是什么意思| 钠氯偏低是什么原因| 为什么会突然不爱了| 健康证长什么样| 峰会什么时候开| 林彪为什么叛逃| 梦见自己抬棺材是什么意思| 炸油条用什么油最好| 胆结石是什么原因造成的| 眼睛流泪是什么原因| 虚构是什么意思| 乳腺结节是什么引起的| 丑什么生肖| 公立医院和私立医院有什么区别| 2岁属什么生肖| 高血压吃什么盐| 水乳是什么| 敬请是什么意思| 乳头是什么| 什么的摇动| 小鬼是什么意思| 去心火吃什么药| 耳朵尖的人什么命| 植物神经紊乱挂什么科| 上吐下泻吃什么好| 四月二号是什么星座| 宝诰是什么意思| 什么是坐骨神经疼有什么症状| gag是什么意思| 什么叫生酮| 红细胞偏低有什么危害| 胆怯的什么| 吃力不讨好是什么意思| 御是什么意思| 响是什么意思| gm是什么意思| 百度

郭富城方媛今日大婚 新人疑坐直升机前往酒店

1

1. 问题的提出

百度 请他做好到中央纪委工作的思想准备。

负载均衡并不是一个很新的技术方向。硬件形态的负载均衡器至少已经存在了二十年。在传统的硬件网络负载均衡器中,包含了比较综合的功能。从协议的角度,包含了对TCP、UDP流量的支持,也包含了对HTTP、HTTPS等协议的处理。

而在大多数互联网公司中,普遍使用软件形态的负载均衡器,并且基于所处理的协议区分为两种不同的系统:
(1) 四层负载均衡,也被称为网络负载均衡,仅用于对TCP、UDP流量进行处理。四层负载均衡在转发中主要基于IP地址、端口等信息。四层负载均衡的开源软件包括LVS、DPVS、Katran等,代表了三种方案:Linux内核,DPDK,eBPF(Extended Berkeley Packet Filter)。

(2) 七层负载均衡,也被称为应用负载均衡,支持HTTP、HTTPS、SSL、TLS等协议的处理。七层负载均衡在转发中可以利用应用层的信息,如HTTP的请求头部,而这些信息对四层负载均衡来说是不可见的。七层负载均衡的开源软件包括Nginx、BFE、Traefik、Envoy、HAProxy等。

随着对于流量管理需求的提升,七层负载均衡的重要性越来越高。很多公司都在加强七层负载均衡接入层的建设。而目前这方面的软件方案比较多,应该如何选型呢?

2. 七层负载均衡的生态

七层负载均衡的功能要比四层负载均衡复杂的多,独立研发非常困难,一般都要依托于一个强大的生态才能发展起来。
目前,在七层负载均衡领域,有3个比较强大的生态:

(1) Nginx / OpenResty 生态

Nginx是一个使用非常广泛的Web Server开源软件,后来也被用做反向代理。经过多年的发展,在Nginx上积累了大量的功能。为了解决Nginx功能开发成本高的问题,由章亦春在Nginx上增加了Lua执行模块,形成了OpenResty的生态。之后有一些软件基于OpenResty来开发,如APISIX。

(2) Envoy生态

Envoy最早由Lyft公司研发,后来Google也参加进来。与Nginx相比,Envoy做了一些调整和优化。Envoy最早被设计用于Service Mesh,作为sidecar网关。后来也逐步用于其它七层负载均衡的使用场景。

(3) Go语言生态

Go语言具有开发成本低、安全性和稳定性高的特点,并且Go语言有大量的开源代码库,这使得一些公司选用Go语言来实现七层负载均衡,如:BFE,Traefik, MOSN等。

3. Service Proxy和API Gateway

CNCF Landscape中,将七层负载均衡做了两个分类:Service Proxy和API Gateway。

image.png

这两个分类的出发点不同。Service Proxy偏重于流量的转发,API Gateway偏重于API生命周期的管理。从功能的角度,两个分类下的系统有很多重合的功能,一些软件也同时具有Service Proxy和API Gateway的功能,软件所属的分类变得模糊。

其实分类没有那么重要,满足自己场景的需求才是更重要的。

image.png

4. 七层负载均衡软件选型的因素

4.1 可能的对比维度

在七层负载均衡软件的选择上,可能考虑的因素包括:

(1) 系统的性能
一个系统所能呈现出来的性能,受到很多因素的影响(版本、环境、配置参数等等)。本文并不打算给出一个性能方面的比较,大家可以搜索一下网上给出的一些测试报告。

(2) 系统所提供的功能
一个七层负载均衡包括了很多的功能。有一些功能是基础性的,如协议支持、健康检查、转发规则描述;有一些功能可能不是必须的,如流量的镜像、执行脚本语言的支持等。具体选择哪些功能来比较,要看具体的使用场景。由于篇幅所限,本文只对比了基础性的功能。

(3) 系统所提供的扩展开发能力
由于七层负载均衡和业务有更紧密的联系,扩展开发的需求很大。能否方便和快速的进行扩展功能的开发,是七层负载均衡选型的重要考察点。

(4) 系统的安全性和稳定性
七层负载均衡作为网络流量转发的关键系统,安全性和稳定性是非常重要的因素。对于面向外网接入的场景,七层负载均衡直接面对大量潜在的攻击行为,安全性方面的考虑必不可少。

(5) 系统的可运维性
作为一个持续运行的在线系统,七层负载均衡应该具有很好的可运维性。这方面可能包括系统的可观测性和可监控性,能够很好的掌握系统的运行状态,及时发现系统的异常;也包括在不停机情况下配置的加载能力,期望能够不影响系统的正常转发。

4.2 关于几个对比维度的讨论

在以上这些因素中,“性能”是最常被大家拿出来比较的,似乎这是最重要的因素。

虽然没有非常客观准确的对比数据,但是大概说来,基于C语言开发的Nginx和Envoy的性能基本是相当的。而它们的性能要比基于Go语言开发的BFE和Traefik要好很多。即使做了一些优化,基于Go语言系统的性能可能只有C语言系统的1/2,在某些极端场景下甚至只有1/4(需要说明,目前表现出来的性能差距可能并不是完全由于编程语言的原因,而是因为程序编写的问题)。

这么看,似乎基于Go语言研发的七层负载均衡完全没有存在的理由呀?!

在小规模的使用场景下,流量较小,性能差异所引发的服务器成本差异并不大,性能并不是一个决策的关键因素。

在大规模的使用场景下,流量较大,性能差异确实会导致服务器成本上较大的差异。但也需要注意到,在大规模场景下,也会有较多的二次开发需求。在这种情况下,不同编程语言所导致的研发效率和研发成本的差异会凸现出来(Go语言的研发效率是C语言的数倍)。在选型时,需要兼顾“硬件成本”、“人力成本”、研发速度等几方面的因素。

系统的安全性和稳定性也是需要考虑的。对于重要的业务,一次因稳定性问题导致的业务中断可能就会导致严重的经济损失(及商誉损失)。安全方面可能导致的问题同样非常严重,安全问题可能导致系统的崩溃,也可能导致敏感信息的泄露。这两方面的机会成本可能远大于负载均衡本身的硬件成本。

基于C语言开发的系统在性能方面有绝对的优势,而基于Go语言开发的系统在二次开发成本、研发速度和系统的安全性、稳定性方面有更大的优势。而系统的功能和可运维性需要针对具体的系统来详细对比。

4.3 小结

在七层负载均衡的3大生态间做选择是非常艰难的。从成本、效率、安全和稳定性这几个基础指标来看,目前没有任何方案是完美的。鱼和熊掌,不可兼得。到底选择走哪条路,需要大家根据自己的场景,结合以上多个维度进行综合的考虑。

5. 几种开源七层负载均衡软件的对比

下面对一些七层负载开源项目进行对比,包括:BFE/Nginx/Envoy/Traefik。

需要说明的是,由于这些项目都在活跃开发中,信息可能过期或有误,读者可通过这些开源项目的官方网站查看最新信息。

5.1 开源项目定位

在各开源项目的官网上对其定位描述如下。
(1) BFE: BFE是一个开源的七层负载均衡系统。
(2) Nginx: Nginx是HTTP服务、反向代理服务、邮件代理服务和通用TCP/UDP代理服务。
(3) Envoy: Envoy是开源的边缘和服务代理,为云原生应用而设计。
(4) Traefik: Traefik是先进的HTTP反向代理和负载均衡。

5.2 功能对比

下面从系统功能的角度对几个开源项目进行对比。
(1)协议支持。这四个系统都支持HTTPS和HTTP/2, 并计划或正在开发支持HTTP/3。

(2)健康检查。

  • BFE和Nginx只支持“被动”模式的健康检查
  • Envoy支持主动、被动和混合模式的健康检查。
  • Traefik只支持“主动”模式的健康检查。

(3)实例级别负载均衡。这四个系统都支持实例级别负载均衡。

(4)集群级别负载均衡。

  • BFE、Envoy、Traefik都支持集群级别负载均衡。
  • Nginx不支持集群级别负载均衡(指Nginx的开源版本。OpenResty提供了支持。)
    注意:Envoy基于全局及分布式负载均衡策略。

(5)对于转发规则的描述方式。

5.3 扩展开发能力

七层负载均衡有较多的定制扩展开发需求。下面从系统扩展开发能力的角度对几个开源项目进行对比。
(1)使用的编程语言。

  • BFE和Traefik都基于Go语言开发。
  • Nginx使用C语言和Lua语言开发。
  • Envoy使用C++语言开发。

(2)可插拔架构。这四个系统都使用了可插拔架构。

(3)新功能开发成本。由于编程语言的差异性,BFE和Traefik的开发成本较低,Nginx和Envoy的开发成本较高。

5.4 安全性和稳定性

(1)稳定性。
由于编程语言的差异性,BFE和Traefik可以对异常(在Go语言中称为Panic)进行捕获处理,从而避免程序的异常结束; 而Nginx和Envoy无法对内存等方面的错误进行捕获,这些错误很容易导致程序崩溃。

(2)安全性
“缓冲区溢出”的威胁是C语言程序固有的问题,根本无法彻底解决。Go语言不存在这方面的问题(注:如果使用cgo调用,可能会引入这方面的问题)。Nginx中所使用的OpenSSL是一个经常出现安全性问题的模块,有兴趣的朋友可以在百度中搜索“HeartBleed漏洞”;Envoy通过使用BoringSSL来缓解这方面的问题。

5.5 可运维性

可运维性对于系统在正式生产环境的使用非常重要。下面从系统可运维性的角度对几个开源项目进行对比。

(1)内部状态展示。

  • BFE对程序内部状态提供了丰富的展示。
  • Nginx和Traefik提供的内部状态信息较少。
  • Envoy也提供了丰富的内部状态展示。

(2)配置热加载。

  • 四个系统都提供配置热加载功能。
  • Nginx配置生效需重启进程,并中断活跃长连接。
    需注意:Nginx商业版支持动态配置,在不重启进程的情况下热加载配置生效;一些基于OpenResty的软件也支持配置热加载。

6. 总结

七层负载均衡是非常重要的基础设施,如何选择,关系重大。

性能并不是唯一的考虑因素,也不存在在任何场景都适用的方案。需要结合使用场景的具体情况,从成本、功能、效率、安全和稳定性等多方面综合考虑。

欢迎关注“BFE开源项目”公众号,获得本项目的更多更新。谢谢!

公众号二维码.png


BFE开源项目
7 声望7 粉丝

BFE定位于“为企业级使用场景而设计的七层负载均衡开源软件”。BFE于2012年由百度开始研发,每天转发超过万亿的请求;2019年对外开源,2020年6月成为中国在网络方向首个被CNCF接受的开源项目。


什么是排卵期怎么计算 舌苔发白厚吃什么药 kiv是什么意思 均匀是什么意思 骨转移用什么药
胎儿头围偏大什么原因 吃红枣有什么好处 gaba是什么 菩提根是什么 年夜饭吃什么
核素是什么 苗子是什么意思 奥运五环代表什么 晨尿很黄是什么原因 空调管滴水是什么原因
白玫瑰的花语是什么 花哨是什么意思 离歌是什么意思 鳄鱼为什么流眼泪 临界是什么意思
宋江是什么生肖hcv9jop3ns9r.cn 蜈蚣最怕什么hcv9jop0ns2r.cn 痰湿是什么意思hcv8jop5ns5r.cn 屏保是什么hcv9jop0ns9r.cn 为什么要做微信营销hcv9jop7ns4r.cn
一倍是什么意思hcv9jop3ns7r.cn 宫颈糜烂用什么药hcv9jop4ns8r.cn mri是什么检查项目hcv9jop4ns5r.cn 妄想症吃什么药qingzhougame.com 容易感冒的人缺什么hcv9jop3ns1r.cn
三头六臂是什么意思hcv7jop9ns2r.cn 青椒炒什么好吃又简单hcv9jop3ns0r.cn 属蛇本命佛是什么佛hcv7jop5ns3r.cn 文武双全是什么生肖hcv8jop9ns1r.cn 睡醒口干口苦是什么原因hcv9jop5ns2r.cn
7点至9点是什么时辰hcv9jop4ns3r.cn 心绞痛用什么药最好hcv9jop2ns5r.cn 什么的芦苇bjcbxg.com 厌氧菌是什么意思hcv7jop7ns1r.cn 检查痛风挂什么科hcv9jop2ns2r.cn
百度