【问题标题】:Transform data to pubsub events将数据转换为发布订阅事件
【发布时间】:2016-08-25 08:47:04
【问题描述】:

我有一个数据流管道,用于收集用户数据,如导航、购买、crud 操作等。我有这个要求是能够实时识别模式,然后调度其他服务可以监听的 pubsub 事件,以便为用户提供实时提示、优惠或促销活动。

我正在考虑开始按用户 ID 对事件进行分组,然后如果匹配一个模式来创建包含需要通过 pubsub 触发的事件名称的 PCollection。

这是正确的方法吗?有没有更好的办法?

【问题讨论】:

    标签: google-cloud-dataflow google-cloud-pubsub


    【解决方案1】:

    对于某些用例,这肯定可以工作

    如果您将session based windowingearly firings 结合使用(在每个元素到达时触发)。每次新元素到达时,您都可以获得识别模式所需的所有数据。

    但是,根据推送用户数据的速率和会话的大小,这可能会导致在 PCollection 中保存 大量数据 并重复此模式匹配很多(在相同的数据),因为您必须重用会话中的所有数据。此外,您不能使用在此会话之前到达的元素

    有时,为每个用户保留一个状态可能会更好(无需为该会话重新对用户的所有数据进行模式匹配)。使用状态实际上会消除使用窗口的需要。 新流程现在看起来像这样:

    对于每个到达的元素:

    1. 获取当前状态

    2. 计算新状态(基于旧状态和新元素)

    3. 如果需要,向 PubSub 发送消息。

    要保存您的状态,您可以使用 BigTableDatastore

    【讨论】:

    • 是的,会话窗口将保存大量数据,并且一遍又一遍地运行相同的模式可能会非常昂贵......为了从 BigTable 或 Datastore 获取状态,我担心速度,但我认为值得检查。
    • Bigtable 可以扩展。当操作都在同一个云区域内完成时,单位数毫秒的响应时间是常态。还有批量操作来提高吞吐量。我们可以在您闲暇时讨论所有这些。
    • 还没玩过 Bigtable。我会试一试。我想和你讨论一下。
    • 随时联系 google-cloud-bigtable-discuss google 组,如:cloud.google.com/bigtable/docs/support 中所述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多