超越实时数据应用–白板演练

在本周的白板演练中,MapR的顾问Ellen Friedman讨论了如何设计一种系统来处理实时应用程序,以及如何利用流数据带来的更多优势。

这是未经编辑的抄录:

嗨,我是艾伦·弗里德曼。 我是MapR的顾问,也是O'Reilly的作者。 我今天在这里与您谈谈如何设计一个系统来处理实时应用程序,以及如何利用流数据带来的更多优势。

让我们从简单的事情开始。 确实,目标就是驱使您从事此类工作的目标。 例如,由于仪表板(实时仪表板)的更新,人们可能正在设计某种实时应用程序。 他们可能首先考虑该系统的地方是他们想要使用哪种技术或工具来设计此实时应用程序或接近实时的应用程序? 确实有很多不错的选择。 您可能会使用Apache Spark流 , Apache Flink ,旧工具Apache Storm,Apache Apex之类的东西。 有许多种不错的选择,可以让您在适合您最终业务目标的任何延迟时间范围内设计应用程序。

问题来了,您如何将数据传递到该系统,以及如何有效,安全地进行数据处理? 嗯,曾经使用过此类系统的人们可能会意识到他们的数据源,我将其标记为P表示数据的生产者(在这种情况下为某种事件数据)可能是点击流数据,日志数据,也许是传感器数据。 您可以使用许多不同的源,但是它们是数据的生产者,如果它们的数据源不直接进入其应用程序,则它们可能是最好的,但是如果相反,它们使用某种上游消息传递系统。 一种提示,本质上是一种安全提示,以便他们将数据流式传输到该消息传递系统中,然后将其传递到其实时应用程序中,成为该系统的使用者。

这样做的一个原因是,如果系统中发生任何形式的中断,则您正在捕获该数据并将其提供给应用程序。 为了做到这一点并非常有效地做到这一点,实际上关系到此消息传递系统的功能。 例如,为了获得最佳结果,最好使用一个系统,该系统可以让您接收来自各种不同生产者的数据,而且还可以使生产者与消费者分离。 可以立即使用这些数据,但不必立即使用。 换句话说,您可以使数据流在不同的时间段内持久。 这样,它可以立即使用,如果以后再使用,它​​也可以使用。

这具有许多优点。 一方面,您可能会添加其他类型的应用程序,或者出于不同目的添加其他低延迟应用程序。 您可以在不同的时间添加不同的使用者。 您可以具有该数据的多个生产者和多个使用者。 那么,我们说什么样的技术真正支持这些功能? 我们特别喜欢Apache Kafka 。 还有MapR Streams ,它是集成到MapR Data Platform中的消息传递系统。 它实际上使用的是Apache 0.9 kpi,因此这两种消息传递技术之间存在许多相似之处。 它们对于这种具有持久的可重播流的方法确实非常有用。 您可以有多个数据的生产者和使用者。 您可以稍后添加使用者。

现在,让我们思考一下超越这种最初的查看方式,您正在尝试获取某种实时或接近实时的见解,从而能够以更广泛的方式使用此流数据。 例如,您可能想在这里拥有另一类使用者,例如数据库。 它可能是搜索文档。 您基本上是使用它来进行更新,以捕获这些数据的当前状态(事务的当前状态)的图片。 例如,关于您的银行,也许是您自己的银行帐户。 说“您的银行帐户的当前状态是什么?”完全不同。 也许是您的支票余额或储蓄? 支付了什么利息? 现在来看事件的顺序,导致当前事务状态的一系列存取款是另一回事。

这是使用相同流数据的另一种方式。 同样,在某些情况下,也许需要从银行的角度考虑,您需要可重播的可审核历史记录。 也许您正在尝试进行某种审核。 在那种情况下,您实际上确实希望能够说出每个事件的含义,发生的时间,事件的顺序是什么。 同样,使用诸如Apache Kafka或MapR Streams之类的消息传递系统 ,您可以使用相同的流媒体线索,相同的事件数据流来做到这一点。 您可以拥有一类正在将数据用于实时应用洞察的使用者。 其他人正在使用它进行数据库或搜索文档的更新,或者想要回去进行某种取证分析和可审核的日志,这基本上是一个长期历史。 实际上,在相同数据流之外的所有此类情况下为消费者提供支持非常好。

考虑一下我们已经讨论过的支持那种设计的功能,您希望消息传递系统支持多个生产者和消费者,但是要实现它们分离的方式,从而为您提供极大的灵活性和敏捷性。 您可以稍后添加新的使用者,而不依赖于其他使用者。 如前所述,为了做到这一点,持久化消息流至关重要。 它必须是可以持久的东西。 您希望它是可配置的。 您可以将其保留很短的时间,如果您想使其长期保存,则可以将该时间设置为基本上无限期,您可以拥有长期的可编辑历史记录。

在当今世界,它显然需要大规模扩展。 对于像Apache Kalka和MapR Streams这样的系统,好消息是,即使延迟很低,您实际上也可以同时具有高性能,很高的吞吐量,这与需要折衷的旧系统不同,您可以同时做到。 这些都是支持此类系统的出色技术。 通过这种方式,您可以构建实时应用程序,但要超越此范围,可以更广泛地了解如何使用流数据。 这种情况导致人们开始思考流优先架构。

非常感谢您的收看。 如果您想了解更多有关这些主题的信息,可以找到我与Ted Dunning合着的《 流架构》这本书的链接,该书可以免费下载。 您还可以在这里提问,为其他白板演练提出主题。 让我们在评论部分收到您的来信。 非常感谢你!

翻译自: https://www.javacodegeeks.com/2016/06/beyond-real-time-data-applications-whiteboard-walkthrough.html

你可能感兴趣的:(python,人工智能,java,数据库,大数据)