zoukankan      html  css  js  c++  java
  • 百万级即时通讯系统服务器框架

    1概述

    引用一段网上的描述:“InstantMessaging(即时通讯、实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。目前在互联网上受欢迎的即时通讯软件包括QQ、百度HI、新浪UC、MSN Messenger等。“

    2服务器端

    2.1系统框架

    下面所有服务器组件:

    内存DB:主要存储人员状态,服务器负载信息

    人员信息

    人员ID

    人员状态

    所在逻辑服务器IP

    所在逻辑服务器port

    1

    在线

    192.168.1.12

    1111

    2

    在线

    192.168.1.11

    1111

    服务器信息

    服务器ID

    服务器类型

    内部通信IP

    内部通信器port

    外部IP

    外部PORT

    当前负载

    最大负载

    1

    1

    192.168.1.12

    1111

    192.168.1.12

    1111

    3

    300

    服务器类型:

    1 代表逻辑服务器

    2 代表音视频

    3 代表聊天服务器

    4 代表群聊服务器

    中心服务器 主要功能维护每个单独服务器的状态,以及即时调整负载,并且清理内存DB服务器负载信息等等

    DBServer、DB(做负载)以下为简图

    DB使用负载服务器具体方案待定。

    主要功能处理登录时候拉去信息的压力,缓解DB读取和存入压力。

    OfflineMsgDBserverr、DB(做负载)以下为简图

    DB使用负载服务器具体方案待定。

    主要功能存入离线消息和拉去离线消息,缓解DB读取和存入压力。

    登录网关服务器

    主要是每个客户端第一次连接后返回一个逻辑服务器,没有其他逻辑。并发很大,这个都是短连接。登录网关的的逻辑负载通过内存db获得 ,没30苗调整一次。

     

    逻辑服务器

    主要处理登录和聊天等

    1.      登录过程

    客户端从网关服务器获得逻辑服务器IP和PORT。发送登录消息,内存数据通过相应算法找到压力较小DBserver获取登录信息。然后返回给客户端组织结构,并且向fflineMsgDBserver发送获取离线消息。最后想内存DB更新人员状态以及所在服务器信息。

    2.      聊天消息(跨服务)

    用户1 登录在逻辑服务器A上

    用户2登录在逻辑服务器B上

    用户1发起聊天发送到 逻辑A服务器上,逻辑服务器A通过内存DB找到用户2所在服务如果未找到 ,作为离线消息。如果找到向相应服务器发送消息。并且转发到用户2手上。

    聊天服务器、群组服务器等基本逻辑相同

    用户1 登录在逻辑服务器A上

    用户2登录在逻辑服务器B上

     

           用户1发起聊天  通过逻辑服务器A找到一个聊天服务 发送给用户1。用户1发送消息到聊天服务器,聊天服务器通过内存DB找到用户B信息发送到逻辑服务器B上。用户B收到消息。并且连接到同一个聊天服务器上配对。至此两个用户全部拉到一个服务器上了。

     

    图片服务器:略

    音视频服务器:

    原则上能用P2P绝对用P2P,不能点对点的。走聊天的类似流程完成把两个用户拉到一个服务器上!!

  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318655.html
Copyright © 2011-2022 走看看