亚马逊机器人通过亚马逊DynamoDB实现全球规模并提高工程效率
主要要点
亚马逊机器人为其全球配送网络设计先进的机器人解决方案,每天满足数百万客户的交付承诺。MOSS团队将自管理的数据库迁移至DynamoDB,这一完全托管、多区域的NoSQL数据库,带来了35的工程效率提升。DynamoDB支持高可用性和无缝扩展,确保企业能在不断变化的工作负载下保持高效。迁移过程简单快捷,没有造成任何系统停机,确保了客户服务的连续性。亚马逊机器人Amazon Robotics,AR为亚马逊的配送网络设计高级机器人解决方案,旨在满足每天数百万客户的交付需求。AR开发了关键软件,控制着北美、欧洲、亚洲和澳大利亚的数十个亚马逊站点中超过50万台移动机器人。MOSS运动科学与调度团队专注于工程效率,决定采用亚马逊DynamoDB来存储数百万个实时工作请求,这些请求协调移动机器人的动作。
本文将探讨MOSS团队如何将自管理数据库迁移至DynamoDB,这是一个完全托管、多区域且多活跃的NoSQL数据库,能够在任意规模下提供单毫秒级的性能。这一转变使得团队的运营和工程效率提高了35,使工程师们能专注于为客户创新,而非资源配置、更新补丁及管理服务器。
在DynamoDB之前:高运营负载
在迁移到DynamoDB之前,MOSS软件工程师大约花费三分之一的时间在管理、调整和故障排除数据库集群,这些集群部署在2000多个亚马逊弹性计算云Amazon EC2实例上。具体工作包括:
任务描述调整容量随着持续增长、季节变化和全球配送网络的业务需求增长进行调整。监控资源利用率手动更换主机以保持集群健康。实施数据备份和恢复流程实施并测试数据备份和恢复程序。更新操作系统更新EC2实例的操作系统及其软件应用程序依赖项,以获取最新安全补丁和版本。计划和测试数据库版本升级为维护任务规划和测试数据库版本升级。为何选择像DynamoDB这样的托管服务?
MOSS团队希望通过将自管理数据库解决方案迁移至AWS托管服务如DynamoDB,获取几个关键好处:
简化基础设施管理:AWS处理所有数据库基础设施和维护任务,包括资源配置和补丁更新。轻松扩展:您可以全球范围内高可用、耐用且容错地扩展,无需手动进行容量规划和调整。安全的数据存储和备份:利用DynamoDB中的细粒度访问控制、AWS身份和访问管理IAM策略及加密,确保数据安全、备份和按时间点恢复PITR。DynamoDB的优势:自适应扩展和透明的分区拆分
DynamoDB旨在为全球用户提供服务,允许轻松扩展关键工作负载。作为AWS托管解决方案,它会自动调整您的应用程序的读取和写入能力,使您不必担心基础设施或配置决策,尤其是在工作负载变化或流量模式波动时。
迅猛兔加速器DynamoDB是如何帮助您扩展的?首先,它支持自适应容量,这意味着当某一分区流量过高时,它会从其他分区分配容量。DynamoDB还支持分区拆分,服务将在分区流量达到上限时,将热分区拆分为两个,并在必要时继续拆分,直到流量处理不再受到限制。分区拆分与自适应容量分配一样,都是透明进行的,不需要用户采取任何行动。
迁移方法
在进行这次迁移时,MOSS团队仅需重新设计服务的持久化层,该层处理与数据库的连接。这一方法使他们能够安全地将遗留数据库替换为DynamoDB,而不影响任何核心服务逻辑,并在迁移过程中给与他们较大的控制权。
此次数据库迁移采用了主从策略,确保在客户端实现无停机平滑过渡。流程包括以下步骤:
团队引入DynamoDB表,作为从数据库,确保所有主机均可连接。他们将DynamoDB提升为主数据库,管理所有新插入项,其遗留数据库现在为从数据库仅负责更新先前插入的项目。当所有更新都由DynamoDB处理后,便移除了遗留数据库作为端点。以下示意图展示了这个流程的不同阶段。
测试中的关键经验
MOSS团队进行了广泛测试,以确认DynamoDB能满足他们的高吞吐量和扩展需求。以下是一些关键经验:
调用策略:为了管理高并发需求并提高服务可靠性,MOSS团队使用了并行批调用及同步重试。这一策略整合了失败的项目,大大减少了必要的服务器连接数。相对而言,在需要快速重试的情况下例如瞬态网络故障或短暂服务器中断,也可以采用非整合策略。扩展考量:既可使用预配置模式,也可使用按需模式的DynamoDB表,提供服务的高吞吐量。在按需模式下,DynamoDB可以瞬时适应工作负载的变化,避免请求堵塞。如果您预见流量会在30分钟时间内达到之前峰值的两倍,可以预热表,将其设置为预配置模式,然后再切换至按需模式,这将降低请求堵塞的风险。分区分片:为了优化查询性能和减少流量堵塞,团队采用了两种分片技术:自动和手动。对于非顺序分区键如无序数据,他们使用确定性的均匀随机哈希,将数据均匀分布在各分区中,以确保均匀分布。对于顺序分区键如时间序列数据,则使用手动分片以确保流量的均匀分布。结论
通过将关键资源迁移到DynamoDB,亚马逊机器人实现了35的效率提升,使他们的工程师每年节省了近9000小时,可以专注于推动客户创新,而非管理后端基础设施。展望未来,亚马逊机器人计划将更多工作负载现代化并迁移到AWS托管服务,同时持续提升团队的效率。
如您对本文有任何问题或建议,欢迎留言。
关于作者
Kratesh Ramrakhyani SDE 运动科学与调度MOSSKratesh是一名软件开发工程师,已在亚马逊机器人工作了5年。 他有效地从头到尾主导了多项项目,其中亚马逊DynamoDB迁移项目是最近一个且影响力最大的项目。Kratesh负责并支持MOSS团队的多项关键服务,确保它们的无缝运行及持续改进。
Daniel Martin SDE 运动科学与调度MOSSDaniel是一名软件开发工程师,负责移动机器人平台上的请求和活动进度管理。他熟悉将数据库迁移到亚马逊DynamoDB,从而帮助提高系统运营效率。

Giovanni Scialdone SDM 运动科学与调度MOSSGiovanni是MOSS团队的软件开发经理。他的团队负责协调所有请求和活动,以实现移动机器人按客户订单的移动。
Karen Roberts SDM 机器人运动Karen是亚马逊机器人中机器人运动团队的软件开发经理。她的团队负责移动机器人的协调与管理。
Jon Olmstead 客户解决方案经理CSMJon与亚马逊的工程团队合作,帮助他们通过AWS云服务的采用与现代化实现价值。他居住在华盛顿州的班布里奇岛,喜欢与家人共度美好时光和进行长途徒步旅行。