《魔灵保卫者》服务端架构及实现
《魔灵保卫者》这款游戏的服务端,架构如下图:
协议处理流程
1.通信层接收客户端的请求,通过协议号定位到业务层的处理类
2.业务层执行相应的协议逻辑,数据变动提交给数据层,到这里就返回响应客户端了
3.数据层定时同步变动数据到数据库
登陆流程
1.客户端登陆平台
2.客户端拿到区服列表
3.客户端选择区服请求登陆游服
4.游服请求登陆验证服
5.登陆验证服请求平台验证
充值流程
1.客户端想平台请求充值
2.平台回调充值服
3.充值服回调游服
具体实现
1.网络通信
设计通信协议,基于Netty做封装,通过自定义Annotation 定位业务层的处理器,业务层只需关心逻辑实现,不用关心网络发送接收
2.数据存储
基于tomcat-jdbc.,dbutils 做封装,实现业务层无sql,只需操作对象,数据层自动生成SQL存储
实现异步存储,数据的变动会先保存在ConcurrentLinkedQueue 中,每几分钟会从队列拿出然后经过优化后批量存储
3.无锁并发
通过对象的 deep copy 实现业务层的无锁开发(类比svn),提供OptimisticLockException异常来实现业务重做
4.事务
通过ThreadLocal技术将变动对象保存在当前业务处理线程,在协议处理最后commit到数据层的主缓存,要么全部提交成功,要么全部放弃,以此保证事务
5.存储结构
将要存储的数据对象通过 fastjson 序列化成字节数组存储到mysql的 blobdata中,这样加减字段数据库表无需任何变动
6.对象
以模块划分,每个模块会有多个handler对象,每一个handler对应一个具体协议处理逻辑。每个模块对应一个service提供公共服务。其他的还会有数据表对象entity,静态配置对象resource等对象,每个对象职责清晰.
http://blog.csdn.net/chenyun19890626/article/details/50611295
《魔灵保卫者》服务端架构及实现相关推荐
- 1年内4次架构调整,谈Nice的服务端架构变迁之路--转
原文地址:http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=410775314&idx=1&sn=7c7cc94f8f4 ...
- 【大会】海量高清视频服务端架构设计的变与不变
随着4K甚至更高分辨率的视频日渐普及,海量视频并发,对服务端的编码.转码的处理能力提出了前所未有的要求,传统的软件编码加速未必能够满足极端场景的要求,包括ASIC.GPU和FPGA方案你方唱罢我登场, ...
- [知乎] 端游、手游服务端架构演变
本文版权归 知乎 韦易笑 所有,此处为转载+收藏,如有再转,请于作者处获得授权并于文章篇头处标明原创作者及出处,以示尊重! 作者:韦易笑 链接:https://www.zhihu.com/questi ...
- 汽车之家移动主App服务端架构变迁
声明:本文为<程序员>原创文章,未经允许不得转载,更多精彩文章请订阅2016年程序员:http://dingyue.programmer.com.cn/ 导语:汽车之家移动主App服务端架 ...
- 各类游戏对应服务端架构
卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加 ...
- 各类游戏对应的服务端架构
卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加 ...
- 【精品】服务端 架构演进 历程
概述 以淘宝作为例,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 单机架构 ...
- 京东无线服务端架构演进历程
京东无线服务端 首先,在大会上统计一下数据,不知道多少人的手机上安装了京东手机APP,从举手的比例来看,大家也能猜到.就像这个图画的一样,京东无线服务端的流量像这个瀑布一样,汹涌不绝.服务端就是APP ...
- 中小型手机棋牌网络游戏服务端架构设计(带源码)
承接自己<中小型棋牌类网络游戏服务端架构>博文,用Golang实现基础架构逻辑后,准备再次谈谈我的想法. 已实现的逻辑与前文描述有几点不同: Gateway更名为Proxy,DBProxy ...
- Redis_18_Redis客户端-服务端架构
文章目录 一.前言 二.Redis客户端-服务器架构 三.客户端 3.1 客户端属性 3.1.1套接字描述符(fd) 3.1.2 名字(name) 3.1.3 标志(flags) 3.1.4 输入缓冲 ...
最新文章
- English Spoken Math
- bert中文预训练模型_[中文医疗预训练模型] MC-BERT
- Python可视化中的Matplotlib绘图(1.画图,网格,子图,画正余弦图,坐标轴界限,画圆,)
- BZOJ 1411Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
- IOS学习笔记七之KVC和Key路径
- Opencv--从CalibrateCamera到SolvePnp(一)
- java lambda 两个冒号_java lambda 表达式中的双冒号的用法说明 ::
- 善用 CSS 中的 table-layout 屬性加快 Table 的顯示速度
- 天梯—输出GPLT(C语言)
- cnblog 闪存刷星星,每一条闪存都是星星
- ajax分页效果、分类联动、搜索功能
- 一、用户画像是如何生成的
- DB2 8.2 9.1 9.5 9.7 下载地址(原创)
- 低压差线性稳压器MPQ2013A-AEC1品牌MPS国产替代
- Python贪吃蛇 (完整代码+详细注释+粘贴即食)
- 关于DBSCAN聚类算法
- Matlab系统辨识工具箱
- Android 使用 百度地图 测量 多边形面积
- matlab 为双y轴加标签,[转载]matlab双y轴添加误差棒(转载)
- 计算机网络原理【第四章 网络层】课后习题答案
热门文章
- MySQL安装 忘记密码
- 【艺术评析】陈全胜先生山水画
- html+word+clou,d3.js – 用d3.wordcloud重绘文字云
- 建网站,买域名和虚拟空间总共要多少钱?
- iOS 获取当前时间之后N天的日期
- 位列首位!百度智能云开物入选“双跨”平台国家队
- 【郭林专刊】自信还是危机感
- h20r1203功率管参数_电磁炉功率管H20R1203用什么代换
- 概率论与数理统计学习笔记——第二讲——概率(2.3概率的基本性质)
- 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.3 rich-text 组件,以及如何单击预览它的节点图片并保存