【问题标题】:How to build large/busy RSS feed如何构建大型/繁忙的 RSS 提要
【发布时间】:2008-09-12 21:29:42
【问题描述】:

这周我一直在玩 RSS 提要,对于我的下一个技巧,我想为我们的内部应用程序日志构建一个。我们有一个集中的数据库表,我们的无数批处理和 Intranet 应用程序使用它来发布日志消息。我想从这个表中创建一个 RSS 提要,但我不确定如何处理这个量 - 即使在正常的一天,每天也可能有数百个条目。一个特殊的让你想戒烟的日子可能会看到几千人。有什么想法吗?

【问题讨论】:

  • 我知道有音量,但我不确定我是否从这个问题中理解为什么需要以特殊方式处理?您是希望减少该表的点击量、改善供稿消费者的用户体验,还是...?

标签: rss


【解决方案1】:

我会将提要设为静态文件(您可以轻松提供数千个),定期重新生成。然后你有一个更广泛的选择,因为它不必运行在秒以下,它甚至可以运行几分钟。并且用户仍然可以获得完美的下载速度和合理的更新速度。

【讨论】:

    【解决方案2】:

    如果您正在构建一个带有不容错过的通知的系统,那么发布-订阅机制(使用 XMPP、ApacheMQ 支持的其他协议之一或类似的东西)将比联合机制更合适。您需要在生成通知的系统和使用通知的系统之间进行某种程度的耦合,以确保消费者不会错过通知。

    (您可以使用 RSS 或 Atom 作为传输格式来执行此操作,但这可能不是一个常见的用例;您需要根据消费者及其之前看到的通知来改变显示的通知。)

    【讨论】:

      【解决方案3】:

      我会尽可能地拆分提要,让用户根据需要重新组合它们。如果我这样做,我可能会考虑使用 Django 和联合框架。

      Django 的模型可能可以处理表示您关心的表的数据结构。

      您可以有一个可以捕获所有内容的 URL,例如:r'/rss/(?(\w*?)/)+'(我认为这可能有效,但我现在无法对其进行测试,因此它可能并不完美)。

      这样您就可以使用类似的 URL(已编辑以取消示例 URL 的自动链接):

      • http://feedserver/rss/batch-file-output/
      • http://feedserver/rss/support-tickets/
      • http://feedserver/rss/batch-file-output/support-tickets/(前两者合二为一)

      然后在视图中:

      def get_batch_file_messages():
          # Grab all the recent batch files messages here.
          # Maybe cache the result and only regenerate every so often.
      
      # Other feed functions here.
      
      feed_mapping = { 'batch-file-output': get_batch_file_messages, }
      
      def rss(request, *args):
          items_to_display = []
          for feed in args:
              items_to_display += feed_mapping[feed]()
          # Processing/returning the feed.
      

      拥有单独的、可链接的提要意味着用户可以一次订阅一个提要,或者将他们关心的提要合并到一个更大的提要中。无论他们更容易阅读,他们都能做到。

      【讨论】:

        【解决方案4】:

        在不了解您的申请的情况下,我无法提供具体建议。

        也就是说,在这类系统中,具有一定程度的严重性是很常见的。您可以将查询字符串参数附加到指定严重性的 URL 的末尾。如果设置为“DEBUG”,无论多么微不足道,您都会看到每个事件。如果您将其设置为“致命”,您只会看到“系统故障”的事件。

        如果事件仍然太多,您可能希望将事件细分到某种类别系统中。同样,我会将其作为查询字符串参数。

        然后,您可以为各种类别和严重性提供多个 RSS 提要。这应该允许您调整获得可接受级别的警报级别。

        【讨论】:

          【解决方案5】:

          在这种情况下,它更像是经理的仪表盘:今天投入了多少工作来支持,现在日志中有什么紧迫的事情,以及我们早上第一次到达的时间,以衡量出现了什么问题批处理作业一夜之间。

          【讨论】:

            【解决方案6】:

            好的,我决定了我将如何处理这件事。我对每列使用时间戳字段并按天分组。它需要一点 SQL-fu 才能实现,因为当然那里有一个完整的时间戳,我需要半智能地了解如何从组内选择要显示的日志消息,但这还不错。此外,我正在构建它以让您选择要监控的应用程序,然后显示特定日期的每条消息(最多 50 条)。

            这让我想到了一些合理的事情。

            我仍然希望对更通用的问题有一个好的答案:“您如何联合许多重要消息,其中缺少消息可能是一个问题?”

            【讨论】:

              猜你喜欢
              • 2017-11-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-06-01
              • 2020-02-05
              • 1970-01-01
              • 1970-01-01
              • 2015-04-05
              相关资源
              最近更新 更多