简单到极致,自然性能可以发挥到级致,把复杂的系统尽量分离成N多简单到极致的服务,之间最好不存在相互调用,一定要用也通过传递消息去实现,这样对于一个服务就不会添加不必要的复杂性。
举个简单的例子,redis就是一个说明,他没有任何多余的东西,就是一个key-value的存储,所以他的性能是极致的。
有时候我们在面对一个复杂的游戏服务器系统时,我们不应该把过多的逻缉放在一个系统中,而应该把过于复杂的系统分隔成多个相互独立的服务,通过传递消息来进行服务与服务之间的通讯,我们这里在分离服务时,最好不要让服务之间象网状一样传递消息,这样只会让系统更加复杂,最好是大多数服务模块是平行平等的,他们之间不存在消息通讯,而这些平等的服务模块,只会向一些作为守护整个系统的,作为整个系统的中心控制服务进行消息传递,这样就尽可能的避免网状消息传递,而服务之间的消息传递,最好不要采用tcp的长连接进行传递,这个虽然快,但作为一个独立的服务模就不再独立了,任何服务重启都会牵涉到另外连进来的服务异常。最好的办法是采用高性能的队列服务,作为独立的消息传递中间件,这样服务的重启就只是影响自身,而不会给其他服务带来影响。
总结:我们其实要做的是任何服务的关闭与开启都不影响其他服务的正常运行,(同时除逻缉执行服务的关闭外,任何服务的维护是不影响玩家的正常游戏)