zoukankan      html  css  js  c++  java
  • IM设计思考:试问

    用过IM很多年了,直到最近才开始好好想想IM的实现需要考虑哪些方面?

    特别是在海量用户的IM环境下,需要考虑哪些方面,自己大概思考了下总结如下:


    1.  海量接入

    QQ的最高在线用户超过了1亿,那么大约每台服务器能接入多少用户?

    如何将海量的登陆用户平均负载到接入服务器集群?

    某台接入服务器过载崩溃时如何平滑转移,避免“多米诺”骨牌效应。


    2.  安全认证

    登陆认证时如何保障安全?何种加密机制,验证方式?

    消息传递时的安全性,加密或不加密?

    自动登陆时的验证模式?


    3.  消息转发

    不同用户可能登陆在不同的服务器上(存在跨IDC机房可能),如何保证即时性和可靠性?

    如何定位用户的登陆位置进行转发?

    每条消息的大小限制多少?


    4.  离线消息

    离线消息是否100%可靠?

    每个用户允许多大的离线消息存储?

    离线消息是否有过期时间?如何管理?


    5.  状态广播

    上线、下线、离开、用户自定义等多种状态消息向好友的转播,可能形成的广播洪流拥塞网络如何解决?


    6.  多点登陆

    如何支持用户多点登陆(PC、手机、PAD同时登陆)?

    多点登陆的情况下消息如何转发,状态如何通知?


    7.  关系管理

    海量用户关系如何管理?

    允许每个用户关联多少好友?(关联的数目越多关系数据网越复杂,对消息和状态通知带来更大压力)

    好友关系的版本管理机制如何设计?(方便和本地客户端对比,减少网络传输流量,进行差异更新)


    8.  多媒体通信

    复杂网络环境下的语音、视频如何通信,协议协商?


    9.  文件传输

    传输协议协商机制?

    中转传输时的可靠性、并发能力和流量控制?(单台服务器可同时服务于多少用户的中转传输?)

  • 相关阅读:
    C++文件读写详解(ofstream,ifstream,fstream)
    C++ char*,const char*,string,int 的相互转换
    Properties --- C++读配置信息的类
    值得推荐的C/C++框架和库
    leetcode 264: Ugly Number II
    几种Tab的实现方法
    HBase数据存储格式
    粗略。。Java项目设计模式之笔记----studying
    开放的平台、向上的文化——揭秘万达电商(4)
    RecyclerView
  • 原文地址:https://www.cnblogs.com/hehe520/p/6147662.html
Copyright © 2011-2022 走看看