gpt4 book ai didi

ruby-on-rails - 在 Rails 中实现通知

转载 作者:行者123 更新时间:2023-11-30 05:15:15 25 4
gpt4 key购买 nike

在我的应用程序中,我想在评论或帖子中提到用户时通知他/她。
用户句柄是@user_name,类似于Facebook
提及的数据库表如下所示:

Mention
mentioned_by: user_id (foreign key)
user_mentioned: user_id (foreign key)
comment_id: (foreign key)
post_id: (foreign key)

虽然我想不出实现它的方法。 Facebook /推特是怎么做到的?

我决定采用的是使用 ActiveRecord 回调/Observer 设计模式,每当将新评论/帖子保存到数据库时,我就可以浏览帖子/评论的内容,并且留意任何提及,然后根据需要执行通知。

我觉得有一些遗漏的部分,我没有做对。
这是最好的方法吗?

最佳答案

Facebook 和 Twitter 不是中型 Rails 应用程序。他们是公司。运行它们的技术是分布式的,而且大多是定制的,尤其是在 Facebook 的情况下。

您似乎要掌握的部分是他们如何以高性能和可扩展的方式确定通知谁。这就是狗屎变得真实的地方。你可以找到很多关于它们背后的架构的信息,当然有很多很棒的东西可以帮助你思考这些事情,但最终它们都不会成为你在任何应用程序中实现的东西。重新 build 。

http://www.quora.com/What-is-Facebooks-architecture

Facebook Architecture

http://www.infoq.com/news/2009/06/Twitter-Architecture

http://engineering.twitter.com/2010/10/twitters-new-search-architecture.html

Quora 上有更多有趣的细节。


不幸的是,这些都无法让您更接近目标。我认为对你来说最现实的事情就是开始使用 woud 简单地绑定(bind)像 Pusher 这样的服务。要向客户端发送消息而不用担心,请使用 ActiveRecord Observer将通知添加到 background queue工作人员实际将这些通知发送给 Pusher 的地方。这是一天或更少的工作,它应该可以很好地扩展到每天至少 10k 条通知。一旦开始遇到性能问题,就放弃 Observer 和 Pusher,转而使用像 Goliath 这样可以在本地处理这两项工作的东西。

最重要的是,了解你能了解的大型和经验丰富的系统,这些系统已经通过了测试,但主要只是为了看看他们遇到了什么问题以及他们是如何解决这些问题的 em>。这些方法甚至在大公司中也不尽相同,并且它们会因实现而异。

希望这能帮助您指明正确的方向。 :)

关于ruby-on-rails - 在 Rails 中实现通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6772203/

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