在一些比较普通的应用场景,我们产生一个 matches 的流程会像是,由 Director 轮询呼叫 Open-Match Backend 取得一组 MatchProfile
,而过程中会触发 MMF 的执行,并且依照 MatchProfile filter
的条件获得对应的 tickets
,最後 MMF 依照设定的逻辑匹配这些 tickets
,返回 matches
。
而在一般场景会将这些 Tickets Pool 完美的分配划分,使得条件设定是不会重叠的,透过设定 MatchProfiles filter
的内容可以达成我们期望的目标,指定好特定区间或固定的条件,让 MMF 捞出来 tickets
执行的时候不会有 overlap 的可能性。但事实上我们在做分配时,还是有可能利用部分重叠的条件范围,来使得配对时间缩短,提升配对品质体验。
Director 发出含有以下条件 tickets
的 MatchProfiles
p := []*pb.MatchProfile{
{
Name: "Profile1",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 0,
Max: 49,
},
},
},
},
},
{
Name: "Profile2",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 50,
Max: 99,
},
},
},
},
},
{
Name: "Profile3",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 100,
Max: 300,
},
},
},
},
},
}
Director 发出含有以下条件 tickets
的 MatchProfiles
p := []*pb.MatchProfile{
{
Name: "Profile1",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 0,
Max: 49,
},
},
},
},
},
{
Name: "Profile2",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 39,
Max: 99,
},
},
},
},
},
{
Name: "Profile3",
Pools: []*pb.Pool{
{
Name: "ping",
DoubleRangeFilters: []*pb.DoubleRangeFilter{
{
DoubleArg: "ping",
Min: 79,
Max: 300,
},
},
},
},
},
}
我们需要注意的是,在给定含有重叠的 MatchProfiles
时,会产生组合的碰撞,而如何让这些带有重叠的 tickets
配对池,可以得到最合适的配对结果?需要仰赖 Open-Match 核心 Evaluator 的参与 ,透过我们在 MatchProfiles
给予 overlapping 与 MMF 计算配对品质指数,Evaluator 可以协助我们找出最合适的配对组合,这部分我们留至 Evaluator 范例说明。
<<: 2021-Day12. ~Take a break~复习。
基本字典 字典的元素是以”key:value”的方式储存的,可以利用key去找到对应的value,...
前言 对 ActiveReord 进行软删除 (Soft Deletion) 时,可透过自行实作 (...
接续昨天的文章,今天介绍一下Yolo v1的Loss Function,由於在训练的时候我们当然希...
在设置反向代理静态网站时,当网页在路径目录下 nginx 不会自索引 index.html (例:h...
本篇介绍伪类中的状态选取器:checked应用篇:做一个开关按钮 :checked介绍 :chec...