IM网页聊天室

社交 IM熟人社交 案例ID:185203
碧海潮生之力
7 年经验· 北京循环智能科技有限公司
微信扫码沟通,客服可协助直接对接工程师;如当前档期不合,也可继续推荐相似案例作者。

案例介绍

一、主要技术栈
Golang,MySQL,Redis,websocket,HTTP
二、项目概述
该网页聊天室,实现的主要功能有:单聊、群聊、加载离线消息、加载历史消息、建群、添加好友、 登录、注册等。
三、项目架构
该项目主要包含web、im-balance、im-api、im-manage、im-router几个部分。
1、web
这是前端部分,web首先会从im-balance获取到当前登录用户可用的im-manage节点ip,然后向这个节点发起websocket连接。
2、im-balance
这是负载均衡侧,由Golang实现,主要是给前端每个登录用户,分配一个当前可用的im-manage机器节点。
im-manage启动后,会通过gRPC定时发送心跳给im-balance,im-balance以此来判断哪些节点可用,从而分配给登录用户。采用的负载均衡算法为随机算法。
3、im-api
这个部分主要是为前端提供一些HTTP接口,包含登录、注册、获取好友列表等。
4、im-manage
(1)定时通过gRPC发送心跳给im-balance,注册并更新可用的节点,以供前端使用。
(2)通过websocket和前端通讯,针对不同的前端消息做不同的处理,处理结束后,都会发送ack给前端。
(3)单聊或者群聊的时候,会将消息通过RPC发送到im-router,由im-router将消息转发给对方。
(4)消息持久化存储。将消息存储在数据库中。
5、im-router
这是路由部分,负责消息的转发,寻找接收方所在的机器。
四、项目亮点
1、服务注册和发现。im-manage通过gRPC心跳,完成自己在im-balance的服务注册;客户端通过websocket连接im-balance,查询可用的im-manage服务节点,完成服务发现。
2、本项目可以支持im-manage分布在多台机器,有效地缓解高并发高流量可能带来的压力。
3、我们并不是来一条消息就写一次数据库,而是会定时,或者在达到一定上限量的消息的时候,批量写一次消息表。
4、保证消息的可靠传递。
(1)当接收方成功收到发送者消息,会通过im-manage会发送ack给发送者。
(2)若发送者一定时间未收到ack,则重发消息。
5、水平分表。由于消息表记录众多,我们根据消息发送时间对其进行了水平分表。

IM网页聊天室

社交 · IM熟人社交 案例ID:185203
联系该工程师
微信扫码,建群沟通
作者: 碧海潮生之力 - 7年经验- 北京循环智能科技有限公司

案例介绍

一、主要技术栈
Golang,MySQL,Redis,websocket,HTTP
二、项目概述
该网页聊天室,实现的主要功能有:单聊、群聊、加载离线消息、加载历史消息、建群、添加好友、 登录、注册等。
三、项目架构
该项目主要包含web、im-balance、im-api、im-manage、im-router几个部分。
1、web
这是前端部分,web首先会从im-balance获取到当前登录用户可用的im-manage节点ip,然后向这个节点发起websocket连接。
2、im-balance
这是负载均衡侧,由Golang实现,主要是给前端每个登录用户,分配一个当前可用的im-manage机器节点。
im-manage启动后,会通过gRPC定时发送心跳给im-balance,im-balance以此来判断哪些节点可用,从而分配给登录用户。采用的负载均衡算法为随机算法。
3、im-api
这个部分主要是为前端提供一些HTTP接口,包含登录、注册、获取好友列表等。
4、im-manage
(1)定时通过gRPC发送心跳给im-balance,注册并更新可用的节点,以供前端使用。
(2)通过websocket和前端通讯,针对不同的前端消息做不同的处理,处理结束后,都会发送ack给前端。
(3)单聊或者群聊的时候,会将消息通过RPC发送到im-router,由im-router将消息转发给对方。
(4)消息持久化存储。将消息存储在数据库中。
5、im-router
这是路由部分,负责消息的转发,寻找接收方所在的机器。
四、项目亮点
1、服务注册和发现。im-manage通过gRPC心跳,完成自己在im-balance的服务注册;客户端通过websocket连接im-balance,查询可用的im-manage服务节点,完成服务发现。
2、本项目可以支持im-manage分布在多台机器,有效地缓解高并发高流量可能带来的压力。
3、我们并不是来一条消息就写一次数据库,而是会定时,或者在达到一定上限量的消息的时候,批量写一次消息表。
4、保证消息的可靠传递。
(1)当接收方成功收到发送者消息,会通过im-manage会发送ack给发送者。
(2)若发送者一定时间未收到ack,则重发消息。
5、水平分表。由于消息表记录众多,我们根据消息发送时间对其进行了水平分表。

相似案例推荐

  • 恋爱记

    恋爱记

    2022年设计的恋爱记App,担任主设,负责视觉改版。

  • 语音聊天

    语音聊天

    在这个项目中可以实现添加朋友后和朋友之间的相互聊天,可以分享

  • 全民来签小程序

    全民来签小程序

    参与项目前期策划及商业相关讨论、确立开发方案,主导框架设计及

  • 仿bilibili的视频

    仿bilibili的视频

    仿bilibili的视频+弹幕系统 项目介绍 本项目是一

  • 铃语约玩

    铃语约玩

    是直播连麦的小程序,用是uniapp开发完成的, 小程序是分

  • eSpace 企业即时通讯平台

    eSpace 企业即时通讯平台

    eSpace 企业即时通讯平台。 面向华为内部及南方电网、招

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在 1 小时内与您联系确认。

1小时精推人才

需求方专属客服,免费梳理匹配

需求方客服微信二维码
扫码加微信 · 客服人工对接
更多案例 联系该工程师
微信沟通 客服 看中这位工程师了?客服帮你 1 小时对接沟通 → ×