杨武兵个人博客

记录我工作和生活的点点滴滴.

消息中心技术设计总结

| Comments

前言

又有好一段时间没有写博客了,现在终于更加深刻的领悟到坚持是世界上最难的事情,人最大的敌人是自己。反省自己,克服人天生的惰性。

消息中心的功能在很多网站是最常见的功能之一,主要在以下这几类网站上比较常见,第一类:社交类网站,比如微博、QQ空间、人人网等;第二类:开放平台型网站。比如天猫、京东等电子商务平台等。目的是通过消息的形式更加及时地提醒用户,有的是应用系统触发的事件类消息,有的是用户之间的交互类型的消息。

对于不同特点的消息需要采取不同的技术实现方式,以达到业务需求和技术性能的最佳组合。

消息的获取方式

消息实现方式总结

提醒或者消息的获取方式确定如下规则。 a. 对于业务类的提醒通知,采用推拉结合的方式实现。进入 web 页面或者 ios 界面之后采用拉取信息的方式实现,要获取消息提醒内容、消息是否阅读等信息。该信息通过连接 http 服务器获得;若停留在页面上,对于获取及时消息提醒,通过与 XMPP 服务器建立长连接(在 web 客户端通过 http 短连接模拟长连接实现)以推送的方式获取及时消息提醒。

  1.  对于用户会话 IM 消息,直接采用推的方式实现。进入 web 页面或者 ios 界面,建立与 XMPP 服务器的长连接,由服务器直接推送及时通讯消息,用户在线状态等。 用户会话有两种情况,单人会话和多人会话。对于单人会话,消息推送的范围固定,性能问题不严重;对于多人会话,考虑到性能,应当限制多人会话的人数,因为涉及到消息的广播,人数过多会消耗较多的服务器资源,包括内存、 CPU 和网络带宽等。
    
  2.   对于全站通知消息,如无具体的接收人。由于人数不确定,不能采用推的方式实现,若用户量巨大则会出现资源消耗过多的问题,因此只能采用拉的方式实现。
    
  3.  对于公开的微博消息。情况一、用户会通过拉取消息的方式直接阅读消息内容;情况二、用户通过订阅用户或者订阅内容的方式订阅消息,对于这种订阅的消息,订阅人数不确定,也是推拉结合的方式获取消息,用户进入个人主页后,根据订阅规则,主动拉取消息内容,但是对于新的消息 提醒 , 用户通过定期拉取新消息的方式实现。
    

Comments