消费社交网络REST服务的架构问题?

时间:2010-12-08 18:29:34

标签: performance rest architecture social-networking

我必须整合诸如Facebook等社交网络,以显示已被用户的朋友阅读或点击或评论的项目。出现了一些架构问题:

问题: a)我应该在我的app db中缓存用户的好友列表吗?缺点是用户朋友列表可能会发生变化。或者我应该在每次登录后获取此列表吗?

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

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

1 个答案:

答案 0 :(得分:1)

我之前从未与社交网络(SN)整合,所以我的建议是一般的(对不起)。

A)缓存

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

B)OAuth

如果你能以异步方式进行,那么这可能不是一个坏主意。你无法控制目标系统,那么当事情进展不顺利时你会怎么做?您可能希望尽可能简化这一点;我不太了解异步工作,除了使用AJAX(但这听起来像你在后端?),所以我不确定具体细节。

C)缩略图

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