三、 服务器稳定性把控
软件产品的特性包括性能、稳定性、可扩展性、可维护性、安全性。我们做游戏服务器的时候这几个方面也是需要我们时刻进行权衡的,因为很多时候这些特性是存在矛盾的。比如可扩展性必定增加代码的复杂度,从而影响性能和可维护性;性能必定需要进行算法和数据结构上的定制,必然影响可扩展性和可维护性;安全必定增加中间步骤,必然影响流程性能和稳定性。
那么在做系统设计时最重要也是最基础的是什么呢?经过多次的讨论以及经验验证,我还是觉得稳定性是最重要的。因为游戏服务器只要稳定性一产生问题,那么就是批量的游戏玩家受到了影响,对于产品的影响必然是巨大的甚至致命的。因此服务器程序员的基本素质之一就是要再做研发的时候时刻提醒自己,我的每一行代码都是影响着千万玩家的体验,责任重大;写每一行代码都需要谨慎再谨慎。这个也是服务器程序员与客户端程序员之间一个巨大的不同,同样一个问题发生在服务器程序员身上会因为影响的用户量而被千万倍的放大。
游戏服务器只要保证了稳定性,就是达到了产品上线的门限,就是一款玩家可以稳定的体验游戏的产品。所有其他特性都需要给稳定性让步。
如何保障服务器的稳定性能。我觉得在实际的开发过程中需要在如下几点上进行关注,稳定性的隐患基本上会体现在这些问题上。
1. 运行稳定性:服务器能够支持7*24不间断的稳定运行,不会因为故障导致玩家游戏时间的间断。
2. 数据安全:这里说的数据安全并非是攻击导致的数据问题,而是服务器运行过程中数据的完整性,一致性的保证。
3. 故障的快速排查与恢复:虽然服务器第一特性需要达到7*24小时不间断运行。但是无论什么样的服务器都不能完全的避免问题的出现,即使0.01%的故障率也会对批量玩家产生影响。所以系统的设计上应该考虑到故障出现的时候如何快速排查与恢复的问题。