zoukankan      html  css  js  c++  java
  • 假期阅读笔记三

    架构之美——企业级应用架构(一)

          随着越来越多的系统运行在网络上或在互联网上提供访问,伸缩性正变得越来越重要。在当今社会里,不论男生还是女生,不论小孩还是老人,很多都喜欢玩一些大型的网络游戏,如英雄联盟、倩女幽魂、王者荣耀等,其实这些游戏都属于大型多人在线游戏,简称MM0。MMO中特别关注一点就是这些系统必须具备伸缩性,以满足大量的用户。众所周知,只要是将系统连接到网络上,每个人都会遇到伸缩性问题。在网络世界里,一个站点可以在几分钟内从其中一种状态转变成另一种状态。

          何为伸缩性,想必有很多人对这个词汇都感到很迷惑。其实,伸缩性是一种对软件系统计算处理能力的设计指标,它代表的是一种弹性,在系统扩展成长过程中,软件能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现整个系统处理能力的线性增长,实现高吞吐量和低延迟高性能。伸缩性是高性能、低成本和可维护性等诸多因素的综合考量和平衡,它讲究平滑线性的性能提升,更侧重于系统的水平伸缩,通过廉价的服务器实现分布式计算。伸缩性是根据应用系统的特点在吞吐量和延迟之间进行一个侧重选择,当然水平伸缩分区后会带来CAP定理约束。

          熟悉Web服务器的我们都清楚:Web服务器的用户常常读取的是静态的内容,彼此之间没有交互。但是对于MMO中的玩家则是不同的,他们不仅需要与所处的环境进行交互,还需要彼此之间的交互。这些交互行为使得这类系统基础设施的伸缩性问题变得更复杂,这是因为这些玩家与系统的交互几乎是独立的,而且不会让环境的状态改变太多。MMO最忌讳的一个现象就是:多个用户通过网络在服务器上交互时,由于一个玩家的意外动作而导致服务器崩溃,影响了许多其他玩家。既然如此,那么伸缩的能力就成为了任何架构的首要需求,对伸缩的需求表明,系统应该是分布式的、并发的。

          那些自认为很了解架构的人,究竟有多少是关于架构的思考呢?也许所有人关于架构及其实现的第一个问题就是它的性能,虽然未经深思熟虑就对架构进行优化是诸多罪恶之源,他们也有可能会设计出一个架构,但它的实现根本不可能达到好的性能。由于游戏行业的特点,确定服务器基础设施的性能是很难的。其难度源自一个简单的事实:没有针对大规模MMO或虚拟世界的性能测试标准或共同接受的例子。只有少数的通用基础设施可以作为可复用的构建块,这些组件一般是事后从特定的游戏或虚拟世界中提取出来的,提供给其他构建类似游戏的人使用。

          作为一个架构,Darkstar展示了一些创新的方法,这使它变得很有趣。它试图构造一个游戏或虚拟世界的基础设施,使其具有企业级软件一样的可靠性,同时又满足游戏行业对延迟、通信和伸缩性的要求。它是目前为数不多的这类尝试之一。通过利用更多机器和更多线程来实现效率,我们希望能够抵消因使用持久存储机制而导致的延迟增加。最后,游戏和虚拟世界环境中极为不同的情况,即客户端的处理很多而服务端的处理很少,与我们常见的高并发、分布式系统环境形成了鲜明的对比。

  • 相关阅读:
    Amazon EBS的功能更新
    ORA-03113: end-of-file on communication channel
    云serverlinux又一次挂载指定文件夹(非扩充)
    Binder对象死亡通知机制
    cocos2d::ui::TextField 调用setAttachWithIME和setDetachWithIME都无效
    shell linux基本命令实例、笔记
    降智严重——nowcoder练习赛46&&codeforces #561 Div2
    2018-2-13-win10-uwp-隐藏实时可视化
    2018-2-13-win10-uwp-隐藏实时可视化
    2018-2-13-win10-UWP-ListView-模仿开始菜单
  • 原文地址:https://www.cnblogs.com/niujunyan/p/6286853.html
Copyright © 2011-2022 走看看