博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《架构之美》阅读笔记03
阅读量:5322 次
发布时间:2019-06-14

本文共 1097 字,大约阅读时间需要 3 分钟。

  首先我了解了系统的伸缩性需求。如大型在线游戏,需要满足大量用户。在线用户数量短时间内可能有很大的变化。这其中隐含的需求是:多用户,并行,分布式系统,系统运行在多台机器上,高可扩展性(用于加入新的故事情节,意味着新的代码),高稳定性、可靠性(一个用户崩溃,不影响其他用户),数据一致性(多个用户看到同一个东西的状态应该是一样的),架构设计目标,即另外一个需求,对其他开发者部署出一个简单的编程模型,程序员可以将系统视为一个单机开发环境。隐藏分布式和并发是一件困难的事。需要一种严格限制的编程模型。典型的游戏服务器开发模型:反应式客户端(游戏机)(生成事件) - 服务端的事件监听器(监听事件,并生成任务) - 此任务可与多个客户端进行交互或者是服务端自己周期性生成任务。这是一种典型的胖客户端机制,适用于游戏和虚拟世界,也适用于J2EE和Web服务的应区别另外一种经典的企业级架构:瘦客户端 - 胖客户端 - 更胖的数据库服务器。服务器保存客户端的绝大部分信息,绝大多数真正的工作在服务器上完成。在游戏的软件架构中。不被修改的数据都被放在客户端完成,只有共享的数据才放在服务器,服务器尽量保持简单,减少计算。保持共享事实的最终来源,防止玩家作弊。客户端只访问少量的状态数据,但访问的数据大部分会被改写。而另外一种架构是90%的数据都是只读的,大多数任务会读取大量数据,再修改少量数据。延迟的需求游戏架构要求用户体验好,大的延迟不被接受,甚至牺牲吞吐量换取少的延迟。而企业环境的架构重在吞吐量,管理业务。有一点延迟可以接受。一般情况下,处理拥塞的解决方案: 基于地理位置来实现。游戏设计包含不同的游戏区域,每个虚拟区域运行一台服务器,每个区域拥有自我限制功能,当人数过多时,服务拥塞,游戏变慢,趣味性下降,用户就转向更有趣的区域,响应时间就会得到改进。(对于棋牌类游戏,每个房间或区域有人数限制,满的房间可以限制进入)这种开发方法的问题:游戏设计时,需要决定哪些区域放在一台服务器上,而添加新的区域时比较容易,若改动原来的区域,可能需要改动代码,这些都是开发的工作量。分区sharding。一个分区是一个区域的副本,运行在自己的服务器上,独立于其他分区,不同的玩家进入同一个区域的不同副本(分区)。这样的缺点时,不允许不同副本的玩家彼此进行交互。 Darkstar架构就是克服以上缺点,支持随时伸缩,同时又不要求游戏逻辑受到伸缩影响。支持动态响应负载,而不是放在游戏设计中完成。

转载于:https://www.cnblogs.com/sunmei20142925/p/6408688.html

你可能感兴趣的文章
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
TFS Instructions
查看>>
MSChart的研究
查看>>
[LeetCode] Intersection of Two Arrays II 两个数组相交之二
查看>>
C# 服务的安装、卸载、启动、停止操作
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
XmlDocument
查看>>
delphi 内嵌汇编例子
查看>>
SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错
查看>>
【福音】开发者可接入微信公众平台设备功能了
查看>>
springCloud学习-消息总线(Spring Cloud Bus)
查看>>
centos7 自动备份 mysql
查看>>
用JS判断两个数字的大小
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
CVE-2012-0158 分析
查看>>
Javascript 作用域与this的用法
查看>>
云计算和大数据时代网络技术揭秘(三)安全的网络准入
查看>>