IM网页聊天室

我要开发同款
游鱼的编程旅行2022年11月03日
171阅读
开发技术Go
所属分类webgolang
参考价格10000.00元

作品详情

一、主要技术栈Golang,MySQL,Redis,websocket,HTTP二、项目概述 该网页聊天室,实现的主要功能有:单聊、群聊、加载离线消息、加载历史消息、建群、添加好友、 登录、注册等。 三、项目架构该项目主要包含web、im-balance、im-api、im-manage、im-router几个部分。1、web这个部分代表前端部分,主要是用一些基本前端技术实现各个页面的展示,包含登录页、注册页、聊天室页面、好友列表页等等。web首先会从im-balance(负载均衡侧)获取到当前登录用户可用的im-manage(真正的消息服务)机器ip,将其缓存在localStorage之后,会向im-manage发起websocket连接。2、im-balance这是负载均衡侧,由Golang实现,主要是给前端每个登录用户,分配一个当前可用的im-manage机器节点。im-manage启动后,会通过gRPC定时发送心跳给im-balance,im-balance以此来判断哪些节点可用,从而分配给登录用户。采用的负载均衡算法为随机算法。3、im-api这个部分主要是为前端提供一些HTTP接口,包含登录、注册、获取好友列表等。4、im-manage这是最核心的消息服务,可以支持以分布式的形式散步在多台机器上。其功能主要如下:(1)和im-balance。定时通过gRPC发送心跳给im-balance,注册并更新可用的节点,以供前端使用。(2)和web。通过websocket和前端通讯,针对不同的前端消息做不同的处理,处理结束后,都会发送ack给前端。(3)和im-router。单聊或者群聊的时候,会将消息通过RPC发送到im-router,由im-router将消息转发给对方。(4)消息持久化存储。将消息存储在数据库中。5、im-router这是路由部分,负责消息的转发,寻找接收方所在的机器。四、项目亮点 1、服务注册和发现。im-manage通过gRPC心跳,完成自己在im-balance的服务注册;客户端通过websocket连接im-balance,查询可用的im-manage服务节点,完成服务发现。2、自己实现对分布式和负载均衡的支持。本项目可以支持im-manage、im-router分布在多台机器,有效地缓解高并发高流量可能带来的压力。3、消息存储性能提升。我们并不是来一条消息就写一次数据库,而是会定时,或者在达到一定上限量的消息的时候,批量写一次消息表。4、保证消息的可靠传递。发送者的消息到达im-manage后,会首先存储到数据库,然后发送给接收者。(1)ack机制。当接收方成功收到发送者消息,接收方会通过im-manage会发送ack给发送者。(2)消息超时重发机制。若web端一定时间内未收到ack,则会重发消息。5、水平分表。由于消息表记录众多,我们根据消息发送时间对其进行了水平分表。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论