千赢游戏官网手机版 13

千赢游戏官网手机版在弹性应用程序设计上,终究是意气风发支怎么样的团伙

千赢游戏官网手机版 1有没有注意到 ping 命令(ping
命令用于检查网络是否连通,可以帮助分析和判定网络故障。)与 find
命令(查找)混合在一起?

对于更多的写入密集型负载,eBay开发出了“极高读/写模式”,该模式在其美国数据中心部署了一个分布式的MongoDB集群。

千赢游戏官网手机版 ,这一发现说明了良好监控平台的作用。

标准MongoDB设计模式被用作eBay的“阅读强化/高可用读取模式”的基础,该演示文稿用于为eBay产品目录提供支持。对于目录负载,MongoDB副本集可以扩展到50个成员,为大并发量的数据分发提供了读取的可扩展性和恢复能力。

在早期的监控系统中,这就是“幽灵”出现的方式

曲先生指出,随着近期的产品功能增多,MongoDB正在越来越满足更广泛的应用需求:

而与之相对的中心化机构 Coinbase
交易所,虽然在2017年也曾受平台扩展性瓶颈影响而导致大规模故障停机,但自此以后,尽管数字货币交易人群不断暴增、交易请求数量呈指数增长,但
Coinbase
平台貌似并没有再受扩展性问题的影响,持续、稳定地运行着,令人差异,他们是如何做到的?

千赢游戏官网手机版 2在2017年的交易量开始井喷的早期,每分钟平台后端API请求的数量

图2:MongoDB极高读/写模式的eBay设计模式(图片由eBay的MongoDB世界演示提供)

比较有效的方案就是通过模拟几倍于过去经历的交易量峰值来测试平台环境,来发现下一个问题点可能来自哪里。

这两个因素从根本上改变了工程团队如何考虑可用性,并且引导eBay创建其“弹性设计模式”,以建立最大化平均故障时间(Mean
Time To Failure,MTTF)并最大限度地减少平均恢复时间(Mean Time To
Recovery,MTTR)的数据库最佳实践。

每次故障停机的模式都是相同的:主监控平台会显示100倍的延迟峰值,Ruby
和 MongoDB 延迟时间各是50倍。

其次,eBay开发人员可以使用特定的MongoDB写入和读取配置来设计模式,以调整最佳满足不同应用需求的持久性和一致性级别。

Cannon
工具允许精确选择回放捕获信息的速度,从而模拟数千倍于平台一天可能遇到的交易数据量的负载。

图1:MongoDB恢复架构的eBay设计模式(图片由eBay的MongoDB世界大会演示提供)

团队对平台进行垂直扩展,为改进其性能及优化检索过程升级数据库版本,此外,还将热点数据库集群拆分为单独数据库集群等。

作为世界前十十个全球零售品牌,拥有1.7亿活跃买家和10亿在线市场,eBay无法承受系统停机带来的损失。这就是为什么公司依靠MongoDB作为其核心企业数据平台标准之一,为运行ebay.com的多个面向客户的应用程序提供支持。

添加一个查询缓存层,用于在
Memcached(一个高性能的分布式内存对象缓存系统,用于动态 Web
应用以减轻数据库负载)中缓存查询结果。

  • 对MongoDB
    3.4添加区域分片使得eBay能够为需要跨多个数据中心提供分布式、永久写入可用性的应用程序提供服务。
  • 针对即将发布的MongoDB
    3.6版本的可重写的写入将允许eBay减少应用程序异常处理代码。 

经过以上方法改进,Coinbase 平台压力暂时得以缓解,但随着时间流逝,交易量总在持续攀升,平台断断续续出现了很多次故障。

为了构建应用程序,eBay开发人员可以从五个公认的数据库标准中进行选择。
除了MongoDB,团队还可以选择使用Oracle或MySQL关系数据库和两个NoSQL数据库。
曲先生的DBA团队为适当的数据库选择提供指导,根据应用程序的数据访问模式、用户负载、数据类型等进行选择。

虽然这种行为不太可能导致 Coinbase
平台故障停机,但几乎可以肯定,这是造成我们在监控中观察到的“幽灵”行为的原因。

千赢游戏官网手机版 3

另一个问题是某些数据库集群的巨大读取流量。

曲先生介绍了eBay的“MongoDB弹性设计模式”,如图1所示。

这些改进提供的详细数据使团队能够快速找到一些故障停机期间的异常特征,甚至在非故障停机期间也可以。

在今年的MongoDB全球大会上,eBay的首席NoSQL
DBA曲峰提供了弹性应用程序的实用设计模式 —
他的团队开发的一套支持企业级MongoDB部署的架构蓝图。

虽然安全性始终是我们的首要任务,但我们也乐于将确保我们平台可靠性、可扩展性当作Coinbase的主要任务!

曲先生开始讨论多年来可用性概念的变化。过去,网站可以接受每周维护的预定停机时间。随着当前服务的全球化,用户或业务都不会接受如此频繁的停机!此外,大多数公司现在在商业硬件平台上构建其服务,而不是以前的
Sun Solaris /
Sparc服务器。虽然商业硬件的成本要低得多,但是它也经常故障。

例如,一些用户可能拥有多个设备,而某些设备可能由多名用户共用。
糟糕的设备指纹(用于标定设备)识别算法将大量用户置于同一设备中,从而导致单个设备拥有大量 user_id 对象。

【编辑推荐】

千赢游戏官网手机版 4所有慢速MongoDB查询操作中记录的重要信息

千赢游戏官网手机版 5

千赢游戏官网手机版 6在团队协作完成这次挑战后,我们为
Coinbase 目前的可靠性状态感到自豪。

虽然eBay的所有非关系数据库选择都提供了内置的故障恢复能力,但它们可以使不同的设计影响应用程序的行为。DBA团队在六个维度上评估这些差异:可用性、一致性、持久性、可恢复性、可扩展性和性能。例如,使用点对点、无主设计的NoSQL数据库具有昂贵的数据修复和重新平衡过程,必须在节点发生故障之后启动。此重新平衡过程会影响应用程序吞吐量和延迟,并可能导致连接堆叠,因为客户端等待恢复,这可能导致应用程序停机。为了减轻这些影响,eBay不得不将最初在Oracle上开发的应用级产品分层在这些无数据库之上。这种方法使DBA团队能够将更大的集群分成一系列子集群,从而将重新平衡开销与较小的一组节点隔离开来,同时只影响了一小部分查询。eBay
DBA团队构建其弹性设计模式是针对这些不同类型的数据库行为。

造成响应信息数据量过大的原因是当时用户和设备之间为多对多关系。

在这种设计模式中,一个7节点的MongoDB副本集遍布eBay的三个美国数据中心。此模式可确保在主数据中心发生故障的情况下,数据库集群可以通过在剩余的数据中心之间建立一个仲裁来保持可用性。MongoDB的副本集成员可以被分配选举优先级,以控制哪些Slave成员被认为是在Primary成员失败时的晋升候选人。例如,如果副本集Primary成员失败,则DC1本地的节点将被优先选择。只有整个DC1遭受中断,DC2中的复制集成员才会被认为可以进行选举,根据哪个节点已经执行最近的写操作选择新的Primary成员。
可以通过使用MongoDB的 majority write
concern来扩展这种设计模式,以使得能够跨数据中心持久的写入。

2017年的事件再次证明,给客户提供访问和查看资金的可靠服务对于实现Coinbase
成为值得信赖的购买、销售和管理加密货币平台的目标至关重要。

千赢游戏官网手机版 7

在此期间,在中心化交易所
Coinbase 平台之上,几乎所有技术组件都经历了残酷的实战考验。

eBay目前运行超过3000个非关系型数据库实例,为一系列应用程序提供支持,可在其间管理数PB数据。
在过去,Oracle是“记录系统”,而非关系型数据库则处理“参与系统”中使用的临时数据。
然而,非关系型数据库环境已经成熟。通过一致的时间点备份和恢复,MongoDB现在也在eBay上服务于记录系统的用例。

在此期间,平台的交易量持续超越了事先预定的红线,导致 Coinbase
平台出现了一段时间的故障停机。

千赢游戏官网手机版 82016年以太币价格飙升之前平台每分钟后端API请求的数量

千赢游戏官网手机版 9

解决方案就是执行交易流量的捕获和回放,明确地说就是在数据库上按需生成人为的“加密狂热(crypto
mania)”。

为了快速解决 Coinbase 平台的可扩展性问题,工程师团队先从平台环境中常规的、容易实现的技术点进行了改进。

在查询数据库之前,特定高读取流量的数据库集群对任何单个文档的查询操作都会先在查询缓存层中进行,对数据库的任何写入操作也会同时更新缓存。

然而,在2017年5月和6月,随着以太币价格的飙升,平台的交易量也随之猛涨并超越了红线。

千赢游戏官网手机版 10事实证明,去年5月和6月经历的交易量井喷与去年12月和今年1月经历的交易量井喷根本不是一个数量级的。

当准备好执行回放时,另一个基于“mongoreplay”名为“Cannon”的工具将根据之前的数据库集群快照将记录的流量回放到新启动的数据库集群上。

千赢游戏官网手机版 11

在精心改进我们的数据库查询操作之前,这几乎是不可能实现的调试问题,有了新工具,现在结果显而易见。

在2017年首次爆发之前,Coinbase
团队就用表示四到五倍平台每日最大交易量的红线来标示出预计的平台交易量,即每分钟大约100000个后端API请求。

作为 Coinbase 的主要数据存储区,MongoDB
在数据流量大的时候会出现高延迟,而 Ruby 延迟时间并没有增加。

当用户登录网站购买加密货币或查看相关信息时,大量的查询会导致过重的网络负载。

千赢游戏官网手机版 12

千赢游戏官网手机版 132017年上半年的交易量井喷(红圈处)较后期而言不足为奇

这个发现来自于 Cannon 工具的调试功能。 Cannon
工具能够检查特定的捕获文件并查看其中的前100条消息。
经过检查,确实发现了一些有趣的事:

发表评论