I am currently developing a cross-server matchmaking system that allows players to load into matches efficiently using MemoryStoreService.
I believe Memory Store Queues are the best way to go about this. However, I’ve also taken note that dozens of servers requesting data like :ReadAsync() or :AddAsync() will most likely greatly exceed the 1000 + 100 * [number of concurrent users] request limit
I’ve taken note of things such as Sharding, which stores multiple small data structures, rather than one big data structure.
What are some ways of preventing these issues? I’ve spent a good amount of time researching things that could help me / educate me better, but I’m still not 100% sure
-- Should the queue be split into three different "shards", like this:
local MatchmakingQueue1 = MemoryStoreService:GetQueue("MatchmakingQueue1")
local MatchmakingQueue2 = MemoryStoreService:GetQueue("MatchmakingQueue2")
local MatchmakingQueue3 = MemoryStoreService:GetQueue("MatchmakingQueue3")
-- Or put into one big structure, like this:
local MatchmakingQueue = MemoryStoreService:GetQueue("MatchmakingQueue")
Any tips are greatly appreciated!