Performance 消费社交网络的架构问题&x27;休息服务?

Performance 消费社交网络的架构问题&x27;休息服务?,performance,rest,architecture,social-networking,Performance,Rest,Architecture,Social Networking,我必须整合Facebook等社交网络,以显示用户朋友阅读、点击或评论的项目。出现了一些架构问题: 问题: a) 我应该在我的应用数据库中缓存用户的好友列表吗?缺点是用户朋友列表可能会改变。还是应该在每次登录后获取此列表 b) 当用户登录到我的应用程序(使用oauth)时,获取他/她的好友列表的最佳方式是什么?我应该在web请求线程中这样做,这是我向本地数据库创建LOC的地方,还是应该生成一个不同的任务/线程/批处理作业来获取此列表 c) 用户缩略图:如果用户登录,我应该缓存用户配置文件缩略图并从

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

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

b) 当用户登录到我的应用程序(使用oauth)时,获取他/她的好友列表的最佳方式是什么?我应该在web请求线程中这样做,这是我向本地数据库创建LOC的地方,还是应该生成一个不同的任务/线程/批处理作业来获取此列表


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

我以前从未与社交网络(SN)整合过,所以我的建议将是笼统的(对不起)

A)缓存

  • 您希望您的系统有什么用途?如果目标序列号对应用程序在给定时间段内可以发出的请求数量有限制,则这一点很重要。假设的例子:如果你每小时要得到100次登录,但是SN限制你每小时有50次请求,那么你就必须缓存。很糟糕的例子,但我相信你明白了
  • 数据多久变化一次,人们有多在乎数据是否错误?如果你能得到一组新的数据,大致与人们的朋友的变化频率一致,那么你将在保持准确性的同时尽可能地提高效率
  • 在获得新的设置之前,您能否查询序列号以查看数据是否已更改
  • 如果您遇到与获取数据相关的性能问题,那么您将需要考虑缓存。
B)OAuth

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

C)缩略图

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