gpt4 book ai didi

java - 整理/管理数据以在 Web 应用程序中填充 "live activity feeds"

转载 作者:行者123 更新时间:2023-12-01 05:45:42 25 4
gpt4 key购买 nike

我有一个关于管理网站上的实时反馈/投票的抽象问题。

我正在创建一个 Web 应用程序(基于 Java/Spring/Hibernate 构建),并且在用户的主页上我希望实时了解该团队所有成员的最新 Activity ,并且我正在努力找出最佳方案在服务器端处理此查询的方法。

最有效的方法是加载当前用户的队友列表,然后迭代每个队友,加载他们最新的对话/文件上传/等,然后将所有这些 Activity 合并到一个列表中按时间戳排序并返回(举例来说,我们只返回 feed 的前 10 个最新 Activity )。

但是,这似乎性能非常差,特别是因为此操作需要定期执行(取决于轮询间隔)。

我还考虑过将所有潜在 Activity (对话/状态更新/上传)作为扩展 Activity 类,然后在 DAO 中进行直接 SQL/JPQL 查询,从一组用户中选择所有最新 Activity 被返回,但担心可能绕过缓存并继续访问数据库也会降低性能。

以前有人处理过此类问题吗?有人知道什么是好的方法吗?

谢谢!

最佳答案

现在这是一个旧的,但这是我为此所做的:

  1. 所有应出现在 Activity 墙上的任务都会扩展Activity(情况已经如此)
  2. 创建了一个新的 Notification 对象,Notification 有一个指向底层 Activity 的链接和一个指向用户(正在通知的用户)的链接)。
  3. Activity 创建了一个预持久 Hook ,该 Hook 为正在持久化的 Activity 创建了一个 Notification 对象 - 它为每个用户执行此操作感兴趣(关注持续 Activity 的用户的所有用户)

目前,通知被持久化/检索到数据库 - 可能无法扩展到非常高的容量,但我认为该方法支持迁移到基于队列的系统(例如 LinkedIn's Kafka queue library 其中正是为此目的而设计的)。由于它是针对每个用户的,因此它还提供了针对重要通知设置已读/未读通知标志的选项。

关于java - 整理/管理数据以在 Web 应用程序中填充 "live activity feeds",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962861/

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