男人喜欢什么样的女人| 风疹是什么症状| 梦见剪头发预示什么| 尿臭是什么病| 舌头两边有齿痕是什么原因| 安乐死是什么意思| 范思哲是什么品牌| 圣诞礼物什么时候送| 雁过拔毛是什么意思| 舌苔厚是什么原因引起的| 马不停蹄是什么生肖| 指甲月牙白代表什么| 薄熙来为什么被抓| 董明珠什么星座| crayon是什么意思| cpr是什么| 参芪颗粒适合什么人吃| 做梦梦见鬼是什么预兆| 长期吃阿司匹林有什么副作用| 气血不足什么引起的| 来月经是黑色的是什么原因| 肺大泡是什么意思| 大腿淤青是什么原因| 嗳气吃什么药最有效| 铜绿是什么| 平均红细胞体积偏低是什么意思| 扌字旁的字和什么有关| 骨蒸潮热 是什么意思| 半成品是什么意思| 县长是什么级别的干部| mom什么意思| 腮腺炎吃什么药| 什么网站可以看毛片| 小孩口臭吃什么药效果最好| 肺炎可以吃什么水果| 嘴角流口水是什么原因| 21岁属什么| 梦见老公不理我是什么意思| 血色素是什么意思| 健脾胃吃什么药| 清明节吃什么| 夸父为什么要追赶太阳| 嘴巴周围长痘痘是什么原因引起的| 箱变是什么| 宫腔内偏强回声是什么意思| 刘姥姥进大观园什么意思| 舌头无苔是什么原因| 人大副主任是什么级别| 霜和乳有什么区别| 肿瘤吃什么中药能消除| 神昏谵语是什么意思| 尿道感染是什么原因引起| 关晓彤属什么生肖| mcm是什么牌子| 送礼送什么烟比较好| 嘴唇发紫黑是什么原因| 梦见碗是什么意思| 吃什么可以拉肚子通便| 豆角不能和什么一起吃| npv是什么病毒| 伪善是什么意思| 狐狸和乌鸦告诉我们什么道理| 化疗期间吃什么| 怀孕初期头晕是什么原因| 火气重吃什么降火| 秋葵对痛风有什么好处| 泰迪狗长什么样子| 草是什么颜色的| 黑猫警长是什么猫| 尿电导率低是什么意思| 乳环是什么| fpu是什么意思| 12月21是什么星座| 什么叫放疗| 军分区司令是什么级别| 有黄鼻涕吃什么药| 鼻炎吃什么消炎药效果最好| 逆钟向转位什么意思| 是什么有什么| 绝育手术对女性有什么危害| 什么叫继发性高血压| 乳糖酶是什么东西| anker是什么牌子| 为什么招蚊子咬| 什么牌子的燕麦片最好| 肺癌积水意味什么结果| 政法委是干什么的| 螺内酯片治什么病| 妈妈弟弟的儿子叫什么| 淡泊名利是什么意思| 双甘油脂肪酸酯是什么| 头晕目眩吃什么药| 下午五点到七点是什么时辰| 包皮嵌顿是什么| 女人梦见老鼠什么征兆| 呕气是什么意思| 泌尿感染是什么症状| 殊胜是什么意思| 耳朵发痒是什么原因| 青少年耳鸣是什么原因引起的| 名列前茅的茅是什么意思| 复方药是什么意思| 忐忑不安是什么意思| 识大体是什么意思| 灰指甲是什么样子| 猫不能吃什么东西| 大红色配什么颜色好看| 一个家庭最重要的是什么| 肠胃痉挛什么症状| 梦见自己结婚了是什么意思| 贫血吃什么补血好| 发泥和发蜡有什么区别| 4朵玫瑰代表什么意思| 1946年属什么| 血压低是什么症状| 为什么会有血管瘤| 什么的小手| 真菌孢子阳性什么意思| 狗女和什么属相最配| 猪肚子和什么煲汤最好| 什么的衣服| 9.23号是什么星座| 睾酮高有什么影响| 咳嗽咳白痰是什么症状| 凌霄什么意思| 合加龙是什么字| 六月是什么夏| 20年是什么婚| 丁克夫妻是什么意思| 儿童乳房发育挂什么科| 梦魇是什么原因造成的| 超敏c反应蛋白高是什么意思| 牵牛花为什么叫牵牛花| 即视感是什么意思| 茶麸是什么东西| trp是什么氨基酸| 太平猴魁属于什么茶| 缺维生素e有什么症状| 常喝黑苦荞茶有什么好处| 金的部首是什么| 肯尼亚说什么语言| 一个月来两次大姨妈是什么原因| 清明是什么意思| 眼皮肿挂什么科| exp是什么意思| 每天一杯蜂蜜水有什么好处| 什么补血补气最好最快| 姐姐的孩子叫什么| 湉字五行属什么| 彩超低回声是什么意思| dw是什么牌子的手表| 晚饭后散步有什么好处| 一个人自言自语的说话是什么病| 尿道感染有什么症状| 白细胞酯酶弱阳性什么意思| 蚊子害怕什么| 牛奶什么时候喝好| 自嘲是什么意思| 975是什么意思| ng是什么单位| 心肌缺血是什么意思| 贫血要做什么检查| 口字旁的字和什么有关| 阳气不足是什么意思| 陌然是什么意思| 雌二醇低是什么原因造成的| 怀孕了什么不可以吃| 穿云箭是什么意思| 坏垣是什么意思| 房颤吃什么药好| 黄瓜为什么是苦的| 肛门湿疹用什么药膏最有效| 复出是什么意思| 全品类是什么意思| 心肌缺血吃什么食物| 瘦西湖为什么叫瘦西湖| 血糖高吃什么最好| 奥利给什么意思| 请节哀是什么意思| 治疗腱鞘炎用什么药效果好| 吃什么抗衰老| 炒菜用什么锅最好| 宝宝干咳嗽是什么原因| 黄瓜为什么叫黄瓜| 餐标是什么意思| 7.6什么星座| 嘴唇发紫黑是什么原因| 杨梅吃了有什么好处| 白带什么味道| 头疼是为什么| 用什么泡脚可以脸上祛斑| 家里为什么会有跳蚤| 林冲到底属什么生肖的| 小儿风寒感冒吃什么药最好| 什么就像什么一样| 痔疮很痒是什么原因| 什么是捞女| 皮肤过敏涂什么药膏| 脑梗什么东西不能吃| 小郡肝是什么部位| 什么是沉没成本| cc代表什么意思| 流产后吃什么补身体| 晚上睡觉流口水是什么原因| 卵泡长得慢是什么原因造成的| 看什么看| dmdm乙内酰脲是什么| 镶牙是什么意思| 什么是手帐| me是什么基团| 宝宝吃什么辅食最好| 请问今晚买什么生肖| 彼此彼此什么意思| 32属什么生肖| 花青素是什么颜色| 榴莲苦是什么原因| 风热是什么意思| 心度高血压是什么意思| 冠冕堂皇是什么意思| 属龙跟什么属相最配| 什么是集成灶| 孕妇吃花胶对胎儿有什么好处| 口臭睡觉流口水什么原因| 乳头为什么会内陷| 七个星期五什么档次| 7.6是什么日子| 1898年属什么生肖| 吃什么对肺有好处| 什么是假药| 女人为什么会得甲状腺| 9.28什么星座| 垂体瘤是什么| 阿拉伯人属于什么人种| 嫌疑人是什么意思| 补气固表什么意思| 什么饮料解酒| 播客是什么意思| 小孩子手脱皮是什么原因引起的| 胸痛是什么原因导致的| 鸡翅木是什么木头| lck是什么意思| 肚脐眼上面痛是什么原因引起的| 咳嗽吐血是什么原因| 大便干燥拉不出来是什么原因| 什么人从来不看医生| 联袂是什么意思| 55岁属什么| 肚子不饿是什么原因| 底线是什么意思| 头发软化和拉直有什么区别| 内心的os是什么意思| 小孩为什么会得手足口病| 笑靥如花是什么意思| 龙涎香什么味道| 补位是什么意思| gp是什么意思| 什么心什么目| 梦见大风大雨预示什么| 706代血浆又叫什么| 月经2天就没了什么原因| 后年是什么生肖| 什么的红枣| 肌酐低是什么原因| 印刷厂主要做什么| 百度

金穗少年科学院气象研究所今日成立

百度 会上,Turnbull还建议公司借助与特殊组织的交情为客户提供情报搜集服务。

在《BFE和Nginx有什么差异?转发模型的对比》中,对BFE的转发模型进行了详细的说明。

在BFE转发的过程中,“转发表”是一个非常重要的组件。在BFE中为每个租户维护一张独立的“转发表”,在转发表中包含多条顺序执行的转发规则。

在2015年后,BFE转发表的设计没有做过大的修改,除了增加一些“条件原语”(什么是“条件原语”,见 BFE开源项目帮助文档 中的说明)。今年,我们对转发表做了一个较大的升级。

1. 转发表升级的背景

之前BFE转发表的优势是:
(1) 转发表在多个租户间相互独立,降低了转发表的复杂性和维护成本
(2) 基于BFE特有的条件原语和条件表达式,可以描述非常复杂的转发条件
(3) 在转发表内,转发规则的顺序执行,非常容易控制

但BFE的转发表也有一个缺陷,就是无法支持较大规模的转发表。顺序执行的算法复杂度为O(N),当转发表中规则的数量达到一定规模(上百条),会观察到性能有明显的下降。

这个问题在设计之初就是知道的,但是因为之前的使用场景中一个租户内转发规则的数量都比较少,这方面的问题并不突出。今年在某个使用场景中,单个租户的转发规则数量达到了几百条、甚至上千条,性能下降的现象比较明显,这就给转发表的优化升级价创造了契机。

2. 转发表的新方案

在升级后,BFE每个租户的转发表包含2部分:
(1) 基础规则表:可使用域名(Host)和路径(Path)作为匹配条件。支持最长匹配原则。
(2) 高级规则表:支持使用请求中的多种信息做匹配。支持顺序匹配。在高级规则表中可以设置默认规则。

和原方案相比,BFE原来的转发表成为“高级规则表”,继续保持原来机制描述能力强、执行顺序控制能力强的优势;新增的“基础规则表”,使用树形查找,匹配速度快,可以支持较大数量(几千甚至上万)转发规则的快速查找。

根据实测,在单租户内规则规模为3000条(这些规则只使用域名和路径作为匹配条件)的情况下,使用基础规则表比原来的方案性能提升了5倍。

下面重点介绍引入基础规则表后的变化。关于高级规则表的情况,请大家参考BFE开源项目中原有的资料。

3. 转发表内的优先级

在基础规则表和高级规则表之间有明确的优先级。BFE会按照基础规则表、高级规则表的顺序来查找,以确定目标集群。在基础规则表中,也可以将某条规则的目标集群设置为“ADVANCED_MODE”(高级模式)。如果在基础规则表中匹配到这条规则,则转至高级规则表进一步匹配。

详细的匹配顺序见下图。

image.png

4. 基础规则表

基础规则表由多条“基础规则”组成。

  • 基础规则的匹配条件包括域名(host)和路径(path)两个部分。
  • 目的集群通过集群名称来指定,也可以设置为“ADVANCED_MODE”转至高级规则表继续匹配。
  • 多条基础规则之间没有前后顺序关系,而是基于精确优先的原则。

基础规则表的详细匹配规则,见BFE开源项目文档中“集群间分流”中的说明。

下面是基础规则的表的一个例子,用于帮助大家理解基础规则表的匹配过程。
有四条基础规则,分别为:

  • 规则1:host条件:*.test1.com,path条件:空值,目标集群:StaticCluster
  • 规则2:host条件:*.b.test1.com,path条件:/interface/* ,目标集群:PhpCluster
  • 规则3:host条件:*.b.test1.com, path条件:/*, 目标集群:StaticCluster
  • 规则4:host条件:www.test1.com, path条件:/interface/d, 目标集群:PhpCluster

收到一个请求,请求URL为vip.b.test1.com/interface/d,匹配的顺序如下:

    1. 首先对host(vip.b.test1.com)进行匹配:

      • 1.1 对host做精确匹配,未匹配成功
      • 1.2 对host做通配符匹配,发现请求的host(vip.b.test1.com)可以满足规则2和规则3的host条件。
    1. 继续对path(/interface/d)进行匹配:

      • 2.1 对path做精确匹配,未匹配成功
      • 2.2 对path做前缀匹配,发现请求的path(/interface/d)可以满足规则2和规则3的path条件。根据最长匹配原则,匹配到从左开始有最多路径元素的那条规则,即规则2。

匹配结束,在基础规则表中命中规则2。根据规则2的设置,将请求转发到集群PhpCluster。

5. 一个例子

下面举一个例子,综合使用了基础规则表和高级规则表的能力。

产品线demo,包含多种服务集群:Demo-A, Demo-B, Demo-C, Demo-D,Demo-E。

期望的转发逻辑条件如下:

  • 对于host为www.a.com,path为"/a/*" (除了"/a/b")的请求,转发至Demo-A集群
  • 对于host为www.a.com,path为"/a/b"的请求,转发至Demo-B集群
  • 对于其他host为*.a.com的请求,转发至Demo-C集群
  • 对于host为www.c.com的请求,转发至Demo-D集群
  • 针对Demo-D集群,另外开启了一个灰度集群Demo-D1。如果cookie中包含deviceid,且这个cookie的值以“x”开头,则转发至Demo-D1
  • 其它请求,都发往Demo-E

对应以上要求,基础规则表的配置为:

host条件path条件目标集群
www.a.com/a/*Demo-A
www.a.com/a/bDemo-B
*.a.com*Demo-C
www.c.com*ADVANCED_MODE

在基础规则表中,多条规则之间是无序的。匹配顺序见上面关于基础规则匹配顺序的说明。

针对Demo-D1集群的灰度发布,由于需要使用cookie中的信息,所以使用ADVANCED_MODE将满足条件的请求透传到高级规则表继续处理;在不需要灰度发布的时候,在基础规则表中目标集群可以写为Demo-D。

高级规则表的配置为:

匹配条件目标集群
req_host_in("www.c.com") && req_cookie_value_prefix_in("deviceid", "x", false)Demo-D1
req_host_in("www.c.com")Demo-D
defaultDemo-E

在高级规则表中,多条规则之间是有序的。需要将转发给Demo-D1的规则放在前面。

在高级规则表中包含默认规则,对于没有命中其它规则的请求将被转发到Demo-E。

以上配置信息,对应的配置文件(/conf/server_data_conf/route_rule.conf)如下:

{
    "Version": "1.0",
    "ProductRule": {
        "demo": [
            {
                "Cond": " req_host_in(\"www.c.com\") && req_cookie_value_prefix_in(\"deviceid\", \"x\", false)",
                "ClusterName": "Demo-D1"
            },
            {
                "Cond": " req_host_in(\"www.c.com\")",
                "ClusterName": "Demo-D"
            },
            {
                "Cond": "default_t()",
                "ClusterName": "Demo-E"
            }
        ]
    },
    “BasicRule”: {
        "demo": [
            {
                "Hostname": ["www.a.com”],
                “Path”: [“/a/*”], 
                "ClusterName": "Demo-A"
            },
            {
                "Hostname": ["www.a.com"],
                “Path”: [“/a/b”],
                "ClusterName": "Demo-B"
            },
            {
                "Hostname": ["*.a.com"],
                “Path”: “*”,
                "ClusterName": "Demo-C"
            },
            {
                "Hostname": ["www.c.com"],
                “Path”: “*”,
                "ClusterName": "ADVANCED_MODE"
            }
        ]
    }
}

6. 总结

BFE开源软件已完成对于转发表能力的升级。在升级后,BFE既可以支持以域名和路径作为匹配条件的大量规模规则,也可以继续保持对于转发条件的强大描述机制。基于这个能力,BFE可以适应更广泛的应用场景,满足大家对于七层转发的各种需求。

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

946134284-6114d6b251211_fix732.png


BFE开源项目
7 声望7 粉丝

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


梦见桥塌了有什么预兆 黄豆酱做什么菜好吃 白头发吃什么药 分泌多巴胺是什么意思 4月12号是什么星座
正正得什么 宝宝便秘吃什么 一个火一个同念什么 咀嚼什么意思 男人右眉毛里有痣代表什么
肚子胀胀的是什么原因 桥本是什么 大便不成形吃什么中成药 干什么挣钱快 性激素六项挂什么科
孕妇吃辣椒对胎儿有什么影响 2019年属什么 铝中毒有什么症状 吃什么可以快速减肥 阿尔茨海默症吃什么药
锦衣夜行什么意思hcv9jop8ns2r.cn 柠檬茶喝了有什么好处hcv9jop4ns2r.cn 什么是五险一金hcv7jop9ns4r.cn player是什么意思hcv9jop6ns8r.cn 藏毛窦挂什么科hcv7jop9ns4r.cn
hankook是什么轮胎hcv8jop6ns0r.cn 今天冲什么生肖hcv7jop5ns3r.cn 甲不开仓财物耗散是什么意思hcv7jop5ns0r.cn hiv是什么hcv8jop1ns5r.cn 望远镜什么牌子好kuyehao.com
AG是什么hcv8jop6ns7r.cn 杏不能和什么一起吃hcv7jop9ns1r.cn 癫痫患者不能吃什么hcv7jop5ns2r.cn 热射病是什么hcv9jop0ns6r.cn 非萎缩性胃炎什么意思helloaicloud.com
gcp是什么意思yanzhenzixun.com 睡觉醒来口苦是什么原因hcv7jop5ns4r.cn 支气管炎什么症状hcv8jop5ns0r.cn 到底为什么hcv8jop4ns4r.cn 手淫过度吃什么药调理hcv8jop6ns7r.cn
百度