目前服务器的情况是这样的。
有若干台逻辑服务器(数量较多)和若干台选择服务器(数量较少)。
运行时,选择服务器根据一定的负载均算法选择一台逻辑服务器,远程调用在其中创建一个房间。
然后再把这个房间的逻辑服务器 IP 保存下来,需要的时候发送给用户,用户拿到 IP 后再去连接逻辑服务器,加入房间执行操作。这个房间的用户上限为 12 。
之前的做法是,每台逻辑服务器定时(大概 3 秒)将自己服务器连接的用户数写入数据库。选择服务器同时也定时(大概 5 秒)从数据库中读取逻辑服务器的人数。然后当要选择逻辑服务器的时候,就选择人数最少的逻辑服务器。
而这样的做法在人数多的时候有很大的问题。
因为选择服务器的人数数据是上一个定时周期更新的,在下一次更新之前如果有大量的请求涌入的话,选择服务器会将这些请求导向同一个逻辑服务器,最终导致服务器不堪重负。同时选择服务器在选择逻辑服务器创建房间的时候,并不会知道有多少人最终会进入这个房间。而且这样的选择服务器还存在多台(各自有一些不同的业务逻辑)。
最简单的做法就是加快人数数据的写入和读取速度了吧。。。
大家有什么好的方法吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.