一般在IM等实时聊天系统中,IM系统和用户系统不是在同一个系统中,在IM系统中如何实时获取双方好友的头像和昵称成为了一个棘手的问题。以下有几个方式来实现好友头像和昵称的实时获取。
头像方案一
首次创建会话时,以后每次点开会话实时获取
每次点开聊天会话后都需要请求获取头像和昵称,此种方案在点击会话量大的情况下会对后端系统有压力。
方案二
IM系统自己维护一个用户信息表,定期从用户中心数据库同步
定期同步,需要维护和用户系统中同一个用户表,只要能够保证数据同步的一致性,这种方案也是可行的,但在一般大系统中,涉及到多个系统中数据库的同步,同步的复杂性以及一致性将是一个挑战。
方案三
IM系统自己维护一个用户信息表,用户中心更新用户昵称和头像时,通过消息队列通知附属系统
这个方案和方案二有相同的方式,都是用户系统修改了昵称和头像后同步到其他附属系统,这个和方案二的差别是:可以使用消息队列的方式通过的跨网络区域等的多个系统,而且是解耦合的,但相对于方案二的数据同步的一致性,不如方案二。
方案四
昵称和头像改变后,通过IM消息发送到客户端,客户端进行昵称和头像的更新
用户的昵称和头像修改后,通过IM消息发送到各个聊天会话,这种方案的实时性比较高,但是一些老的聊天会话因为长时间没有会话却收到了大量的头像变更消息,在资源上是一种浪费。可以选择只更新会话的前n个会话。
网友评论