OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

仅用 8 个虚拟机缩放至日处理数十亿事务,PayPal 是怎么做到的

  • 2016-09-21
  • 本文字数:1830 字

    阅读完需:约 6 分钟

传统方式下日处理十亿笔事务的系统可能需要数百台虚拟机,PayPal 只用 8 台虚拟机就做到了这一切,CPU 占用率高达 90% 时依然可以提供快速响应,这种 PayPal 以往从未达到的事务处理密度,实现过程所需时间只是传统方法的 1/10,在降低成本的同时无须为计算基础架构扩容即可帮助该组织顺利应对增长。这是怎么做到的?

PayPal 已将系统迁移至基于 Akka 的 Actor 模式。在 Squbs:PayPal 采用全新的反应式方法构建应用程序这篇文章中,PayPal 介绍了整个过程的来龙去脉。目前他们已将 Squbs 开源并发布至 GitHub

当项目需要采取一种 _ 做实事的方法 _ 时,有状态的服务模式依然没能获得足够重视。若要进一步了解有状态服务,建议阅读当下继续构建可扩展有状态服务的理由,这篇文章是根据Caitie McCaffrey 的讲话撰写的。如果这篇文章还不能让你信服,还有使用Akka 的竞品Erlang 实现极高吞吐率的WhatsApp: Facebook 斥资 190 亿美元所购买的 WhatsApp 体系结构

推荐上述文章的原因在于,PayPal 这篇文章对体系结构的介绍不详尽,而是用了较多篇幅介绍导致他们选择 Akka 的原因,以及迁移至 Akka 所获得的收益。但这篇文章依然为“不走寻常路”的做法提供了宝贵的激励和示范。

为服务使用大量虚拟机,这种做法有什么问题?

  • 使用吞吐率非常低,极小规模的虚拟机运行服务。基于 Actor 的反应式系统最大的亮点在于可以更高效地利用计算资源,这样即可大幅缩小系统规模,避免传统做法下“简单粗暴”的自动伸缩。
  • 会对网络和路由基础架构造成极大压力。由于服务趋向于更高程度的互联,请求可能需要经历大量网络跃点,这会增加延迟并降低用户体验。
  • 越大越贵。包含数百个虚拟机的服务在管理、监控,以及无效缓存(Ineffective caching)等方面存在极高的固有成本。
  • 越小越敏捷。将服务部署到数百台虚拟机,这个过程将花费大量时间。
  • 更充分地利用每台虚拟机上更多 CPU。由于 CPU 无法进一步提速,基础架构需要能更高效地利用每台虚拟机上装备的更多 CPU。
  • 需要通过易于维护和快速构建,并且松散耦合的 NanoService 构建微服务。谁都不想面对包含大量层面的复杂体系,你需要对不同服务的作用获得更高能见度,而无须深入到层层叠叠的代码中。

考虑到上述因素,PayPal 希望搭建一套具备下列特征的系统:

  • 可缩放,不仅要能横向缩放至数百个节点,还要能纵向缩放至更多处理器,借此实现每天处理数十亿请求的目标。
  • 低延迟,可以通过极为细化的粒度进行控制。
  • 面对故障具备弹性。
  • 可灵活调整服务边界。
  • 通过编程模型和企业文化促进可缩放能力和简易性,以及更简洁的故障和错误处理机制。

毫无疑问 PayPal 希望使用更“瘦”的堆栈,他们不想自己的堆栈包含大量不同层面的技术和活动部件。通常来说,Akka 和基于状态的系统很适合这一需求,这种方式可将包含大块组件的堆栈“分解”为某种单一技术。PayPal 选择 Akka 而非 Erlang 的原因在于他们对 Java 有更丰富的经验,而 Akka 就是在 Java 的基础上运行的。对很多人来说,从零开始学习 Erlang 并不现实。

借助 Akka 他们可以:

  • 编写更易于解释的代码
  • 编写更易于测试的代码
  • 相比使用 JVM 的传统模式,更自然地处理错误和故障场景
  • 编写更快速、更具弹性、更简单的代码,以更流畅的方式处理错误,减少 Bug 数量

于是 PayPal 立刻以 Akka 为基础编写了自己的框架,这个框架名为 Squbs ,使用该名称是为了与“Cubes”保持押韵。借此可为名为“Cube”的 NanoService 的构建创建模块化技术层。Cube 是相互对称的,不同 Cube 之间的依赖性也是对称且松散的,只暴露出 Akka 已经提供的消息接口。

该文还介绍了程序员在采用 Akka 代码时,此类代码非线性的本质可能造成的困难,因此你可能还需要雇佣接受过 Akka/Scala 相关培训的人员。

由于大部分服务的用途较为类似:接收请求,调用并读写数据库,调用其他服务,调用规则引擎,从缓存中获取数据,写入缓存… 因此可以通过类似 Orchestrator Pattern 和 Perpetual Stream 等模式对服务进行抽象。

Squbs 已成为 PayPal 构建基于 Akka 的反应式应用程序的标准做法。如果你的团队尚未考虑过有状态系统,也许这种做法值得一试,毕竟这种做法在 PayPal、Facebook、Uber,以及微软都取得了不错的效果。

作者 Todd Hoff 阅读英文原文 How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-09-21 17:285453
用户头像

发布了 283 篇内容, 共 101.9 次阅读, 收获喜欢 61 次。

关注

评论

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

测试左移和右移

陈磊@Criss

OCR文字识别工具:OCRKit Pro 中文激活版

真大的脸盆

Mac 文字识别 OCR Mac 软件

自动化软件开发工具有什么用?该如何选择?

SoFlu软件机器人

NFT数字藏品系统开发(开发及流程)丨数字藏品NFT系统开发(源码及功能)

系统开发咨询1357O98O718

代币质押流动性挖矿分红开发案例丨代币质押流动性质押挖矿分红系统开发(案例及详细)

系统开发咨询1357O98O718

「Go工具箱」GoCSV包:一个能将结构体和csv内容互转的工具

Go学堂

Go 程序员 个人成长 csv CSV 文件导入

waf全称是什么?是干什么的?

行云管家

防火墙 waf

中国消费级AR行业分析2023

易观分析

AR 消费级 眼镜

如何建设私有云原生 Serverless 平台

北京好雨科技有限公司

Serverless 云原生 #Kubernetes#

【新版】使用 go-cqhttp 扫码登录,一键接入 ChatGPT 机器人到 QQ 群 | 社区征文

极客飞兔

人工智能 聊天机器人 科技革命 openai ChatGPT

开发域的质量

陈磊@Criss

云算力挖矿开发正式版丨云算力挖矿系统开发(APP开发案例)

系统开发咨询1357O98O718

昇腾 AI 机器人发布,12 家企业、5 家高校签约,昇腾 AI 开发者创享日全国巡展沈阳首站成功举办

科技热闻

观测云产品更新|数据存储策略变更优化;新增支持创建重名的仪表板、笔记、自定义查看器;DQL 参数生效优先级调整等

观测云

数据存储 可观测 产品更新 观测云 可观测性用观测云

内卷了!阿里Java八股文面试题“惨遭”泄露,导致132人面进大厂

Java你猿哥

面经 金三银四 java 八股文 Java八股文

hoverfly 学习笔记

陈磊@Criss

云运维过程注意事项简单讲解-行云管家

行云管家

云计算 企业上云 云管理 云运维

详解软件质量模型

陈磊@Criss

混沌工程和故障演练

陈磊@Criss

6大奖项揭晓!40+优秀白帽齐聚百度安全BSRC年度盛典

百度安全

漏洞 SRC

云算力质押挖矿开发详细丨云算力质押挖矿系统开发(案例及功能))

系统开发咨询1357O98O718

上海堡垒机采购注意事项以及堡垒机厂商推荐

行云管家

信息安全 堡垒机 上海

贼全!一举通关的Spring+SpringBoot+SpringCloud全攻略,是真香啊

程序知音

Java spring 编程语言 springboot SpringCloud

企业软件开发成本高,该如何解决?

SoFlu软件机器人

持续测试

陈磊@Criss

持续测试破解自动化测试的行业谜题

陈磊@Criss

CCF BDCI“大数据平台安全事件检测与分类识别”赛题,奇点云夺冠

Geek_2d6073

经典神作!SpringBoot系列从入门到进阶,彻底搞懂SpringBoot

小小怪下士

Java spring 程序员 后端 springboot

【2023Java面试题全集】实用、全面、系统,助你一路通关!

程序知音

Java java面试 后端技术 Java面试题 Java面试八股文

PyTorch深度学习实战 | 自然语言处理与强化学习

TiAmo

强化学习 PyTorch 自然语言

国内大型战略咨询企业都是怎么解决数字化转型难题的?

优秀

数字化转型

仅用8个虚拟机缩放至日处理数十亿事务,PayPal是怎么做到的_语言 & 开发_Todd Hoff_InfoQ精选文章