《魔灵保卫者》这款游戏的服务端,架构如下图: 
 
协议处理流程 
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. 1年内4次架构调整,谈Nice的服务端架构变迁之路--转

    原文地址:http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=410775314&idx=1&sn=7c7cc94f8f4 ...

  2. 【大会】海量高清视频服务端架构设计的变与不变

    随着4K甚至更高分辨率的视频日渐普及,海量视频并发,对服务端的编码.转码的处理能力提出了前所未有的要求,传统的软件编码加速未必能够满足极端场景的要求,包括ASIC.GPU和FPGA方案你方唱罢我登场, ...

  3. [知乎] 端游、手游服务端架构演变

    本文版权归 知乎 韦易笑 所有,此处为转载+收藏,如有再转,请于作者处获得授权并于文章篇头处标明原创作者及出处,以示尊重! 作者:韦易笑 链接:https://www.zhihu.com/questi ...

  4. 汽车之家移动主App服务端架构变迁

    声明:本文为<程序员>原创文章,未经允许不得转载,更多精彩文章请订阅2016年程序员:http://dingyue.programmer.com.cn/ 导语:汽车之家移动主App服务端架 ...

  5. 各类游戏对应服务端架构

    卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加 ...

  6. 各类游戏对应的服务端架构

    卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加 ...

  7. 【精品】服务端 架构演进 历程

    概述 以淘宝作为例,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 单机架构 ...

  8. 京东无线服务端架构演进历程

    京东无线服务端 首先,在大会上统计一下数据,不知道多少人的手机上安装了京东手机APP,从举手的比例来看,大家也能猜到.就像这个图画的一样,京东无线服务端的流量像这个瀑布一样,汹涌不绝.服务端就是APP ...

  9. 中小型手机棋牌网络游戏服务端架构设计(带源码)

    承接自己<中小型棋牌类网络游戏服务端架构>博文,用Golang实现基础架构逻辑后,准备再次谈谈我的想法. 已实现的逻辑与前文描述有几点不同: Gateway更名为Proxy,DBProxy ...

  10. Redis_18_Redis客户端-服务端架构

    文章目录 一.前言 二.Redis客户端-服务器架构 三.客户端 3.1 客户端属性 3.1.1套接字描述符(fd) 3.1.2 名字(name) 3.1.3 标志(flags) 3.1.4 输入缓冲 ...

最新文章

  1. English Spoken Math
  2. bert中文预训练模型_[中文医疗预训练模型] MC-BERT
  3. Python可视化中的Matplotlib绘图(1.画图,网格,子图,画正余弦图,坐标轴界限,画圆,)
  4. BZOJ 1411Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
  5. IOS学习笔记七之KVC和Key路径
  6. Opencv--从CalibrateCamera到SolvePnp(一)
  7. java lambda 两个冒号_java lambda 表达式中的双冒号的用法说明 ::
  8. 善用 CSS 中的 table-layout 屬性加快 Table 的顯示速度
  9. 天梯—输出GPLT(C语言)
  10. cnblog 闪存刷星星,每一条闪存都是星星
  11. ajax分页效果、分类联动、搜索功能
  12. 一、用户画像是如何生成的
  13. DB2 8.2 9.1 9.5 9.7 下载地址(原创)
  14. 低压差线性稳压器MPQ2013A-AEC1品牌MPS国产替代
  15. Python贪吃蛇 (完整代码+详细注释+粘贴即食)
  16. 关于DBSCAN聚类算法
  17. Matlab系统辨识工具箱
  18. Android 使用 百度地图 测量 多边形面积
  19. matlab 为双y轴加标签,[转载]matlab双y轴添加误差棒(转载)
  20. 计算机网络原理【第四章 网络层】课后习题答案

热门文章

  1. MySQL安装 忘记密码
  2. 【艺术评析】陈全胜先生山水画
  3. html+word+clou,d3.js – 用d3.wordcloud重绘文字云
  4. 建网站,买域名和虚拟空间总共要多少钱?
  5. iOS 获取当前时间之后N天的日期
  6. 位列首位!百度智能云开物入选“双跨”平台国家队
  7. 【郭林专刊】自信还是危机感
  8. h20r1203功率管参数_电磁炉功率管H20R1203用什么代换
  9. 概率论与数理统计学习笔记——第二讲——概率(2.3概率的基本性质)
  10. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.3 rich-text 组件,以及如何单击预览它的节点图片并保存