APP下载

Darkstar 架构研究

2010-08-15费立宁

科技传播 2010年19期
关键词:服务器端开发者线程

费立宁

同济大学软件学院,上海 201804

0 引言

随着网络游戏等云计算产业的爆发式增长,设计实现优秀的云计算架构已成为当前架构师面临的最大挑战之一。

以网络游戏为代表的云计算网络服务要求其架构具有可靠、容错、持续、高效、伸缩等特性。当前应用的架构实践都无法稳定,一致,经济并一般性的满足所有这些特性。

Darkstar提供了通用,健壮,高效,可伸缩并简单易用的基础框架,它使开发者专注于服务的功能特性而非物理,通讯等基础设施。同时它又是简单一致容易使用的一般性网络服务框架。

1 架构设计及实现策略

传统的服务器扩展方法是将整个应用区域分成多个区,不同的区运行在不同的服务器上。这带来两个问题,一个是处于不同区的用户不能互相交互,另外一个是如果某个区发生的动作较少时,会出现服务器资源未被充分利用的情况。而在darkstar的处理方式下,所有的处理被分割成为一个个小的执行单元(task),这些task可以在组成网络的任何服务器上执行,当用户增加时,系统自动增加处理线程,不再需要为了扩展而将不同的区分配到不同的服务器上面。这样既提高了资源利用率,又可以让所有的用户进行交互。此架构允许系统以一种线性的方式扩展来满足计算资源日益增长的需求。额外的需求通常是由于同时在线用户数量的增加、应用程序复杂性的增加或者两者同时发生引起的。无论哪种方式引起的,考虑到应用运行时的动态行为,面对增加的任务负载,该架构都自动地执行负载平衡来给与响应。当需要更多的容量时,简单地增加更多的计算节点到可用的服务器池中。多个应用甚至可以共享计算中心的服务器。

Darkstar服务被设计为可以部署在服务器集群上,并可根据需要动态插入移除若干服务器,为达成此目标,Darkstar对像被尽可能的设计为可迁移的。

Darkstar的核心概念是托管对象(Managed Object)。托管对象必须实现ManagedObject和Serializable接口,并被DataManger管理于名为Object Store的对象池中。托管引用(Managed Reference)是指向托管对象的引用,提供了对托管对象的访问能力。一个Darkstar应用程序内的若干托管对象通过托管引用联系在一起。托管对象是Darkstar设计的关键抽象,代表一个聚合状态实体,同时又是一个可在各分布式服务器虚拟机间动态迁移的单位。Darkstar提供了api屏蔽了多数的底层复杂性,例如线程调度,事务处理等等,应用程序只需要开发并装配自己的对象,监听响应客户端事件,自己管理持久化的 ManagedObject对象生命周期即可。虽然 Darkstar 项目基础结构提供的是可扩展的多线程多节点环境,但是游戏服务器开发者却如同在单机器和单线程的环境中编写代码。该模型最小化或消除了数据存取竞争、线程调度和工作负载分布问题,使得开发者可以集中精力编写应用,而不必关注可伸缩的系统机制。众所周知,编写一个复杂、多线程的应用程序是一件困难且辛苦的事情,而拥有成功开发此类应用程序经验和技能的程序员又少之又少。使用Darkstar项目基础结构,开发复杂性将会极大地减小。

Darkstar有两种通信模型。一种是客户端/服务器端的通信,即每个客户端只和服务器端通信,由服务器端来负责数据的处理和转发;另外一种是通道(channel)机制 (类似一对多的广播),通道由服务器端创建并维护,每个通道可以添加多个客户端,服务器端可以监听通道中的所有通信或者具体某个客户端的通信。也可以给通道中的全部或者部分客户端发送消息。加入通道的客户端可以收到其它任何客户端发送的消息。通道下面客户端之间的通信不需要服务器端的介入。

会话(Session)提供了一个网络节点间低延迟的通信机制,抽象了客户端和服务器端之间的通信。通道提供了一个主题订阅式的通信机制。在一个会话加入某通道(Channel)后,任何通道内的其它成员会话都可收到此会话的消息。最重要的是,会话和通道都是可迁移的,可以像托管对象一样根据动态负载变化在各服务器间迁移。

Darkstar为开发者提供了一个简单的单线程事件驱动的编程模型,在每个事件处理中,数据所有权是单一确定的,这使开发者远离竞态和死锁噩梦。这些事件处理被编码在一个任务(Task)中。任务由任务管理器(Task Manager)调度,并且也是可迁移的。在这个过程中托管引用起了重要作用,系统通过它将并发调用合理调度为串行调用。另一方面,这些设计也使托管对象自动具有了事务性,让完整而一致的对象状态迁移成为了可能。

2 结论

Darkstar世界中的一切对象都是可迁移的,这给了它无限扩展的可能,动态负载均衡的能力,不必从项目的开始阶段就困扰于程序的物理部署,逻辑分割,通信机制等若干层面的交叉影响,以最小的代价享有可靠、容错、持续、高效、伸缩等诸多特性。Darkstar让这个领域更卓越的实践成为了可能。

[1]ht tp://www.projectdarkstar.com.

[2]ProjectDarkstarServerApplicationTutorial.

[3]ProjectDarkstarClientSDKTutorial.

猜你喜欢

服务器端开发者线程
Linux环境下基于Socket的数据传输软件设计
浅析异步通信层的架构在ASP.NET 程序中的应用
浅谈linux多线程协作
基于Qt的安全即时通讯软件服务器端设计
16%游戏开发者看好VR
iOS开发者调查
iOS开发者调查
栝楼产业开发者谢献忠
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究