1)今天技术Leader说了下对COK全球同服的理解,第一句话说:全球同服其实是一个伪命题。
全球同服的本质,应该是从玩家的角度理解,数据互通+玩家关系互通+战斗互通这3方面去理解,
虽然我们目前采用的分区分服的架构,一个进程负责玩家与系统的交互和玩家工会,GS1玩家工会搜不到GS2玩家工会。
但是我们却能通过redis给每个聊天频道建立一个channel,实现不同服直接的玩家数据能互通,而且,可以通过mysql记录跨服的玩家好友关系,从而使用redis实现私聊等,给玩家全球同服的感受,战斗也是一样,数据不在一块,但是却记录的有关系,通过redis、mq等消息总线,让他们能一起打游戏,这就达到了全球同服的感受。
2)redis的事务是一种弱的事务,并没有完全保证acid,而是多个操作,可以保证被当做 一个操作执行,假如其中某个操作除了问题,是无法回滚的,因此需要写好java方法,里面调用redis命令。
这种可以解决加入工会等操作,被当做原子性执行,而无需加锁。
3)redis分片机制
加入我有20个gs,他们一起要加入工会等操作,这时,redis的分片机制,可以保证加入到不同的工会,操作到不同的节点处理,因此是相当于多个线程处理业务逻辑。