做云市场行业的领导者
欢迎光临本网站
主页 > 阿里云 >

把阿帕奇卡夫卡的有哪些云服务器-力量交给数据科学家

发布时间:2020-09-22 15:44   来源:维塔尔云    作者:维塔尔云

把阿帕奇·卡夫卡的力量交给数据科学家

在Stitch Fix,我们将专业的个人造型艺术与算法科学相结合,提供高度个性化的服务,满足270万活跃客户的品味、生活方式和预算。作为全球领先的在线个人造型服务,Stitch Fix依靠最先进的机器学习和人工智能(AI)算法来维持和发展业务。这些算法,根据AI的需求层次,将不可能没有数据收集和集成系统的坚实基础。这就是为什么在一年多以前,我和我的数据基础设施工程师同事们破天荒地重写了我们的事件交付基础设施。我们的任务是建立一个强大的、集中的数据集成平台,以满足我们数据科学家的需求。该平台将是完全自助式的,以便最大限度地提高数据科学家的自主权,并让他们完全控制他们的事件数据。最终,我们提供了一个平台,我的云,它彻底改变了数据科学家与Stitch Fix数据交互的方式。这篇文章分两部分深入探讨Stitch Fix的数据科学文化,并深入探讨它如何推动我们在最底层的数据基础设施中做出的基本决策。第1部分讨论了我们的设计过程,解释了我们关于自助工具的指导思想,并探讨了我们的数据集成平台概念。第2部分是对我们所做决策的技术性深入研究,并对整个体系结构进行演练。第一部分:设计为什么要构建事件交付基础设施在我们开始重写事件交付时,数据仓库中的大部分数据都是从数据库快照中收集的。几十年来,这种类型的数据管道在整个行业中已经普遍存在,因为数据库快照在很多方面都很有用,通常很容易设置,并且需要很少的维护。但是,它们有一些缺点:您不知道数据库的状态在快照之间是如何变化的。数据只能在拍摄快照后进行分析,分析无法实时进行。关于状态的上下文和元数据经常丢失。只能分析在线事务处理(OLTP)数据库中存在的数据(即,操作应用程序所需的状态)。但事件可以解决这些问题。建立一个健壮、集中和可扩展的系统来收集事件数据,将极大地增加数据库快照数据,在线建站平台,并为数据科学家释放大量潜力。自助式事件传递我们对这个新项目的主要要求是为我们的数据科学家建立100%自助服务的基础设施。换句话说,我和我的队友永远不会直接参与事件数据的发现、创建、配置和管理。自助服务将修复遗留事件交付系统的主要缺点:每当新数据集诞生时,我的团队都会执行手动管理。这种手动过程阻碍了我们的数据科学家的生产力和事件数据的访问。同时,满足数据科学家的要求阻碍了我们改善基础设施的能力。这种情况正是数据平台团队努力避免的。构建自助工具是Stitch Fix数据平台团队的首要宗旨,因此,无论我们构建什么来替换旧的事件基础设施,都需要为我们的数据科学家提供自助服务。你可以在jeffmagnusson的post Engineers should not Write ETL一书中了解我们的理念。使事件交付基础设施完全为数据科学家提供自助服务是一个独特而有趣的挑战。在Stitch Fix之前,我花了数年时间研究实时流基础设施,我知道如何构建高效的Kafka应用程序,监控它们,扩展它们,并在生产中维护Kafka集群。但是,作为一个由三人组成的精干团队,我们如何不仅部署自己全新的卡夫卡集群,而且在其之上设计和构建一个自助式事件交付平台?我们怎样才能让数据科学家完全控制和自由地处理Stitch Fix的事件数据,而不要求他们理解流数据管道的复杂性?数据集成平台的设计在卡夫卡的基础上设计我们的自助服务层是从一段时间的研究开始的。Martin Kleppmann的《设计数据密集型应用程序:可靠、可扩展和可维护系统背后的大思想》以及Apache Kafka®联合创始人Jay Kreps的文章The Log:每个软件工程师都应该知道的关于实时数据统一抽象的内容,这对我们的数据集成平台概念有着重要的启示。在本文中,Kreps讨论了集中日志管道的功能,并一度特别关注数据集成的简化,其中他给出了以下定义:"数据集成使一个组织的所有服务和系统中的所有数据都可用。"他接着说了以下几点,我觉得非常有说服力:"您不会听到太多关于数据集成的消息,他们对大数据的想法有着令人窒息的兴趣和炒作,但尽管如此,我相信‘使数据可用’这个平凡的问题是一个组织可以关注的更有价值的事情之一。""让一个组织的所有服务和系统中的所有数据都可用"这个想法让我着迷。还有什么比让数据科学家轻松、自助地访问整个公司的所有数据更强大呢?为了解释这一切是如何工作的,我将解释Kreps的数据集成思想,以及它如何解决使数据无处不在的问题。首先,大数据 学习,想象一下公司内的所有服务、应用程序、专用数据系统和数据库。随着公司的发展,用例会弹出,涉及到将一个事物连接到另一个事物,个人免费云服务器,以便来回传递数据。建立这些联系的团队可能会构建一个一次性的专用解决方案,因为在短期内比构建通用解决方案更快、更容易。当足够多的团队执行此操作时,就会出现如图1所示的架构。图1。没有集中日志管道的数据集成每个箭头都是一个自定义连接,必须单独开发和维护。为了实现总体连接,其中每个进程都可以在公司内的每个其他进程之间来回传输数据,您必须构建n2连接器,大数据技术及数据分析培训,其中n是公司内进程的总数。任何工程师都会告诉你这是不可扩展的。现在想象一下,添加了一个集中的日志管道,相同的服务、应用程序、专用数据系统和数据库。数据不是在进程之间直接传递数据,而是通过集中式管道流动,从而产生如图2所示的体系结构。图2。与集中日志管道的数据集成这种方法将连接减少一个数量级,并实现相同的目标数据可以从公司内的任何流程流向任何其他流程。这种架构的优点在于,每个连接器在功能上都是相当统一的,这就允许使用一个通用平台来处理从中心管道进出的数据。这个平台集中化并简化了数据从A传输到B的机制,使每个人的工作都更加轻松。有鉴于此,我们计划将这个通用平台变成我们的数据集成平台。每个连接器都由我的队友编写、部署和维护。我们将构建一个简单的基于web的用户界面(UI),供数据科学家配置连接器,并轻松地从中心日志管道中获取数据。受连接世界上所有事物的公路网和高速公路的启发,我们决定称之为数据高速公路。第2部分:建筑有了一个清晰的构想,我们进入了另一个研究阶段,这次的重点是比较具体的技术。由于数据基础设施领域仍在成长为一个成熟的生态系统,因此有许多年轻的技术可供选择。在本节中,我将概述我们选择解决方案的原因。选择消息代理目前,高容量、分布式消息代理最常采用的解决方案是Apache Kafka、Amazon Kinesis和Cloud Pub/Sub。我们很早就排除了云发布/订阅的可能性,因为将我们的Amazon Web Services(AWS)堆栈与Google云平台(GCP)产品集成的成本太高。左室运动对抗卡夫卡。我可以把一整篇文章都用在这个决定上,因为我们考虑了很多因素,其中许多是细微差别的,难以客观衡量。我们的数据量足够小,无论是卡夫卡还是Kinesis都可以纯粹从性能角度来工作。因此,我们的决策集中在诸如"哪种技术更容易编写工具?"?哪些技术将为我们搭建平台提供更好的基础?哪种技术最容易维护和发展?"如果没有团队使用这两种技术的集体经验,回答这些问题将非常困难。在开始这个项目的前一年,我们已经使用Kinesis和AWS Lambda建立了一个基本的事件交付系统。该系统运行良好,特别是考虑到它是多么容易启动,但我们很快就超过了它,原因有很多:新的数据集需要大量的手动设置。由于Lambda函数的设置方式,维护独立的登台和生产环境非常困难。我们不得不在架构上做出一些权衡,以绕过Kinesis的节流策略。最糟糕的是,该系统已经变得过于复杂,无法为数据科学家提供自助服务。最终,我们不得不决定是重新设计我们现有的Kinesis系统,还是从头开始使用基于Kafka的系统。经过一番辩论,我们选择了卡夫卡。尽管有一个托管的sol

上一篇:如何在ksqldb5.返利平台有哪些-0中构建UDF和/或UDAF
下一篇:与Apache Kafka和大数据提供-KSQL的数据争论

分享到:
0
最新资讯
阅读排行