百科问答小站 logo
百科问答小站 font logo



网游服务器逻辑和传输如何分层/解耦? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

这是一个伪装成OOD的分布式架构问题。


你的问题其实非常简单,就是分布式系统中的一致性问题。换言之,如果你不在分布式系统,也就是说客户端和服务端是一个东西的话,那么这个问题压根儿不存在,既不存在通信,也不需要关心什么中间状态啥的。

所以在OOD的层面上根本没法谈怎么解决这个问题,你的问题的本质在于客户端有本地存储,这会造成和服务端的数据不一致。(因为如果没有本地存储,压根儿不需要给客户端发送那么多消息)


最傻瓜的方式是透明代理,也就是在服务端虚拟一个客户端的镜像,当你的数据写入到这个镜像,服务端就认为客户端已经更新数据了,这个镜像再和客户端通信将数据同步。这一过程对于服务端来说是透明的,所以叫做透明代理。

但是这么傻瓜的方式显然是不能满足复杂多变的实际应用场景的。


你已经想到了中间状态,也就是你已经意识到了数据更新的原子性和有序性这些问题,但你脑子里面的概念还是很模糊的,这需要更多的经验积累。



总而言之,远程过程调用,分布式一致性,这些问题从某种意义上来说是无解的,我们要做的是权衡各方面,找出折衷的方案。

如果你问我应该怎么做,是吧,其实这个话题比OOD更大……




  

相关话题

  成长型企业如何灵活、高效、全方位地实现数字化转型? 
  Java为什么选择interface来作为"接口"这个功能的关键字? 
  Build 2018 开发者大会上发布的 .NET Core 3.0 规划蓝图透露了哪些信息? 
  为什么没有新的支持底层达到类似C++这种程度,而易用性达到C#的语言出现? 
  你见过哪些神一样的优化操作? 
  程序员们平时都喜欢逛什么论坛呢? 
  近年来,游戏行业有哪些提高制作效率的新技术? 
  如何在我的世界服务器里面得到人心? 
  C# 如何在调用控件时做到 Thread-safe(线程安全)? 
  如何看待在《艾尔登法环》爆卖千万份之下,是FS社员工为爱发电,工资不如在便利店打工的情况? 

前一个讨论
我想不通为什么猫每次把垃圾桶打翻,抓沙发,男朋友就要开始暴揍猫好几分钟,他明明知道猫很蠢揍是没用的?
下一个讨论
为什么一个简单的闭包,C#要设计得如此巨大?





© 2024-09-19 - tinynew.org. All Rights Reserved.
© 2024-09-19 - tinynew.org. 保留所有权利