ChatServer
文章平均质量分 91
可以工作在nginx tcp负载均衡环境中的集群聊天服务器和客户端代码 基于muduo库 redis mysql 实现
叫板
这个作者很懒,什么都没留下…
展开
-
C++实现集群聊天服务器(7)
在服务器集群的环境当中,我们引入负载均衡器帮我们统一接受客户端的请求,根据配置的负载算法来把客户端请求分发到业务服务器上。用户使用客户端时候不用选择去链接哪台服务器,客户端默认链接的都是负载均衡器。负载均衡器的角色就是一个中间的桥梁,连接客户端和服务器之间的通信。客户端的请求与服务端的响应都是要经过负载均衡器的。2.能够和ChatServer保持心跳机制,监测ChatServer故障。时刻监测业务服务器是否在线,负载均衡器的职责就是把客户端的请求分发给服务器。原创 2023-08-05 13:29:40 · 204 阅读 · 1 评论 -
C++实现集群聊天服务器(5)
返回好友列表时 从Friend表里只能拿到friend id,我们还要拿着friend id再user表里的具体信息,因为我们最起码给用户返回好友列表时,需要返回账号 名字 状态。业务的开发,业务层需要开发业务逻辑代码,数据层需要建Model类,对表的增删改查进行封装,使数据库的操作代码不会和业务代码耦合到一起。包含了4个成员变量,组的id 组的name,组的描述与一个vector(到时候会获取一个组内所有的成员,从数据库查询处理后将所有成员放入vector中,供业务层使用)添加头文件 与数据操作类对象。原创 2023-08-01 11:35:35 · 140 阅读 · 1 评论 -
C++实现集群聊天服务器(4)
用户1给用户2发送消息 from:1 to:2 mag:xxx 这时服务器要主动给2推送消息。2又不知道什么时候别人和他说话,它不可能去服务器上边拉消息,所以这个聊天肯定是服务器推给我们另外一方的。所以这就是为什么聊天服务器必须需要设置长连接服务器,因为不仅仅只能是客户端请求,服务器被动接受,服务器也要主动推消息到客户端的。所以拿到用户的ID:2,你怎么知道2这个用户的链接connection在哪里,所以我们在业务层要想办法存储下,一个用户一个connection。原创 2023-07-31 13:12:45 · 271 阅读 · 1 评论 -
C++实现集群聊天服务器(3)
注意:业务层代码千万不要直接写数据库,相当于把网络模块代码和业务模块代码通过事件回调完全拆分开,现在来到业务层我们也是相当希望把数据层和业务层代码逻辑区分开,不要让俩者代码掺杂在一起。将来数据存储模块不想在MySql上存储了,全部存放在Redis上那么业务模块代码需要大量改动,所有我们一般ORM框架 object realtion map 对象关系映射,帮我们解决了业务层操作的都是对象,我们看不到任何sql语句。数据层才是有数据库操作。原创 2023-07-30 13:30:31 · 109 阅读 · 1 评论 -
C++实现集群聊天服务器(1)
muduo库代码这就写完了,使用TcpServer很快的建立了一个性能相当不错的基于事件驱动的I/O复用epoll的+线程池的这种模型网络服务器。原创 2023-07-29 11:33:10 · 168 阅读 · 0 评论 -
C++实现集群聊天服务器(2)
bin:生成的可执行文件lib:生成的中间库文件include:头文件src:源文件build:编译过程中产生的临时中间文件test:测试文件thirdparty:依赖的第三方库autobuild.sh:Linux的Shell脚本 一键编译。原创 2023-07-29 14:30:20 · 207 阅读 · 0 评论 -
C++实现集群聊天服务器(6)
/ 记录当前系统登录的用户信息// 记录当前登录用户的好友列表信息// 记录当前登录用户的群组列表信息// 显示当前登录成功用户的基本信息// 控制主菜单页面程序// 接收线程// 获取系统时间(聊天信息需要添加时间信息)// 主聊天页面程序。原创 2023-08-03 12:50:19 · 102 阅读 · 0 评论