gpt4 book ai didi

apache-spark - 最佳的架构来过滤来自9000万用户的数据?

转载 作者:行者123 更新时间:2023-12-02 19:53:21 26 4
gpt4 key购买 nike

我最近开始研究分布式系统时,这纯粹是假设问题。
概述:

  • 用户有一个购物应用程序。
  • 用户执行操作(注册,查看,购买,多次查看等)。
  • 用户根据他当前正在做的事情接收实时的 Activity 和推荐。

  • 问题:
  • 每秒可能有超过3000万个传入事件的实时建议。

  • 挑战:
  • 过滤数据,应用建议,然后将其发送回。

  • 到目前为止,我想到的是什么。
  • 使用Cassandra存储 Action 数据。 (因为Cassandra具有高度的可扩展性,并且我们不关心ACID保证,所以我们关心高可用性)
  • 将HDFS与Spark和Kafka一起使用。 (要处理数据,但我不确定此处)

  • 这是我想的流程:
  • 用户执行一个操作
  • 操作转到API(通过LB)
  • 操作已在Cassandra中注册
  • API将刚刚发生的操作通知 worker (可能是 celery ?)
  • worker 查询Cassandra上的数据
  • 工作将数据发送到Kafka
  • Kafka将数据发送到Spark
  • Spark使用机器学习处理数据
  • 将根据用户的操作
  • 专门定制新的自定义操作(即折扣,推荐等)
  • Spark将数据发送回Kafka
  • Kafka将数据发送给用户
  • 用户将显示从服务器
  • 收到的自定义操作

    如果有任何问题或有更好,可扩展的方法来解决,请纠正我。我仍在学习所有这些不同的组件以及它们如何组合在一起。

    最佳答案

    我将以不同的方式开始看待它:您希望能够以响应方式向用户提供建议。

  • 将结果数据发送给每个用户有多大?假设10KB。
  • 必须搜索多少数据库才能生成该结果?假设1GB。
  • 您从所选大小的云服务器中获得了多少I / O吞吐量?假设一台服务器每秒可以为10000个用户提供服务。
  • 3000万个请求除以1万个用户等于3000个服务器。

  • 因此,您的第一个问题是如何将1GB的数据复制到3000台服务器。而且,如果您希望返回响应,则第二个问题是如何同步3000份副本。
    第一个并不难:将数据从中央副本复制到3000台服务器相当容易-这就是内容交付网络所要做的。而且,如果在任何一次数据中只有一小部分发生变化,那么它可能会非常快速且高效。
    对于响应,解决方案将取决于数据。假设的最坏情况是所有服务器立即需要任何一个答案,即3000台服务器广播到另一台2999。这不太可能!
    如果不需要同时在所有服务器上获取数据,则可以实现“电话树”方法,其中每台服务器通知10个其他服务器,然后通知10个其他服务器,依此类推。但这限制了您部署服务器的灵活性。
    无论如何,我希望这能给您一些思考和确定您正在考虑的软件是否满足问题需求的方法。

    关于apache-spark - 最佳的架构来过滤来自9000万用户的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62904500/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com