笔者十年前做过网络游戏,当第一次看到微服务架构就发现它和网络游戏架构很像,如下图:

  

  先来简单介绍一下这个网游架构,有些东西记不清了,如今的网游大牛看到可别丢砖头。

用户下载网游客户端,登录网游,首先会执行登录服务,登录服务主要就是给你分配一个网关,因为网关后面连接的才是真正的游戏服务器。登录后,进入游戏,发出指令,比如你移动到某个位置,这个指令会先发送到网关,然后再由网关识别发送到“移动系统”服务,移动系统计算后再经由网关发送给玩家客户端,玩家客户端执行一个动画让你移动到某个位置。

假如子服务间要通信也是通过网关转发,比如任务系统里面要购买物品,那么任务系统发一个指令消息给网关,网关再转发给物品系统等等。图中的“游戏A服务器集群”,其中“游戏A”代表你所属的游戏服务器,每个游戏服务器能承载的人数是有限的(当时的技术一个服务器组最多同时在线也就几千人),人数满了,你就要登录到另外的服务器。“集群”表示服务部署的集群。每一个明面上的游戏服务器,对应一个N台服务器构成的游戏服务集群,但只对应一个用户数据库,数据库没有使用集群技术,因为你即使使用了数据库集群技术,在实时性方面也跟不上。

从编程上来讲,包括以下应用:

客户端.exe

网关.exe

移动系统.exe

聊天系统.exe

….

说到这里,了解微服务的人可能看出来了,上面的网关就好比nginx反向代理服务器,每一个游戏服务就好比微服务中的服务,如果你的微服务通信协议使用的是TCP那后面服务部分基本就一模一样了。网络游戏中数据访问没有分层直接放到业务处理模块,在游戏中每一个游戏执行逻辑不管是加载脚本、配置数据还是账户数据都是在同一个逻辑中处理的,不会去划分出什么数据库访问层、脚本访问层,这样处理有一个很大的好处,那就是可以处理复杂的逻辑,而又不用丧失效率。

在网游中,因为服务间通信的是二进制消息,在编程时解析消息和组装消息非常麻烦,因此需要设计一个统一的类库,这个类库把二进制消息传递直接变成面向对象调用。比如你调用了一个方法,其实就是向网关发送了一个二进制消息。这用在微服务这里也是一样的,让接口的收发消息变成面向对象调用,可以提高编程开发的效率,又能降低通信所产生的bug,孢子框架中的接口访问层也完成类似功能。

至于说分布式事务的问题,在网游开发中比较容易就可以解决(即使解决不了还有客服),因为所有事物相关数据都在一个数据库,即使不在一个数据库也是通过消息去同步。比如你砍了怪物一刀,你的等级数据上升、体力下降都在一个服务里计算的,假如怪物被砍了一刀的计算不在这个服务里,那么会发一个消息给那个服务,那个服务计算怪物被砍了一刀,如果计算失败,再回发一个消息给前一个服务来协同这方面,如果被砍死了掉物品了,就发一个消息给物品服务去计算,物品服务再回发消息与主计算协同。这其实就是通过消息机制进行事务协同最原始的版本。

和微服务对比归纳一下:

游戏(Gate网关)相当于:微服务(nginx或API Gateway)

游戏(个体服务)相当于:微服务(个体服务)

游戏(接口访问层)相当于:孢子框架(接口访问层)

另外微服务中流行的分布式事务解决方法也是通过消息来实现,比如支付,调用方调用支付接口失败,发一个失败消息给消息队列,支付接口服务监听消息队列并处理支付失败。

补充:少了场景服务,场景服务管理进入某地图的所有资源,比如一个人要移动,计算完个人移动后,还要向地图内(可视范围内)所有人发送移动消息。

转载于:https://www.cnblogs.com/skyblog/p/4922787.html

网络游戏架构与微服务架构简单对比相关推荐

  1. 现阶段Java高可用集群架构与微服务架构的简单分析

    一.如何选择 1.高可用集群 适用于中小型创业公司项目架构,小型技术团队快速迭代版本发布部署需求,前期低成本运行,爆发时可通过投入适量成本横向扩容服务器抗压. 特点: 前期技术开发成本低 一定的服务器 ...

  2. 单体应用、SOA架构、微服务架构的对比

    目录 前言: 单体架构 SOA架构 微服务架构 前言: 随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施.在云技术发展的早期,业界的关注点集中在虚拟化.分布式.存储等laa ...

  3. 漫谈单体架构与微服务架构(上):单体架构

    最近微服务架构特别火爆,就跟人工智能.区块链一样,软件架构设计如果不提微服务,感觉就像是与世界先进的架构风格和开发技术脱了节似的,各方各面都无法彰显高大上的气质. 本来再打算使用一套系列文章来讨论微服 ...

  4. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  5. 组件化、模块化、集中式、分布式、服务化、面向服务的架构、微服务架构

    组件化.模块化.集中式.分布式.服务化.面向服务的架构.微服务架构 最近最火的词是什么?那大概就是微服务(Microservice)了.最近也火的一踏糊涂的Docker.DevOps也都是围绕着微服务 ...

  6. nodejs微服务:单体架构与微服务架构

    单体架构 单体架构在中小企业内部用的是非常多的,就是完整独立的web服务 当业务不复杂,团队规模不大的时候,单体架构比微服务架构具有更高的生产率 1 ) 单体架构的程序部署在单台服务器 这种架构是目前 ...

  7. 单体应用架构和微服务架构的区别

    一.单体应用架构概念 一个归档包(可以是JAR.WAR.EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用.       而架构单体应用的方法论,就是单体应用架构. 二.单体架构示意图 三 ...

  8. Spring Cloud Alibaba - 01漫谈传统架构和微服务架构

    文章目录 单体架构 VS 微服务架构 单体架构 微服务架构 单机架构扩展与微服务扩展 微服务 VS 微服务架构 微服务的优缺点 优点 缺点 微服务的适用场景 合适 不合适 单体架构 VS 微服务架构 ...

  9. 【架构】分布式服务架构与微服务架构

    文章目录 0)服务相关架构的演变 *关于面向对象.面向组件.面向服务 1)面向服务架构(SOA) 1.1 什么是面向服务架构(SOA)? 1.2 为什么需要SOA? 1.3 SOA 的特征 1.4 S ...

  10. 系统架构的演变过程(单体应用架构、垂直应用架构、分布式SOA架构、微服务架构)

    文章目录 系统架构演变 单体应用架构 垂直应用架构 分布式SOA架构 什么是SOA 微服务架构 分布式SOA架构和微服务架构对比 系统架构演变 随着互联网的发展,网站应用的规模不断扩大,常规的应用架构 ...

最新文章

  1. ICLR 2019计算机视觉、NLP、图模型、对抗学习、表示学习和元学习
  2. webrender 查看是否开启_想要体验极致顺滑的网页加载体验?手动开启Firefox WebRender渲染引擎...
  3. PHP:6种GET和POST请求发送方法
  4. JUnit 5和Selenium –改善项目配置
  5. php怎么分割页面,将一个页面分成多个html文件(静态html分割页面)
  6. 分布式任务调度框架hanzelcast使用
  7. nginx php-fpm 输出php错误日志
  8. 个人所得税的申报方式有两种,分别有什么区别?该怎么选?
  9. 第六届中国云计算大会详细日程
  10. 机器学习:matlab实现异常检测
  11. php对图片反色处理
  12. 在开发中如何正确的应对系统故障
  13. Java基本sql_SQL基本语句
  14. 电子护照阅读器|酒店机场高铁自助机录入系统
  15. 男人为什么离不开酒?(写的太好了,句句入骨)
  16. python license_怎么解决pycharm license Acti的方法
  17. GitHub快速学习-三
  18. 再现地表最强屏幕,三星Note 9破11项纪录称皇
  19. Qcom平台 Camera 之开启调试 log
  20. python股票量化交易(1)---K线图、均线与成交量绘制

热门文章

  1. 栽培员工,让他强大到可以离开
  2. 移动开发---背景渐变色(由蓝色变成红色),以及数字变化
  3. xPad该歇了,我们需要的只是小尺寸触控显示器
  4. PythonNOJ习题前二十道(西北工业大学cpSkill实验平台)
  5. win7系统计算机无最小化,技术员解惑win7系统任务栏不显示最小化窗口的修复办法...
  6. 服务器无法显示url,遇到“您所请求的网址(URL)无法获取”的解决办法
  7. linux7.4 yum配置,redhat7.4配置yum
  8. Pintos project 1 实验报告(代码分享)
  9. 新款趣味测试小程序源码_测试可用
  10. webrtc学习笔记二:webrtc介绍