1.需求分析

即时通讯重点
(1)实时性httpsocketwebsocket
(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:6379mysql查看是否正常运行:
lsof -i:3306查看php是否正常运行,在我的腾讯云服务器上的部署:
ps -ef | grep php-fpmdbroxy启动:
cd /root/module/IM/auto_setup/im_server/im-server-1.0/db_proxy_server
nohup ./db_proxy_server &

【IM项目】框架分析与部署相关推荐

  1. 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.0.0)

    TableGo_20220801 v8.0.0 正式版发布,此次版本累计更新如下:  1.生成项目功能新增支持若依框架,可同时生成若依框架代码和所有业务表的前后端基础CRUD代码,一键搞定所有  2. ...

  2. Spring Boot基础学习笔记02:Spring Boot项目单元测试、热部署与原理分析

    文章目录 零.学习目标 1.掌握Spring Boot单元测试实现 2.掌握Spring Boot热部署实现 3.熟悉Spring Boot基本原理 一.Spring Boot单元测试 (一)Spri ...

  3. vue项目dist编译文件部署到服务器:页面空白、F5刷新报错404、403报错、等等bug - 总结篇

    文章目录 问题一. vue编译打包dist文件之后部署到线上服务器 ,访问页面却是空白? 问题二.如果不是空白,页面F5之后就又变成空白? 以Nginx服务器为例,(如下图FTP所示) `404报错: ...

  4. 《迅雷链精品课》第三课:区块链主流框架分析

    上一节课我们学习了区块链的技术架构,系统地分析了区块链平台的6个层次:数据层.网络层.共识层.合约层.应用层.接口层.这节课我们将结合实际看看现在主流区块链项目的技术架构:思考我们在设计具体的业务架构 ...

  5. 瑞吉外卖项目详细分析笔记及所有功能补充代码

    目录 项目刨析简介 技术栈 项目介绍 项目源码 一.架构搭建 1.初始化项目结构 2.数据库表结构设计 3.项目基本配置信息添加 公共字段的自动填充 全局异常处理类 返回结果封装的实体类 二.管理端业 ...

  6. python Web项目知识点分析

    django项目知识点分析 1.异步任务celery和中间人rabbitmq ​ 1.1 celery提供异步任务,遇到耗时操作的任务都可以交给celery来完成 ​ 1.2 通信过程是,生产者(任务 ...

  7. idea 上传jar包到远程仓库_在idea打包并上传到云服务项目流程分析

    一.首先 得先在idea打包好. 我使用的是springboot框架的项目 1.先开启自己的项目 在idea的最右侧有个这个边框,点击Maven 如果之前有该项目的打包,可以点击clean去清理之前的 ...

  8. 理解 IntelliJ IDEA 的项目配置和Web部署

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:dulk cnblogs.com/deng-cc/p/6416332.html 1.项目配 ...

  9. (三) Angular2项目框架搭建心得

    前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2 ...

最新文章

  1. nginx在linux下安装,Nginx在linux下安装及简单命令
  2. 1.spring boot要求最低jdk1.8,平安默认1.6问题,-》安装JDK1.8 2.maven 3.3.3要求最低jdk1.7-安装jdk 1.8...
  3. Linux下Apache+Tomcat 负载均衡
  4. python编程书籍1020python编程书籍_代写INFT 1020作业、Database作业代做、Java课程作业代写、c++,Python编程作业代做...
  5. 第13次预习课-20180919 多进程编程
  6. TreeSet,Hashset,Set集合转为整型数组
  7. python 字典 列表 元祖_Python基础之列表、元祖、字典、集合,你都知道吗?附视频...
  8. 面试官: MySQL 数据库的优化,你知道有哪些?
  9. FastDFS分布式架构,详细安装步骤,测试;Nginx中配置FastDFS,并提供优化,下载方法,楼主已测
  10. VS2017使用C#编写程序员告白小软件
  11. 跑马灯的一些使用心得
  12. 学习笔记1——制作数据集
  13. C#——窗体程序,模拟高温高压锅炉降压处理
  14. 终极版Python打包exe文件,并修改图标,这将是你见过最详细的教程~
  15. 培训2022年6月22日
  16. 两个单词之间的编辑距离
  17. 编程都该学什么语言?几个流行编程语言对比
  18. 项目设计Andriod部分-做一个学习类App-1
  19. Python中的self用法
  20. java分支结构试题

热门文章

  1. 新纪元出纳专用软件 v5.5 绿色
  2. Day7: TCP:拥塞控制原理、 TCP拥塞控制
  3. 判断点在三角形内部方法
  4. 分享一些不起眼的赚钱项目
  5. Facebook黄毅:职业路上知难而“进”
  6. aap渗透_一次App 渗透实战
  7. 在循环语句中,for(i=0;in;i++)和for(i=0;in;++i)有什么区别?
  8. ubuntu proxy(代理)设置全局
  9. java 闹钟代码_java开发之闹钟的实现代码
  10. javascript实现关键字搜索和匹配关键字高亮效果