KTV系统设计经验

时间:2008-11-24   来源:   网友评论:0   人气: 446 作者:

摘要:以我主持开发的一个ktv点歌系统为例,叙述了如何进行体系结构设计,进行系统的负载平衡和故障转移,采用数据库动态搜索加载技术,在低成本的条件下实现了较高的稳定性和可靠性,对比市场上的已有系统,阐述了此系统的优势。叙述了此系统在设计时的考虑和方案选择背景以及遇到的困难和解决方法,在系统开发,测试,安装人员的努力下,最终使系统成功推广使用,并以稳定性,易用性受到用户好评。最后总结我几年的开发经验,涉及一些对软件,管理的体会,以及对软件开发人员的建议。

 

随着计算机的普及,vodktv系统也迅速发展起来。娱乐场所,酒店,小区也逐步采用vodktv系统。市场调查发现,ktv点歌系统(卡拉ok歌曲为主)和vod点播系统(电影为主)有着良好的市场前景。目前市场上已有不少ktv软件,经过考察比较,发现目前已有系统存在以下问题:成本偏高,市场竞争要求尽可能的降低成本;系统可靠性不高,客户端对服务器依赖性过高;软件易用性不好,上手慢;软件稳定性不够高,容易发生死机等现象;软件有些方面设计不合理,例如对最常用的消除原声操作复杂,应该做到自动实现。 受公司邀请,我主持开发了ktv点歌系统(基于硬件解压播放)和vod点播系统(基于软件解压播放)。其中我负责项目的总体分析,设计,以及主要的编码工作,并协调界面设计人员,硬件测试人员和软件测试人员的工作。

目前为止,其中的ktv点歌系统已经成功推广使用,并以稳定性,易用性受到用户好评。

先简要介绍一下ktv系统的布局:
服务器端采用多台服务器,作为无盘启动,数据库和节目源服务器,使用了故障转移技术,任意一台服务器失效,都可保证系统继续运行。

客户端使用无盘工作站,使用显示器作为点歌界面,电视机作为节目输出界面,用户使用遥控器或者鼠标进行操作。

系统要求在低成本的条件下实现比较高的可靠性,在比较目前市场上已有系统的基础上,我使用了如下方案:

1.  体系设计

1)使用无盘工作站。服务器端为win200 server,使用raid硬盘阵列,客户端采用无盘win98。好处:每个客户端节省一块硬盘,在总量上也是比较可观的;客户端win98系统不会受到破坏,每次重起机器即完好如初,能够承受恶意操作(如故意重起等);可以由服务器端统一控制。

2)使用client/server结构。客户端运行点歌系统,连接服务器端的数据库,从服务器读取节目。其实无盘工作站的设计已经基本决定了使用这种c/s结构,主要在数据库的选择上可以选用本地数据库,也可以使用网络数据库,经比较考虑后,采用了网络数据库。

3)使用软件进行负载平衡。Win2000 advanced server本身提供了负载平衡和故障转移策略,但并不完全适合我们的需要,以及硬件成本偏高(工程造价往往是硬件和软件一起算的,现在的市场上几千到几万的成本差价都不得不考虑),并且要求系统安装人员有较高的技术水平。出于以上考虑,并结合软件自身的特点,使用软件来进行负载的平衡。点歌系统对网络的要求是很高的,例如点播dvd时要求此客户端能保证得到1M/秒的数据流,播放过程中不得出现停顿,延迟等。服务器端存放了10000首歌曲(在谈项目时对方会比较注重歌曲的总数量),由于数据量大,采用分布式存放于多台服务器,另外对用户调查发现,用户点歌偏好基本满足正态分布,80%的点播集中在2000首歌曲上,为了平衡服务器的负载,对常用歌曲实行冗余存放(例如A机和B机都存放了此歌曲),所以歌曲可以分为两大类:唯一性歌曲(只有在某台机器上有一份文件)和冗余性歌曲(在多于一台的服务器上有此首歌曲)。对于唯一性歌曲,不进行负载平衡,只是简单的读取数据(当然也可以进行最高负载限制,例如A服务器最高只允许30个连接,超过此数时则拒绝,客户端跳过此歌曲,转向下一首);对于冗余性歌曲,由点播软件进行负载平衡,先向服务器查询负载较小的服务器,然后连接此服务器读取节目。


 

文章评论