您当前位于: 首页 » 系统架构设计 » 通过异步队列获取facebook用户资料

通过异步队列获取facebook用户资料12/14/2010

做不同地区的市场可能结构上会很大的不同,比如DNS轮询方式的负载均衡解决方案,在国外境外复杂的网络环境下显得不怎么奏效。今天我想说一个通过异步队列的方式来获取facebook用户资料的方案,一样是针对国外境外复杂的网络环境造成了一个难以解决的问题,而采取的应对措施。问题是这样子的:我们位于香港机房的服务器,会时常由于网络原因无法访问位于美国的facebook服务器,无法获取到用户在facebook上的资料,这造成的致命问题就是,用户根本进入不了我们的应用!因为第一步的会话验证无法通过。那么如何有效的解决这种郁闷的问题呢?

我们发现位于台湾机房的服务器的状况要好的多,和facebook服务器之间的通信一直都很正常,而香港服务器和台湾服务器之间也能很顺畅的互联,通过研究facebook我们知道,在用户进入应用时的sessionKey是验证首先要做的事情,本来是直接连接facebook服务器取用户数据的,而此时如果网络故障(指香港机房无法连接到美国facebook服务器),用户就会卡在这里。

还是整个图出来说比较容易说明问题,位于台湾机房的一台服务器会接收香港方面传过来的sessionKey,去获取该用户的更为详细的资料,昵称、所在地等等,这里再说一点,sessionKey中是包含有facebook用户ID的,因此,当用户从facebook进入我们的应用的时候,可以根据这个sessionKey中的ID来查询其是否新用户,如果是新用户,先执行注册动作,进入应用,这时候你会发现,刚进入时没有显示姓名和头像,那是因为还没有去获取哈,等到台湾服务器成功获取资料以后就会回写到我们的正式用户数据库,就可以正常显示了,所以还是有一些不足。如果是已注册用户,直接进入,如果他同时又更新了资料,同样是通过台湾服务器异步来更新的。实际上对于香港服务器来说,其获取用户资料是从台湾那台服务器上获取的,这就完全解决了之前一直困扰着我们的断线问题,用户在任何情况下都是可以正常进入我们的应用的,前提是用户要先能打开facebook。

| 4条评论 标签:  

4条评论
  1. 布谷说道:

    沙发!~~

  2. 666说道:

    直接

  3. Daveigh说道:

    Alhrigt alright alright that’s exactly what I needed!

发表评论