集群聊天服务器项目总结

首先,我是在Linux下使用VScode进行项目的开发,通过Cmake构建项目,使用gdb进行项目问题的调试,项目完成后通过Linux shell输出项目编译脚本,并把项目托管到我的GitHub上。
这个项目分为4个模块,首先,第一个模块是网络模块,我通过深入剖析muduo网络库的核心组件,采用C++11重写muduo库的核心组件,将依赖于boost库的技术点转化为C++11的知识点,使其脱离boost库,实现出一套网络库来使用,使用这个网络库的好处是:解耦了网络模块的代码和业务层的代码,能够让开发者专注于业务层的开发。然后第二个模块是业务模块,也就是是服务层,我使用了C++11的一些技术,比如说,map,绑定器,函数对象,做了一个消息id和这个消息发生以后的回调操作的绑定,相当于是做了一个回调机制,当这个网络I/O给服务器通知有消息请求,服务器处理客户注册的读事件的回调操作(OnMessage),通过消息请求,从消息里面(buffer)解析出这个json,得到消息id,通过回调操作,就可以处理这个消息了。第三个是数据存储层,我使用的是MySQL,对于项目的关键的数据进行存储,比如说,用户的id,离线消息,好友列表,群组列表的关系,都是在MySQL存储。我还通过实现一个MySQL数据库连接池,在项目代码上还通过书写model类对业务层封装底层数据库,提高MySQL数据库的访问效率。
在单机模式下,主要就是这3个模块,但是单机的并发能力是有限的,所以,我考虑项目的整体的并发能力,让项目可以支持多机的扩展,部署多台网络服务器,前面需要挂1个Nginx负载均衡,这个项目是基于TCP的私有协议,自己去搭建的基于C/S模型的通信,所以我通过对Nginx的tcp的负载均衡配置,做一个长连接,因为是消息聊天通信,客户端不仅仅要给服务器主动发消息,而且服务器还要主动给客户端推消息,所以必须是长连接,短连接做不到这个功能,因为短连接没有办法给客户端推消息,另外,在负载均衡里面,因为是各个服务器有不同的人进行注册,不同服务器上注册的用户需要进行通信的话,我在这里引入了Redis作为一个MQ消息队列的功能,利用它的发布订阅功能实现了跨服务器的消息通信功能。

666-集群聊天服务器项目总结相关推荐

  1. 集群聊天服务器项目(四)——项目总结

    集群聊天服务器项目总结 首先是就是项目介绍集群聊天服务器项目(零)--项目介绍中的内容,就不再次copy过来了 项目简单介绍 技术栈 环境和库依赖 按模块介绍整个项目 程序的主要模块是网络模块.业务模 ...

  2. 集群聊天服务器项目(C++ 11实现)

    Cluster-Chat-Server Github链接:https://github.com/Shangyizhou/Cluster-Chat-Server 在 Linux 环境下基于 muduo ...

  3. 集群聊天服务器项目(一)——模块分层设计

    本项目对程序不同功能进行分层设计,分为网络层.业务层.和数据层. C++面向接口编程也就是面向抽象类,网络模块和业务模块尽量解耦. 网络层 网络层主要封装的是网络连接方面的一些功能,即socket相关 ...

  4. 基于muduo的集群聊天服务器

    集群聊天服务器 该项目是基于muduo网络库的集群聊天服务器,主要实现了登录.注销.注册.添加好友.一对一聊天.群组创建.群聊以及离线消息的接收和存储 项目内容 仿照muduo设计思想实现网络库,作为 ...

  5. c++集群聊天服务器

    文章目录 前言 1.项目介绍 2.项目框架 一.JSON序列化 1.为什么需要json 2.c++ json库 3.序列与反序列化例子 二.nginx负载均衡 三.基于发布-订阅的Redis 1.原理 ...

  6. chat集群聊天室项目 代码+讲解(二):业务模块

    文章目录 项目简单架构图 1.0版本:单服务器 2.0版本,横向扩充,负载均衡 3.0版本,调优 代码 讲解 为什么要设置单例 MsgHandler 的设计 业务中为什么不直接对接数据库? 项目简单架 ...

  7. 400-集群聊天服务器的客户端开发

    我们之前把聊天服务器的代码基本上功能开发完了,在后面转成集群版本的时候要引入中间件-基于发布订阅的Redis. 现在我们先开始客户端的开发 我们聊天服务器项目工程的客户端和服务器会共用很多代码,所以把 ...

  8. mysql 集群 增加服务器_MYSQL集群服务配置

    MYSQL集群服务配置 篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽然这是基于2台服务器的MySQL集群,但 ...

  9. 部署kafka集群到服务器

    前面文章写道的是伪集群的部署,是在同一台服务器部署了四个kafka broker 实际上没有任何的高HA作用.现在来部署一个真正的kafka集群 三台服务器,分别是106 107 108 -现在已经部 ...

最新文章

  1. 飞行时间(TOF)相机优缺点及其应用领域
  2. Windows server 2008 R2远程桌面3389端口号修改
  3. 面试题 合并两个有序链表
  4. 图论相关算法理解和总结
  5. python进阶(第三章2)字典和集合
  6. python用for循环求10的因数_python for循环练习(初级)
  7. 家用计算机注意哪些参数,电脑小白买内存条要注意哪些?主要看哪些参数?这些知识要掌握...
  8. aioserve oracle,oracle进程关不掉的问题??新手问题
  9. Transaction rolled back because it has been marked as rollback-only 原因 和解决方案
  10. umail邮件服务器如何保证数据安全性?
  11. C语言学习笔记--函数
  12. 2019年计算机考研408历年真题2009-2019下载免费下载
  13. 计算机搜索不到网络扫描仪,电脑打印机怎么找不到扫描
  14. 2021.4.3en
  15. 复制瑞幸模式,出局的陆正耀再创业,要先开500家面馆
  16. 四大开源3d游戏引擎探究----irrlicht与orge对比
  17. 修复 j-link the connected j-link is defective 警告
  18. 马云对话马斯克:福报变成了一周工作12小时?
  19. Android处子Demo—简易的UC首页动画
  20. Win10ahci模式怎么开启?

热门文章

  1. 计算机思维导论在线测试题库,MOOC计算机思维导论题库
  2. 十一、修改网卡名称(系统已安装完成)
  3. 微信一键登录遇到的坑
  4. Java豆瓣电影TOP250爬虫
  5. 如何关闭android省流量,安卓手机怎么省流量 安卓手机省流量的方法
  6. keepalived + lvs 高可用
  7. python生成器的send方法
  8. 3D可视化9大核心算法,可收藏
  9. 魔方财务主题-Lolipa-魔方主机模板
  10. 《乌合之众》--Agree with something