【IM项目】框架分析与部署

1.需求分析

即时通讯重点
(1)实时性
   http
   socket
   websocket
(2)数据库
   数据库表设计
   分表设计
   密码存储方式
   最近会话表
   未读消息如何体现
   聊天消息分表问题
(3)单聊消息发送流程
   怎么保证数据的不丢失
   消息序号在哪里生成
   消息序号生成方式
   消息如何封装
   消息发送时的seq有什么作用
   消息发送后服务器怎么应答?
   接收端收到数据后如何应答
(4)客户端的单聊消息未读计数是怎么实现的
   服务器怎么保留消息未读计数
   客户端的未读消息计数从何而来
   客户端未读消息计数清0时向服务器发送了什么,服务器又是怎么清除未读消息计数
(5)文件传输原理
   文件传输分为在线传输离线传输
   在线传输和离线传输有什么区别
(6)群聊消息
   如何推送群聊
   群消息计数器
   群会话如何更新(每有一个人发送消息,则其他人都需要更新会话消息)
(7)群成员管理
   如何创建群
   如何删除群
   怎么使用redis管理群成员
(8)MySQL连接池设计
   为什么使用连接池
   连接池设置多大合适?
(9)redis连接池设计
   为什么使用连接池
   连接池设置多大合适?
(10)并发能力
  如何做到百万并发
  如何做到千万并发



文件服务:
(1)在线传输(不会存到服务器)
(2)离线文件(会存到服务器)

2.设计

1.Android/iOS/PC:各种客户端。
2.LoginServer:主要负责负载均衡的作用,当收到客户端的请求时,分配一个负载最小的MsgServer给客户端.
3.MsgServer:通讯的主要服务端,负责维护各个客户端的链接,消息转发等功能.
4.RouteServer:负责消息路由的功能,当msg_server发现某个用户不在本服务器内,而又有消
息需要发给他,就会将消息转发给route_server,route_server会将消息发给相应的msg_server,由此可知,route_server也维护了一定的用户状态.
5.DBProxy:在TT中负责了主要的业务逻辑,主要与存储层打交道,提供mysql以及redis的访问
服务,屏蔽其他服务器与mysql与redis的直接交互.
6.FileServer:文件服务器,提供客户端之间得文件传输服务,支持在线以及离线文件传输.
7.MsfsServer:图片存储服务器,提供头像,图片传输中的图片存储服务.
8.PushServer:负责Android、IOS客户端提醒消息的推送,类似微信的锁屏提醒消息.
9.Webserver:简单的管理功能.
10.HTTPMsgServer:提供http接口.


业务流程:
(1)从loginserver中获取msgserver的ip+端口;
(2)登录到msgserver;
(3)把账号密码有msgserver转发到dbproxy,然后把验证结果返回msgserver;
(4)返回登录结果,成功则保持长连接,失败则断开.


LoginServer主要是看MsgServer的负载均衡情况:
(1)看哪个MsgServer比较有空闲;
(2)看看有没有同你在同一个区域的MsgServer.

MsgServer:
(1)登录请求;
(2)保持长连接;
(3)发送消息,接收消息.

DBProxy:
(1)登录验证;
(2)存储消息;
(3)可以部署多个,支持水平拓展.
这里的分表没有像mycat那么专业,支持消息的分表.


RouteServer:
(1)消息转发
   比如MsgServer1上有Amy,MsgServer2上有Bob,Amy向给Bob发消息,MsgServer1和MsgServer2之间
   是没有通路的,只有通过RouteServer这个来做转发.


HTTPMsgServer提供httpapi,高扩展性:
(1)注册账号;
(2)查询用户信息;
(3)发送聊天消息.
...

fileserver文件传输服务,离线文件需要发送给fileserver进行保存.
MsfsServer文件存储,小型的http文件存储服务器.(图片,语音)


2.项目

centos下安装php

安装过程出错的情况:

2.1 需要有相应的权限

2.2 需要有相应文件夹 mkdir -p base/pb/lib/linux

安装ARP相关的组件

安装ARP二--下载链接失效

安装ARP三---现在下载链接有效

apache-log4cxx-0.10.0.tar.gz--编译与部署

log4cxx/0.10.0源码

usr/bin/ld: cannot find -lxxx的解决方案

mysql.h: No such file or directory--解决方案

配置Nginx和php-fpm用Sock套接字连接时,找不到php-fpm.sock的原因

pam_succeed_if(sshd:auth): requirement “uid 」= 1000“ not met by user “root“

linux中/etc/pam.d/system-auth文件详解

CentOS 7下MySQL服务启动失败的解决思路--Unregistered Authentication Agent for unix-process:9413:3597941---的思路提供---没有创建目录

ref

 

 

3.我的环境中的一些检查

1.保证redis正常运行;
2.保证mysql正常运行;
3.保证php正常运行;
4.保证nginx正常运行;
5.保证php正常运行,这里的php主要是web管理平台的使用;
6.protobuf版本库目前server端是2.0的版本,Android_av使用了3.0的版本
7.web服务器需要nginx支持;
8.服务不启动的时候主要查看log是否正常。
9.查看后台七个服务是否都正常;
10.查看msfs是否正常.

查看redis是否正常运行:
lsof -i:6379

mysql查看是否正常运行:
lsof -i:3306

查看php是否正常运行,在我的腾讯云服务器上的部署:
ps -ef | grep php-fpm



dbroxy启动:
cd /root/module/IM/auto_setup/im_server/im-server-1.0/db_proxy_server
nohup ./db_proxy_server &

   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值