一、 项目介绍
在C++项目中比较热点的就是高并发网络服务,聊天服务应用场景比较简单(局域网的聊天),在这里我们先做一个单机版本的(即一个聊天服务器),为了扩充聊天服务器的能力,使它可以提供给更多用户来享受聊天服务,所以就需要横向扩充聊天服务器的机器,涉及到服务器集群,服务器集群必备的模块是负载均衡器(也叫反向代理),这里需要着重介绍nginx负载均衡的一些配置、部署和原理。
在网络通信中数据通信比较复杂的情况需要借助数据序列化和反序列化协议,有xml,json或protobuf,这个项目中采用json。
服务器项目会用到muduo网络库,最后还会用到数据库,因为这个项目需求包括用户信息、好友列表信息、群组列表信息都会存储在数据库中,所以立足于我们的业务,数据库如何创建、表如何设计以及表与表之间的关系。
1. 本项目可以学习到的技术栈:
- Json序列化和反序列化
- muduo网络库开发
- nginx源码编译安装和环境部署
- nginx的tcp负载均衡器配置
- redis缓存服务器编程实践
- 基于发布-订阅的服务器中间件redis消息队列编程实践
- MySQL数据库编程
- CMake构建编译环境
- Github托管项目
2. 项目需求
- 客户端新用户注册
- 客户端用户登录
- 添加好友和添加群组
- 好友聊天
- 群组聊天
- nginx配置tcp负载均衡
- 集群聊天系统支持客户端跨服务器通信
3. 项目目标
- 掌握服务器的网络I/O模块,业务模块,数据模块分层的设计思想
- 掌握C++ muduo网络库的编程以及实现原理
- 掌握Json的编程应用
- 掌握nginx环境部署tcp负载均衡器的应用以及原理
- 掌握服务器中间件的应用场景和基于发布-订阅的redis编程实践以及应用原理
- 掌握CMake构建自动化编译环境
- 掌握Github管理环境
二、项目开发环境安装
1. 开发环境
- ubuntu linux环境
- 安装Json开发库(把json.hpp直接拉到项目工程目录里)
- 安装boost+muduo网络库开发环境(教程)
- 安装redis环境(apt-get install redis,redis-server检查是否安装好)教程
- 安装mysql数据库环境(netstat -tanp检查mysql server是否正常工作)
- 安装nginx
- 安装CMake环境
2. 配置远程开发环境
windows+vscode配置远程linux开发环境
- linux系统运行sshd服务
- 在vscode上安装Remote Development插件,其依赖插件会自动安装
- 配置远程linux主机信息
- 在vscode上开发远程连接linux