Thrift【acwing】
game游戏端 match用户匹配端 匹配结果存储端
game游戏端 ● add用户 ● remove用户
● 匹配系统【生产者消费者模型】 ● 数据存储系统 ● game端 game 端选择增加||删除用户, 然后匹配系统维护Task任务队列, 在队列里面进行对手匹配,匹配成功则保存到数据存储系统中 game端和匹配系统交互 ● add_user ● delete_user
匹配系统【cpp】 ● 编译 g++ -c ● 链接【thrift的动态链接库】 g++ *.o -o main -lthrift【thrift的动态链接库】 -pthread【多线程的链接库】 ● 读用户、删用户:多个线程 ● 任务队列【多线程add 、 remove】 ○ 用户进来之后,开一个线程进行匹配。 ○ 匹配系统的玩家匹配过程【生产者 消费者模型】 ○ 锁机制 ○ 条件变量:查询机制不满足,让线程休眠 ● 玩家池【单个线程操作玩家池】【while循环一直处理任务队列】【使用条件变量:查询机制不满足,让线程休眠(拿到任务队列的锁)】
game 系统【Python】
● 用thrift生成文件之后 ● *-remote文件是S端, 删除 ● 然后创建client.py
数据存储系统【Golang】 ● 匹配成功之后 ● 作为C端调用S端的数据存储 ●
|