转载:http://blog.csdn.net/stanjiang2010/article/details/6954445
最近在作公司的一个Social Game的项目服务器架构设计,与之前做过的MMORPG(简称RPG)相比,差别还是较为明显的,现总结一二,以供分享!
(一)协议通信
1)Socail Game为了快速开发,在通信协议的选择上均会选择http作为底层通信协议,这样选择的好处大致有:
1、方便客户端编程:http为一应一答的同步模型;
2、可以选择成熟的开源http服务器,如:apache、nginx;
2)RPG选择的是基于socket的TCP通信,这是由游戏本身的特点所决定的,如:聊天、多人视野、服务器主动通知事件等需求
(二)游戏逻辑服务器的承受能力
1)RPG的游戏逻辑服务器(地图服务器)所能承载的最高在线(PCU)是在3000-5000不等;
2)Social Game由于没有RPG复杂的移动、战斗、视野管理等需求,逻辑服务器承受的在线一般都是比较高的,如:10000-30000不等
(三)游戏逻辑服务器的Cache和回写机制
1)RPG的游戏逻辑服务器一般都需要Cache玩家数据,并且采取定时回写的策略,如根据数据重要程度分别作5min-15min不等的定时回写;
2)Social Game的游戏逻辑服务器一般都无需Cache玩家数据,玩家的每次请求都是即时读即时写(这样会涉及到另外一个问题,即DB读写的性能问题,见下一条);
(四)DB存储模型的选择
1)RPG存储服务器常用的还是MySQL+innodb,中间还由业务自己写一个Cache代理服务器,以Cache热点数据;
2)Social Game则会选用TC、MemCached等所谓Key-Value全内存数据存储,有实力的公司会自己实现一个类似这种机制的存储系统,它可以无源,也可以是有源,并且还可以选择用MySQL作数据落地,毕竟MySQL作为互联网业务DB的成熟解决方案,已毋庸置疑;
(注:我们公司是选择自己开发基于key-value机制的全内存DB,现网测试的数据是平均1KB的数据可以分别达到5w左右的读/写,还是很牛X的了)
(五)交互数据的一致性
1)在SNS Game中,会经常出现同一个玩家在某一个时刻同时被多个好友访问和修改数据的情况,这时就需要保证,每次数据的更新都是正常有序进行的,而不能被写脏数据。一般地,都会使用一个类似全局锁服务的设计来解决这个问题;
2)RPG不会存在这样的问题,类似的需求是:玩家可能会跨地图服务器,即所谓的跳线或跨服,这个问题的通常解决方案是服务器重新作一次下线、重登录的处理,当然,玩家是感觉不到的;
(六)IDC部署
1)RPG一般是分区分服部署;
2)Social Game则是全区全服部署;
分享到:
相关推荐
### 移动社交游戏设计:变现方法与机制 #### 一、游戏产业的演变与早期商业模式 本书《移动社交游戏设计:变现方法与机制(第二版)》详细探讨了游戏产业的发展历程及其商业模式的变迁。从游戏产业的早期阶段到...
**Python库 django-rest-framework-social-oauth2-1.0.1** `django-rest-framework-social-oauth2` 是一个基于 Django Rest Framework 的社交认证扩展库,主要用于实现 OAuth2 身份验证流程。这个库使得 Django ...
例如,我们可以在一个按钮上添加`socialshare`指令,然后配置其属性以指定要分享的URL、标题、描述等信息。 接下来,我们关注压缩包中的"angular-socialshare-master"目录。这个目录通常包含了项目的源代码、示例、...
总的来说,"covid-social-distancing-detection-master"项目是深度学习与公共卫生需求相结合的一个典型实例,它利用先进的技术手段,为社会提供了对抗病毒传播的有效工具。通过深入理解和改进此类解决方案,我们有望...
spring-social-web-1.0.2.RELEASE.jar
python库。 资源全名:django-simple-social-0.1.8.tar.gz
ionic-social-app, 离子演示应用 asynchronnous sass ionic-social-app离子应用社交--一个免费的应用程序,学习离子。ionic是我们开发网络应用的一个网页框架。嗯,嗯。:如何使用首先,你应该学习安装离子环境。 ...
pelican-social-0.1.tar.gz 是一个基于Python的开源库,主要用于扩展Pelican这个静态网站生成器的功能,特别是在社交网络集成方面。Pelican是一个非常流行的Python工具,它能够将Markdown或ReStructuredText格式的...
spring-social-weibo.rar,对于在新浪微博开放平台上的开放人员,这个例子包含了访问新浪微博时需要的授权,发微博,评论微博,回复评论等11个功能封装,你可以根据自己的需要继续进行封装,相信对需要的你定有帮助。
### 社交游戏(Social Game)与OAuth授权机制解析 #### SNS简介 社交网络服务(Social Networking Services,简称SNS)是指一种基于互联网技术,为用户提供在线社交平台的服务。这些平台不仅支持用户之间的交流互动...
a good book of game application
`laravel-social-passport` 插件在此基础上添加了社会化登录的支持。它允许用户通过第三方身份验证提供商(如 Facebook、Google)进行登录,而无需在你的应用中注册新账户。这个过程通常涉及以下步骤: 1. **配置...
在给定的标题“PyPI 官网下载 | steamid-social-auth-core-4.3.0.tar.gz”中,我们关注的是一个名为“steamid-social-auth-core”的Python库,其版本为4.3.0,压缩格式为tar.gz。 “steamid-social-auth-core”是一...
keycloak-services-social-wechat-work Keycloak企业微信登录插件 注意只在Keycloak 6.0.1版本下使用过,其他版本情况未知。 构建: mvn clean package 要安装社交微信工作,您必须: 将jar添加到Keycloak服务器...
在压缩包文件"spring-social-google-master"中,我们可以找到项目的源代码、文档、示例以及构建脚本等。通过这些资源,开发者可以快速了解项目结构,学习如何配置和使用Spring Social Google,从而在自己的应用中...
在本文中,我们将深入探讨基于Laravel框架的“laravel-social-feeder”项目,这是一个用于从社交媒体平台(如Facebook、Twitter和Instagram)抓取信息的工具。Laravel是一款流行的PHP框架,它为开发者提供了优雅的...
本文将详细讲解如何利用`spring-social-renren`这个库来实现人人网的API授权和接口封装,帮助你在人人网开放平台上进行高效、安全的开发。 `spring-social-renren`是Spring Social框架的一个扩展,它为人人网的API...
在“Laravel 开发-yos-social-php5”项目中,我们将深入探讨如何利用 Laravel 5.x 版本构建一个社交网络应用,即 yos-social。尽管描述中提到“暂无描述”,但我们可以从项目名称推测,这是一个用于创建类似社交平台...
`django-rest-framework-social-oauth2` 就是将这种认证机制与 RESTful API 结合,使得 API 客户端可以安全地获取和使用用户信息。 在这个 `django-rest-framework-social-oauth2-master` 压缩包中,包含了该库的源...
该款软件可以禁止部分网站访问,其他网站则可以访问