Kinesis是由AWS提供的一项流数据管理服务,可轻松收集、处理和分析实时流数据。本文详细介绍了迪士尼API服务团队如何实现Kinesis数据流的自动缩放功能,保证流量高峰时的数据传输效率,并有效降低成本。本文来自迪士尼技术博客。
文 / Nick Burkard
译 / 咪宝
原文
https://medium.com/disney-streaming/delivering-data-in-real-time-via-auto-scaling-kinesis-streams-72a0236b2cd9
摘要
Kinesis是Amazon Web Services(AWS)提供的一项托管式流数据服务,在迪士尼流媒体服务中被广泛应用于实时和批量分析,并支持个性化视图、流并发和应用程序域事件分析等功能。在本篇文章中,将详细介绍迪士尼流媒体服务的API服务团队是如何实现Kinesis数据流的自动缩放功能的,这项功能使我们能够在流量高峰时段稳定地传输数据,同时保持成本效益。
问题
团队的工作
在迪士尼流媒体服务中,我们的API服务团队(包括我自己)负责那些向客户端公开公共API的应用程序,这意味着我们将大量参与客户端通信协议、支持流量需求的扩展、通过回退和降级提供可靠性以及安全性。
与大多数使用AWS部署的应用程序一样,我们的应用程序将事件记录到CloudWatch日志中。由于CloudWatch也是AWS提供的一项管理服务,因此我们可以很容易地集成它来存储和查询应用程序事件。我们还将应用程序事件发布到一个更大的数据湖平台中,这个平台支持对应用程序事件进行更丰富的分析和可视化,这也就是Kinesis 数据流的来源。
动机
选择Kinesis流作为我们的数据湖平台的入口点,需要确保数据不会丢失或长时间落后于实时交付。
一个简单的解决方案是过度供应流。然而,这并不划算,因为它相当于一天的大部分时间里都在浪费钱。
我们还研究了AWS Labs提供的一个应用程序Kinesis Scaling Utility,它可以通过CloudWatch来监控指标,并根据配置扩展Kinesis流。但是,它不是满足我们需求的最佳解决方案:
原因如下:
扩大规模的速度不够快。
应用程序需要不断运行,这会产生额外的成本。
上述两点是应用程序监控指标方法的结果,每隔设定的时间间隔来查询CloudWatch。我的团队需要尽快进行扩展并且节约成本,因此我们开始创建自己的