【问题标题】:Architechture questions for Consuming Social Networks' REST services?消费社交网络的 REST 服务的架构问题?
【发布时间】:2011-05-22 09:54:55
【问题描述】:

我必须集成 Facebook 等社交网络来显示用户朋友已阅读或点击或评论的项目。出现了一些架构问题:

问题: a) 我应该在我的应用程序数据库中缓存用户的好友列表吗?缺点是用户朋友列表可能会改变。还是应该在每次登录后获取此列表?

b) 当用户登录到我的应用程序(使用 oauth)时,获取他/她的朋友列表的最佳方式是什么——我应该在网络请求线程中执行此操作,这就是我要定位到的地方我们的本地数据库,还是我应该生成一个不同的任务/线程/批处理作业来获取这个列表?

c) 用户缩略图:如果用户登录,我应该缓存用户个人资料缩略图并从我的应用程序中提供它,还是应该在页面上嵌入个人资料图片 url(指向社交网站)?

【问题讨论】:

    标签: performance rest architecture social-networking


    【解决方案1】:

    我以前从未集成过社交网络 (SN),所以我的建议是笼统的(抱歉)。

    A) 缓存

    • 您希望您的系统有什么样的用途?如果目标 SN 对您的应用在给定时间段内可以发出的请求数有限制,这一点很重要。假设性示例:如果您要每小时获得 100 次登录,但 SN 将您限制为每小时 50 次请求,那么您将不得不缓存。可能是不好的例子,但我相信你明白了。
    • 数据多久更改一次?人们有多在意数据是否有误?如果您能够获得一组与人们的朋友更换频率大致一致的新数据,那么您将在保持准确性的同时尽可能高效。
    • 能否在获取新集合之前查询 SN 以查看数据是否已更改?
    • 如果您遇到与获取数据相关的性能问题,那么您需要考虑缓存。

    B) OAuth

    如果您可以异步执行此操作,那么这可能不是一个坏主意。你无法控制目标系统,那么当事情不顺利时你会怎么做?您可能想让它尽可能简单;除了使用 AJAX 之外,我对异步工作了解不多(但这听起来像是您在后端?),所以我不确定具体情况。

    C) 缩略图

    • 检查目标SN的回链策略;如果他们允许,那么这是一个选择,否则......
    • 如果您从中提取映像的 SN 是主要的,那么他们的系统可能会比您的系统具有更高的可用性。这表明链接到它们不会是一个可能会下降并使您的应用看起来很糟糕的依赖项。或者,如果怀疑它们的可用性,您可以通过将所有内容放在一起来提供一致的应用程序。
    • 如果您的托管计划有带宽限制或与带宽相关的费用,您将通过链接节省 $$;但这正是您的目标 SN 可能不允许这样做的原因。
    • 如果目标 SN 决定更改策略(并切断您的链接) - 您怎么知道?
    • 顺便说一下,StackOverflow 采用了一种链接方法,但它的目标是基于云的服务,该服务是专门为此而构建的(据我所知)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多