第三章伸缩性构架设计
本章的重点是怎样确保系统在伸缩时的弹性。因为访问量的不稳定,所以伸缩性显得尤为重要。而在虚拟世界中伸缩性的问题进一步复杂化。伸缩性设计的背景就是游戏的开发和发行,玩家的交互,玩家的对电脑的要求。并发的芯片比更高时钟速度的芯片更容易开发。游戏中玩家的交互只和少部分人发生交互。所以这也适合并发。
我们的首要目标就是把一台单机运行一个单线程部署到多线程和多台计算机上应该由基础设施来考虑。游戏世界始于一个很胖的客户端(具有强大功能的pc),所有数据尽量放在客户端。服务器尽量保持简单。服务器的数据大半会被改写。在企业环境中有一点延迟是可以接受的,但是在游戏环境是不能接受的。所以有两种方法应对延迟,一种是基于地理位置实现的,把虚拟世界的一个岛或房间划分为一个区域放在服务器上。第二中是分区,一个分区就是一个副本,运行在它自己的服务器上,但是这种方法不允许不同分区的玩家交互。因此文明的另一个主要目标就是随时伸缩,同时不要求游戏逻辑受到伸缩的影响。
Darkstar由一组独立的服务构成,这些服务可以在游戏或虚拟世界的服务器端的地址空间内获得。总之开始了分而治之的过程。所有的大型计算机系统的基本方法都是分而治之。它的宏观结构,每个客户端连接到它相对的的服务器(栈),所有服务器由一个元组统一调配。在栈层面的服务中,最基本的服务就是“数据服务”,第二个是“任务服务”。通信服务的第一个服务是“会话服务”第二种通信服务是“通道服务”。要实现负载均衡的能力关键是对于我们要求的编程模型和必须使用的基本栈服务,响应客户端事件或游戏事件的任务可以从任何一台运行栈和游戏副本的机器移动到另一台同样的机器上。
第四章记忆留存
作者讲述了开发LPS 的过程。从初始的设计开始,一直到系统发布。开发团队首先确定了功能和约束,它必须做什么,它必须在什么限制条件下工作。开发人员把不变的事实放在一起,然后联系出重要问题,和关注点。架构关注点是研究整个系统的不同方式,因为他们既相互独立又相互支持。在模块和加载程序,作者用bean工厂简化了庞大的lib目录。在UI和UI模型,采用了分层架构,“表示层”、“业务领域层”、“持久层”。可以互换的工作站,团队将工作站连成一个p2p的网络,进行分布式复制,最后采用了客户端-服务器模式。
这一章展示了Creation Center 架构的结构与功能融合从业务的基本需求及环境中浮现。通过褒词关注点分离,坚持增量式设计和开发,Creation Center以一种令人满意的方式平衡了各方面的需求。