高效管理数百万个Tamagochi设备与AWS IoT 官方博客
- 24
利用AWS IoT高效管理数百万台Tamagotchi设备
关键要点
在这篇文章中,我们将探讨如何通过AWS IoT来连接和管理Tamagotchi设备,尤其是Tamagotchi Uni,这是第一款具备WiFi连接功能的Tamagotchi,能够实现全球互联互通。BANDAI CO LTD与其云开发合作伙伴Phoenisys Inc采用AWS的方案,使用户能够进行远程更新,确保客户不会延误体验新内容。
Tamagotchi Uni是Tamagotchi系列的首款具备WiFi连接的产品,现已上市。用户可以通过该产品直接连接网络,与全球的Tamagotchi进行互动。开发商BANDAI CO LTD通过采用AWS IoT的解决方案,成功实现了全球互联的Tamagotchi概念,使用户可以相互交流。

本文将分享BANDAI CO LTD及其云开发合作伙伴Phoenisys Inc如何利用AWS连接和管理数百万台Tamagotchi设备。在此过程中,执行远程更新至关重要,特别是使用AWS IoT Device Management的Jobs功能,确保在不造成客户延误的情况下,为所有Tamagotchi设备分发最新的固件。
Tamagotchi Uni是什么?
Tamagotchi是一款手持的虚拟宠物,用户可以对其进行养成。自1996年推出以来,全球累计销售超过9100万台,受到了各个年龄段人群的喜爱。最新款Tamagotchi Uni于2023年7月15日全球上线,能够直接连接互联网,与其他世界各地的独特Tamagotchi互动。该产品的愿景是创造一个全球Tamagotchi爱好者通过自身培养的Tamagotchi进行沟通的世界。
Tamagotchi Uni的进化
借助WiFi连接,Tamagotchi用户能够探索Tamagaverse,这是一个Tamagotchi的元宇宙,能够遇见全球用户培养的Tamagotchi。此外,Tamagotchi Uni直接连接云端,让用户能够不断下载新的活动和物品。连接性还使用户能够同时进行竞争和合作,这些功能得益于AWS IoT Core,提供跨多个AWS区域的可靠云连接。
使用AWS IoT及无服务器架构确保安全连接
为了使Tamagotchi Uni具备物联网功能,BANDAI设定了以下三个关键目标:
实现安全连接扩展和负载均衡资源,以容纳全球超过百万的连接优化运营成本Tamagotchi解决方案基于AWS无服务器架构,使用AWS IoT展开。
这部分简要描述了在架构中如何使用AWS服务来提升Tamagotchi Uni的可靠性和成本效益,更好地开发、运营和管理。
AWS IoT Core
Tamagotchi Uni使用AWS IoT Core进行身份验证、连接和消息传递。通过设备影子功能,可以管理每台Tamagotchi Uni设备的状态,利用影子的delta作为标志,从而高效获取分发的物品和内容。
AWS IoT Device Management
开发团队预见到管理日益增长的Tamagotchi Uni设备将变得具有挑战性。为此,他们利用AWS IoT Device Management对庞大的Tamagotchi Uni车队进行索引,创建动态组,以便根据每个设备的状态进行高效的空中OTA更新。
FreeRTOS
与AWS连接的Tamagotchi Uni设备软件运行在FreeRTOS上,减少了实现设备云通信所需的资源和代码量,提升了系统开发的效率。
AWS Lambda
Tamagotchi Uni利用AWS Lambda处理任务,发布新公告以及注册资产。
Amazon DynamoDB
Tamagotchi Uni使用Amazon DynamoDB,作为一个完全托管的无服务器键值(NoSQL)数据库,在任何规模下运行高性能应用。
Amazon简单存储服务Amazon S3
Tamagotchi Uni使用Amazon S3作为对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。这些数据存储管理着Tamagotchi Uni内的各种资源。
Amazon Timestream
Tamagotchi Uni使用Amazon Timestream来累积用户下载物品和附加内容的历史数据。
tk加速器下载安装固件分发中的挑战
团队将利用AWS IoT Jobs通过定期固件更新为Tamagotchi Uni提供新游戏和内容。虽然Jobs可以轻松安全地进行固件更新,但团队了解到每小时作业执行的默认最大数量每分钟1000台设备将导致完成所有设备更新所需的时间过长。
过长的时间会导致客户体验不一致。一些客户可能会发现其他用户已经获得了更新,并在享受新内容的时候,他们的设备依然过时。对于迫不及待想要尽快享受新内容的客户来说,更新的漫长等待会带来显著的压力。
虽然可以调整每分钟最多可传递的作业执行数量的配额,但仍有一定限制。
克服大规模固件更新的挑战
为了减少等待时间,团队调整了固件更新流程,使其在客户同意后执行更新。由于更新过程需要人为干预,因此无法在所有设备上同时执行。考虑到服务器询问的时机可能根据客户的游戏环境和时区不同而有所变化,团队决定不需要同时向所有设备分发更新。新政策优先为发起更新查询的客户提供有序分发。
为实现新政策,团队将作业交付设计为连续作业,将作业目标设置为动态事物组。动态事物组是AWS IoT Device Management的功能,允许在创建组时为AWS IoT中注册的事物设置搜索条件。此时,当新事物在作业创建后添加到动态事物组中时,作业会立即交付给这些新添加的事物。这使得作业交付更加快速高效,专门向符合设置条件的设备交付。
车队索引功能会自动搜索符合条件的事物,并动态地将其添加到事物组中。在这个项目中,查询条件为动态事物组配置了以下四个条件:
shadowreported的固件版本高于初始版本shadowreported的固件版本不是最新分发版本shadowdesired的固件版本是最新待交付版本connectivitytimestamp大于指定的UNIX纪元毫秒这四个条件通过逻辑运算符“与”组合在一起。
搜索已连接设备
在查询条件中,值得注意的是将设备的连接时间戳(connectivitytimestamp)作为第四个搜索条件。这使得作业仅能够面向具有已证实连接记录的设备。连接状态(connectivityconnectedtrue)也可以包含在查询中。然而,若将连接状态作为条件,则在Tamagotchi Uni更新后重新启动时,设备将从动态组中移除,固件镜像和作业信息无法核实。因此,团队决定使用连接时间戳作为条件,而非连接状态。条件中的UNIX纪元毫秒设置为动态组创建时机的前一小时。这种做法让我们能够根据客户查询更新可用性的顺序高效分发更新。
通过设备影子管理固件版本
上述提到的前三个搜索条件利用了设备影子。Tamagotchi Uni使用设备影子管理所有资产的更新标志,包括更新和附加内容。通过使设备仅在影子中有更新时才检索数据,减少了通信频率。Tamagotchi Uni还利用设备影子来管理固件版本和动态组查询中的搜索条件,特别是查询3中的shadowdesired条件。不过,此做法面临一个挑战。通知如此多目标设备的更新,需要逐一更新每个设备的影子。因此,更新所有设备的影子耗费了大量时间,影响了分发速度。
为了解决这个问题,团队决定并行更新影子。以下步骤和配置显著减少了更新时间:
创建SQS队列以监控动态组创建后进度状态。轮询监控动态组重建的进度状态。当所有目标事物成为动态组成员,重建完成后,批量检索最多250台设备,并向SQS队列发出请求影子更新的消息。当消息顺利发至SQS队列后,并行调用Lambda进行影子更新。这种流程通过以客户查询的顺序高效快速地分发更新,提升了用户体验。
测试系统性能
最终,作为负载测试的一部分,BANDAI创建了大量模拟设备,模拟Tamagotchi Uni的访问行为,从而验证更新的顺利运行和性能。测试使团队确信,系统在大规模访问下仍能够保持稳定的表现。
结论
Tamagotchi Uni是Tamagotchi系列中首款具备WiFi连接的产品,创造了一个无论性别、年龄或国籍如何都能让Tamagotchi爱好者感到相连的世界。这篇文章详细展示了Tamagotchi Uni如何利用AWS实现安全可靠的连接,并迅速为用户提供新内容更新,确保客户无须久等。
这篇博文的日文版本可以在这里找到。
作者
Daisuke Sakamoto
BANDAI CO LTD技术设计团队/全球玩具产品开发部/玩具部门
Yoshiyuki Yotsuyanagi
Phoenisys Inc开发组
Shota Iizuka
亚马逊网络服务有限公司物联网专业解决方案架构师