iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Software Development

徵坦補! 新手可! Open-Match 配對框架系列 第 9

Day9 重疊條件配對池 Overlapping MatchProfiles

在一些比較普通的應用場景,我們產生一個 matches 的流程會像是,由 Director 輪詢呼叫 Open-Match Backend 取得一組 MatchProfile,而過程中會觸發 MMF 的執行,並且依照 MatchProfile filter 的條件獲得對應的 tickets,最後 MMF 依照設定的邏輯匹配這些 tickets,返回 matches

而在一般場景會將這些 Tickets Pool 完美的分配劃分,使得條件設定是不會重疊的,透過設定 MatchProfiles filter 的內容可以達成我們期望的目標,指定好特定區間或固定的條件,讓 MMF 撈出來 tickets 執行的時候不會有 overlap 的可能性。但事實上我們在做分配時,還是有可能利用部分重疊的條件範圍,來使得配對時間縮短,提升配對品質體驗。

Overlapping 範例情境

無重疊條件的 MatchProfiles

Director 發出含有以下條件 ticketsMatchProfiles

  • Profile1: ping 0~49
  • Profile2: ping 50~99
  • Profile3: ping 100~300
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,
						},
					},
				},
			},
		},
	}

有重疊條件的 MatchProfiles

Director 發出含有以下條件 ticketsMatchProfiles

  • Profile1: ping 0~49
  • Profile2: ping 39~99
  • Profile3: ping 79~300
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 範例說明。


上一篇
Day8 Swagger UI & Open Match APIs
下一篇
Day10 Overlapping Example
系列文
徵坦補! 新手可! Open-Match 配對框架30

尚未有邦友留言

立即登入留言