架构之美(三)(摘要)

第三章:伸缩性架构设计

3.1 简介

1. 讨论MMO(大型多人在线游戏)和虚拟世界的架构:更需要可伸缩性

2. 原则与特性:功能多样性,概念完整性,增长适应性;结构:依赖关系和数据访问

3.2 背景

1. 系统架构必须适应环境,包括使用该架构的应用程序,以及使用该架构的程序员,以及由此受到的系统约束。

2. Darkstar项目:创建Darkstar架构时,第一件事就是所有针对伸缩性设计的架构都需要包含多台机器。总体架构必须是一个分布式系统,随着请求增长而添加机器,当请求下降时移走机器。

3. 对伸缩性的需求表明,系统应该是分布式的,并发的,但需要为开发者提供简单的多的编程模型。目标是游戏程序员应把系统视为一台单机,运行着一个线程,所有允许部署到多线程和多计算机上的机制应由Darkstar项目的基础设置来考虑

4. MMO(大型多人在线游戏)和虚拟世界与普通Web应用的区别:

a) 普通Web为瘦客户端;MMO为胖客户端,服务器的真正工作是保存共享的世界的真实状态。

b) 数据访问模式:企业中的一般法则是90%的数据都是只读的,大多数任务访问大量数据,然后改写少量数据;MMO中大多数任务只访问少量的状态数据,但在他们访问的数据中,大约50%会被改写。

c) 企业环境中,如果总的吞吐量得到改进,有一点延迟是可以接受的。MMO需要围绕尽可能的限定延迟来设计,即使以吞吐量为代价也在所不惜。

3.3 架构

1. 用一组相互联系的服务构建系统,每种服务都可以用一个接口来描述,这让使用该服务的程序不会受到底层实现变更的影响。

2. 基于Darkstar项目基础设施的游戏或虚拟世界的基本结构:一些服务器构成游戏或虚拟世界的后端,每个服务器运行着一组选定服务的副本(称为:Darkstar栈)和游戏逻辑的副本。客户端将连接到其中一个服务器,与服务器保存的该世界的抽象表示进行交互。

clip_image002

3. Darkstar由一组元服务进行协调(元服务是一组网络访问服务,程序员不可见)。

4. 对于Darkstar项目中的程序员,可见的架构就是栈中包含的一组服务,服务的全集可以配置,但4个基本服务必须存在,它构成运营环境的核心。

5. Darkstar栈clip_image004

6. 基本服务:栈层面的服务站中,最基本的服务是数据服务:保存,读取,操作所有持久数据。

7. 第二个栈层面的服务是“任务服务(Task Service)”,用于调度或执行任务。程序员会看到事件或服务器逻辑本身而生成的单个任务,但在底层,Darkstar的基础服务正尽可能调度最多的任务。这样并发导致数据竞争。需要“任务服务”和“数据服务”协作来处理竞争:“任务服务”调度的每个任务都包装在一个事务中。

8. 通信服务:

a) 会话服务:登录后客户端与服务器之间会建立起一个会话。服务器通过会话监听客户端发出的消息,解析消息的内容。确定生成怎样的任务来响应该消息。客户端通过会话接收来自服务器的响应。会话也确保维持消息顺序。

b) 通道服务:一对多的通信机制

posted @ 2012-12-21 11:20  天空是蓝的  阅读(291)  评论(0编辑  收藏  举报