AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

银行业和游戏业的技术体系架构

  • 2014-11-19
  • 本文字数:3630 字

    阅读完需:约 12 分钟

在本文中,我首先会考量金融系统企业架构的一些特性,并将其与我作为玩家所观察到的游戏环境的一些特性进行对比。

在本文的第二部分,我将继续讨论在云部署体系架构的发展过程中逐渐成长起来的一些技术和最佳实践。最后,基于这些案例分析,我将对未来进行一些预测,畅想一下将之前讨论的这些技术有机结合,能够为游戏行业开启哪些可能性。

首先是对金融机构的告诫。大型公司如此庞大,囊括多条业务线,一系列让人眼花缭乱的非功能性特征差异很大的各种不同类型的系统。因此,无论用什么方式描述他们,不足以表现其复杂性。一个工程师即使将其整个职业生涯都贡献给一家投资银行,最多也只能接触到这家银行所有的系统的很小一部分。

所以,当我在文中讨论金融机构和他们的系统时,我会将注意力集中在投资银行面向客户的这部分系统上。这些团队和项目通常十分关心系统的可靠性和稳定性。这非常符合他们的本性——银行是一群被严格监管的玩家,同时又身处于一个高度竞争且利润丰厚的市场。

客户订单管理系统可能是这种系统最典型的案例之一。系统代表客户接受股票和证券(或商品期货、外汇及其他金融工具)的订单,然后在电子市场中将订单提交,一般情况下基本无需银行工作人员人工干预。

使用这种系统的银行客户通常对特定的银行没有一点忠诚度可言。许多客户都在不同的银行同时拥有用于获取市场访问权限的客户账户。

某个银行的订单管理系统哪怕出现极短时间的不可用(例如几秒钟或更短),用户都会切换到竞争对手的系统中完成订单,然后可能几个月都不会切换回之前的供应商所提供的系统。即使在市场最繁忙的时期,也是如此。

这就意味着设计这类银行系统时,必须要保证非常高的可靠性。因为这类系统的客户群非常易变而且失去任何一个客户都可能会对银行某个部门的利润造成严重影响。

在这个市场中的经验让银行能够在可靠性方面保持相当高的水平,不过这是以付出巨大的成本为代价的。这既包括用于保证冗余度和系统监控的软件和硬件方面的成本,同时也包括人员方面的成本——需要一定数量的支持工程师以保持系统能够在所需要的可靠性水平上持续运转。

相比之下,如果玩家已经对某个特定的游戏形成了较多的情感依赖,那么他们对系统停机问题会更加宽容。对于常规部署的热门游戏,大型补丁可能让下载时间变得更长这一事实(通常几百 MB 大小)看起来已经基本上被用户所接收,即使有这样的情况发生,用户也不会大规模转移到另外一款游戏。

甚至连偶尔的服务器崩溃都被当作生活现实。只要不是频繁发生,玩家连系统崩溃甚至是少量的游戏状态和经验丢失都能够接受。

银行系统和游戏系统的另一个显著区别在于用户对系统的影响不同。不管多么铁杆的玩家,对系统的总体影响和对系统资源的消耗都是有限的。

而在银行系统中,某些特定的客户则比其他的客户重要得多——而且这些重要的“鲸鱼”客户通常能够消耗大量的系统容量和处理能力。

这就导致这样一种情况——分片模式很自然地适用于游戏系统,因为个体玩家能够被有效地分为大致相等的堆。而在银行系统中,这种模式则很难适用,如果要在银行系统中以一种有用的方式实现这种模式,则有很多工作要做。

银行业和游戏业技术之间的最后一个对比——在这两个行业都曾经有过针对网络栈这个领域所做出的大量优化工作。特别是延迟和带宽方面的问题是可能与游戏和银行系统都密切相关的。

离开金融领域后,我参与过一些很有意思的基于云的初创项目,并且接触到了一些有趣的新兴技术和实践的第一手资料——其中一些技术和实践关乎游戏基础设施可能演变的方式。

我们希望在云端构建的架构应该具备三个主要的非功能特性,同时具备基本的适用性并且能够真正执行所需的任务:

  • 冗余性——系统架构应该能够承受任何个体服务器的损坏。在更超前的用例中,整个数据中心(甚至是整个 IAAS 区域)的损坏都不应该导致服务质量下降。
  • 可恢复性——当瞬时故障结束后,系统应该能够自动恢复到良好的状态。
  • 可复现性——系统应该有充足的日志和监控,当故障发生后,能够重现问题,分析其根本原因,然后修复问题避免其再次发生。

考虑到这些能力,我有时发现将云技术和最佳实践当前的演变划分成两个即相互独立又相互重叠的阶段是很有帮助的。

第一个阶段是从主机托管到基础设施即服务的转化,这一阶段以提供用于配置和指挥控制的 API 服务的发展为特征。如果没有这些接口,考虑真正意义上的“云”解决方案可以说还为时尚早。

除了配置 API 之外,我认为第一阶段还应该具备的典型技术是以一种对虚拟实例用户透明的方式将虚拟实例迁移到不同的物理硬件上的能力。

随着配置 API 和透明迁移这两种能力相互结合,云所能提供的潜在收益开始逐渐展露。这些收益通常以几种方式体现:弹性扩展、将计算能力作为商品按时计费以及可能更高的可靠性。

用这样的词来形容第二阶段最恰当不过——“服务器是牲畜,不是宠物”。传统环境下,系统管理员会手工构建订购的服务器。在这种环境下,即使是借助脚本和半自动化的方式,也很难保证能够以完全相同的方式构建两台不同的服务器。

更糟的是,即使构建了完全相同的服务器,如何验证这一事实仍是个问题。因为服务器是由各个系统管理员分别升级和维护,随着时间的推移,这个问题会变得越来越糟。如果一台重要的服务器出现问题,管理员会像照料心爱的家庭宠物一样照料这台服务器。

第二个云时代的开启以持续集成等技术和 DevOps 运动的兴起为标志。诸如 Puppet 和 Chef 这样的技术让从零开始自动构建完全相同的服务器成为可能。这种构建方式更加强调重新构建和重新部署,而不是大量的手工修补。这一方案的基础是不过高估值任何一个体实例,对待它们就像对待牲畜一样。

有意思的是,金融行业长久以来就需要部署大批量服务器和忽略个体服务器宕机的影响。摩根斯坦利是为数不多的几家投资银行之一,能够相对公开的谈论其基础设施特性。根据其记录在案的数据,早在 1995 年,摩根斯坦利已经拥有上万台分布于 30 个不同位置的 Unix 服务器(Gittler, Moore and Rambhaskar, LISA 95),而且随着时间的推移,机器的数量已经增长到数十万计。

然而,尽管这种有能力的基础设施技术 20 多年之前就已经存在,这些技术直到最近才广为流传,造成这种状况的原因有二:

  1. 这一技术曾经是完全专属的,并且在很多情况下与某一公司的特定问题领域密切绑定。
  2. 确实很少有公司需要管理和统筹如此多的基础设施。

这些有能力的银行所开发的专属技术的确为现代化的大规模技术奠定了基础。因此,当谷歌这类公司刚刚出现时,将银行作为其招揽人才的主要来源也就不足为奇。

Chef 和 Puppet 这类开源的配置和管理解决方案的发展将会证明云技术第二阶段的关键正在到来,这与越来越多的公司发现廉价的大规模计算带来了潜在机遇时的场景如出一辙。

着眼未来,下一个正在兴起的新理念就是集装箱化。这一概念推崇自包含的应用部署单元发布,只需部署到一个基本的应用主机上就能够具备完善的功能,同时还能够避免依赖地狱。

首款具备此功能的可行产品是 Docker。Docker 利用 Linux Containers(LXC)为用户提供运行在联合挂载文件系统上的隔离应用环境。

Docker 有着相当雄伟的目标,不过目前仍然十分不成熟,对于无法应对这些棱角的团队,最好不要将 Docker 应用到生产环境中。

不过,Docker 的社区已经具有相当规模(而且规模还在不断增长)并且还有多家主流供应商的支持,包括 Red Hat 和谷歌。

Docker 也许将继而成为这一领域具有统治能力的技术——也有可能会有其他既可信又有竞争力的产品在这一领域出现(这与其他可选工具开始出现时,发生在 DevOps 和配置管理身上的故事类似)。

然而,无论竞争的格局最终将如何演变,将集装箱化作为一种部署方法的理念都是相当引人瞩目的。对于已经采纳这种理念的团队,在考虑系统架构和应用打包时,会受益良多。

最后,让我们转到与主题相关的问题上——云部署技术能够在多大程度上指明方向,通往更加高效和可信的游戏基础设施。

更好的游戏基础设施能够产生如下两个主要收益:对游戏开发者来说大幅降低的游戏运行成本,以及更可信的基础设施和更少的分片。

从经济角度来说,游戏生产商也能够受益于云 ---- 因为云可以降低其前期成本 ---- 如果一款游戏不能立刻就开始迅速发展,就不需要建立可能会闲置很长时间的数据中心。

游戏玩家从中也将获益匪浅。如果游戏运营的主要成本消耗(可能超过游戏运营所需成本的 10%)能够有所降低,并且可伸缩性更强,这将为更多的独立制作游戏,更多偏爱 AAA 空间探险和范围更广的游戏体验打开市场。

长久以来就属于银行体系架构一部分的可靠性技术也能够在游戏行业发挥其应有的作用,主要体现在防止宕机和降低分片对整体游戏体验影响等方面。

关于作者

Ben Evans是 Java/JVM 性能分析初创公司 jClarity 的 CEO。在业余时间他是伦敦 Java 社区的领导者之一并且是 Java 社区进程执行委员会的一员。之前的项目经验包括谷歌 IPO 的性能测试,金融交易系统,为 90 年代一些最大的电影编写备受好评的网站,以及其他。

查看英文原文: Technical Architecture in Banking and Gaming

2014-11-19 21:025617
用户头像

发布了 75 篇内容, 共 65.1 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

2022阿里云采购季,移动研发平台EMAS爆款清单来袭

移动研发平台EMAS

阿里云 开发者 emas 采购季 移动研发

Intel CET缓解机制实战解读

腾讯安全云鼎实验室

安全攻防 网络安全 安全研究

ModStartCMS模块化建站系统 v3.4.0 富文本粘贴上传,自定义分页

ModStart开源

php laravel modstart

2022北京智慧工地-招商报名中

InfoQ_caf7dbb9aa8a

智慧工地展览会

一眼定位问题,函数计算发布日志关键词秒检索功能

Serverless Devs

阿里云 Faas 函数

揭秘字节跳动云原生Spark History 服务 UIService

字节跳动数据平台

大数据 spark 字节跳动 湖仓一体

vivo鲁班RocketMQ平台的消息灰度方案

vivo互联网技术

RocketMQ 消息中间件

释放「数据价值」,请别忽视基础软件本身的提升

ToB行业头条

网络协议之:socket协议详解之Datagram Socket

程序那些事

socket 网络协议 udp 程序那些事 3月月更

Tech Talk 活动预告 | 送走 CentOS Linux 8,开发者们该如何保持 Linux 的采用途径?

亚马逊云科技 (Amazon Web Services)

开发者

“==”和“===”,难道不是多一个的区别吗?

华为云开发者联盟

JavaScript typescript string 变量 操作符

帮助企业实现客户服务自动化的方式

小炮

二维码的应用技术

源字节1号

开源 前端开发 二维码 后端、

设计秒杀系统架构,这4个关键点要注意

华为云开发者联盟

秒杀系统 订单 秒杀系统架构 RabbitMQ延时队列 Rabbit MQ

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 DevOps 云原生 云端开发

【过等保】2022年过等保常见问题解答

行云管家

网络安全 等保 等保2.0

销售CRM系统解决方案

低代码小观

销售管理 CRM 企业管理系统 CRM系统 客户关系管理系统

国产虚拟化软件H3C CAS体验之环境搭建(虚拟机搭建)

WangNing

虚拟化 环境搭建 H3C CAS

使用Rust的几点理由,加入我们,一起学习!

非凸科技

网络安全 kali web安全【渗透测试】目录遍历漏洞

学神来啦

网络安全 渗透测试 WEB安全 kali kali Linux

C++后台开发学习路线

Linux服务器开发

后台开发 C/C++ 后端开发 Linux服务器开发 C++后台开发

详解图像处理的算术运算与逻辑运算

华为云开发者联盟

OpenCV 计算机视觉 图像处理 图像算术 逻辑运算

2021年券商APP盘点:用户规模大幅度增长,智能炒股成为行业标配

易观分析

券商

消息复杂计算的抽象和简化

阿里巴巴终端技术

数据处理 客户端 消息

FabEdge 成为 CNCF 沙箱级项目

BoCloud博云

边缘计算 cncf 开源技术

大咖说|阿里巴巴闻佳:数字技术将引领我们走向节能型社会

大咖说

阿里巴巴 数字化 环保 双碳

NextRPC : RPC多段返回的创新和探索

阿里巴巴终端技术

RPC 客户端

【web安全】Spring boot heapdump获取敏感信息

H

Java 网络安全 WEB安全

【CAD】系列Ⅰ

謓泽

3月月更

云图说|DRS数据对比——带您随时观测数据一致性

华为云开发者联盟

数据一致性 DRS 数据复制 数据迁移

银行业和游戏业的技术体系架构_架构_Ben Evans_InfoQ精选文章