分享一套golang实现的 IM 系统,一键部署服务端,客户端SDK全平台支持,可以替代IM云服务

GO 聊天IM系统(三)整合redis、channel完成单聊私聊以及消息回调 整合redis完成im项目消息回调 阅读详情

开篇

自互联网诞生以来,即时通讯平台就一直存在。从世界范围来看,WhatsApp、Facebook、 微信、Telegram是领先的消息平台,用户主要使用这些平台与家人和朋友保持联系。随着互联网的发展,人与人之间的沟通是刚需,无处不在,几乎所有的APP都集成IM功能,从社交、游戏、到生活中的方方面面,打车、找房等。可以说IM作为一种通讯能力,已经成为互联网上的基础设施,成为许多APP不可或缺的功能。现在绝大多数APP使用IM云服务商的SDK,方便接入的同时,也带来了几个深层次的问题:(1)成本问题:企业每年额外支付上万乃至数十万的云服务费用,是个不小的成本;(2)数据隐私问题:企业的用户数据、聊天记录等核心数据存储在IM云服务商,如何保证数据的安全性是个极大挑战;(3)需求定制问题:IM需求多样化,IM功能只能由IM云服务商通过SDK的形式提供给大家使用,对于一些定制化的需求,是否支持,什么时候实现,都是个未知数;(4)云服务商绑架问题:一旦使用IM云服务,形成捆绑关系,迁移成本高,受制于人。

OpenIM采用和IM云服务相同的接口,提供服务端和客户端SDK,让开发者以免费或低成本接入IMSDK,并私有化部署,完成IM功能接入。

介绍

OpenIM:由前微信技术专家打造的基于 Go 实现的即时通讯(IM)项目,从服务端到客户端SDK开源即时通讯(IM)整体解决方案。开发文档完善,代码100%开源,支持Andorid、iOS原生开发,支持Flutter、uni-app跨端开发,支持小程序、React等所有主流web前端技术框架, PC支持Electron,可以轻松替代第三方IM云服务。

后台架构

img

服务端由接入层、逻辑层和存储层组成,好处在于各个层次能够依据业务特点专注于自己的事情,提高系统复用性,降低业务间的耦合。

(1)接入层:消息通过 websocket 协议接入,其他通过 http/https 协议接入,消息是高频及核心功能,通过双协议路由,体现了轻重分离的设计思想。

(2)逻辑层:通过 rpc 实现无状态逻辑服务,易于平行扩展,消息通过 MQ 解耦。

(3)存储层:redis 存储 token 和 seq;mongodb 存储离线消息,并定时删除 14 天(可自行配置)前数据;mysql 存储全量历史消息以及用户相关资料。数据分层存储,充分利用不同存储组件的特性。

(4)Etcd:服务注册和发现、以及分布式配置中心。

消息流程

img

Open-IM 消息模型采用经典的收件箱模型,并通过全局 seq 做消息对齐,这里带来架构的简化,体现了简单美的架构设计理念。很多开发者通过网络文章,了解到收件箱模型的原理,也知道 seq 的概念,但如何在项目中做权衡和取舍,爱因斯坦曾经说过“事情应该力求简单,不过不能过于简单”,我们看到很多技术文章对收件箱模型和 seq 的滥用,要么系统设计复杂,要么过于简单,最后的结果是系统不稳定,消息可达率无法达到要求。以下我们简单讲解消息如何发送,系统如何简单解耦,接收方如何实时收到消息,并如何利用 seq 做全局消息对齐,确保消息百分百可达。

客户端架构

img

客户端 SDK 负责和 IM 服务端交互,本地数据存储和同步,消息、事件回调。开发者通过集成 SDK,自行开发聊天界面 UI,设置事件监听回调实现数据和 UI 对接。

Open-IMSDK 分为三层:网络层、逻辑层、存储层。分层治理,各司其职,实现高效、稳定、统一的客户端架构。

SDK集成流程

img

OpenIM SDK 集成非常简单,由于开发者私有化部署,代码、配置、数据都在自家服务器上,不用向云平台申请 AppKey 和 Secret,相比第三方 IM 云服务,可见 OpenIM 更安全、可控、自由度更高。

地址

官方文档地址:

https://doc.rentsoft.cn/

OpenIM github开源地址:

https://github.com/OpenIMSDK/Open-IM-Server

OpenIM官网 : https://www.rentsoft.cn

OpenIM官方论坛: https://forum.rentsoft.cn

我们致力于通过开源模式,为全球企业/开发者提供简单、易用、高效的IM服务和实时音视频通讯能力,帮助开发者降低项目的开发成本,并让开发者掌控业务的核心数据。

IM作为核心业务数据,安全的重要性毋庸置疑,OpenIM开源以及私有化部署让企业能更放心使用。

如今IM云服务商收费高企,如何让企业低成本、安全、可靠接入IM服务,是OpenIM的历史使命,也是我们前进的方向。

纯golang im即时通讯系统(支持分布式) 简介 纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 https://github.com/Terry-Ye/im, 学习于goim, 总分三层, comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消... 阅读详情

相关推荐

基于Golang的网站在线客服系统开发:实时通讯IM和访客生成唯一ID标识

通过实现实时通讯IM功能和为访客生成唯一的ID标识,我们可以构建一个简单而高效的网站客服系统。在本篇文章中,我们将介绍如何使用Golang开发一个网站在线客服系统,实现实时通讯IM功能,并为每个访客生成唯一的ID标识。上述代码创建了一个简单的聊天界面,包括一个消息显示区域、一个用户名输入框、一个消息输入框和一个发送按钮。你可以在不同的浏览器窗口中打开多个客户端,它们可以实时通讯,并在界面上显示收到的消息。在上面的代码中,我们创建了一个WebSocket服务器,使用。来生成一个唯一的ID标识,并将其存储在。

BetiFunction的博客 685

golang im聊天核心结构(websocket)

golang websocket实现im聊天

leo_jk的博客 1664

百万级并发IM即时消息系统(1)前期准备

Gin是目前golang使用最广泛的Web架构之一。web开发框架,通合api接口、微服务开发,相较于其他框架(iris、 beego)更轻量级和更好的性能。其路由功能很强大提供分组功能,非常适合做api开发。

m0_50973548的博客 733

Golang(M)[IM]

Go语言打造高并发web即时聊天(IM)应用-支持10万人同时在线

weixin_42366378的博客 3836

Go-im:使用Golang语言作为服务端实现IM聊天接口

Go-im实现 简单介绍 一个即时通讯服务器,基于WebSocket协议,使用Golang语言完成, 实现功能 登录注册 验证码 上传文件 单聊/群聊 文字、表情、图片、语音等消息推送 添加好友 创建群/加入群 七牛云对象存储 消息持久化 使用redis存储数据,减少数据库io操作 JWT-Token认证模式 日志记录 文字敏感信息过滤 使用说明 1、安装数据库 2、创建数据库 3、在config目录下,创建config.yaml文件进行数据配置 MySQL: Username: xxx Password: xxxx Address: xxx Port: xxx Database: xxxx QNY: #七牛云配置 QINIU_DOMAIN: xxx QINIU_ACCESS_KEY: xxxx QINIU_SECRET_KEY: xxxx QINIU_

golang实现高性能IM单聊系统,UDP分发

golang实现高性能IM单聊系统,UDP分发

「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务

背景 OpenIM成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。 全球范围频繁发生的数据泄露、勒索病毒、隐私滥用等安全事件一次次给企业敲响警钟,企业管理者对数据资产的价值、数据安全的重要性有了更清晰的认识,数据安全成就企业核心价值。 IM作为核心业务数据,安全的重要性毋庸置疑,OpenIM开源以及私有化部署让企业能更放心使用。 如今IM云服务商收费高企,如何让企业低成本、安全、可靠接入IM服务,是OpenIM的历史使命,也是我们前进的方向。 优势 OpenIM:由前微信

OpenIM的博客 2450

WINDOWS下SIP拨号的实现

在WIN10上拨打SIP电话  由于我的交换原理实验有一个是关于SIP的抓包的。而之前从未接触过SIP,所以在如何完成一次SIP拨号上遇到了不少问题,查了好多资料都没有完整的或者写的很清楚的,这里就对那些资料做一个总结,给出一个比较完善的解决方案,一来是记录此次实验的收获,而来也可能为其他有同样困惑的人解惑。  废话不多说直接开始。首先是下载一个可以拨打SIP电话的客户终端,这里我选择的是MicroSIP, 下载红圈内的文件,下载好之后直接一路安装即可,没有什么特别注意的地方。  安装好客户端之后,就需要注

weixin_43918519的博客 3807

# 稳了github star突破9k即时通讯IM开源项目OpenIM版本发布-生产环境重点关注

项目简介 Android体验地址:https://www.pgyer.com/OpenIM 注册后自动加入组织 群聊页面 工作台 业务可以通过jssdk自由扩展自身业务 工作圈 增加办公动态 组织架构 业务系统打通组织架构 最近一个月,OpenIM团队主要精力集中在线上bug修复、性能优化、新特性开发: 重大bug修复 | bug描述 | 描述 | 原因

OpenIM的博客 2009

华为MetaERP Oracle EBS OM(订单管理)模块详解作为ERP财务解决方案架构师,理解OM模块的业务全景和数据模型至关重要。OM是EBS分销链路的核心引擎,贯穿“订单到收款“(Orde

Oracle EBS OM模块是管理销售订单全生命周期的核心模块,涵盖客户管理、订单执行、发运开票、定价及信用控制等功能。其标准流程包括订单录入、预订、发放、发运确认和自动开票等环节,核心数据表涉及订单、客户、发运和定价等业务对象。OM模块与库存、应收、发运等模块深度集成,架构师需重点设计订单类型、信用控制策略和自动开票接口等关键环节,确保业务流程高效流转。

金牌架构师 357

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 178

golang im实战入门

学了这篇文章,搞定im不成问题

qq_18447271的博客 1991

以 DeleteRestrictions 与 inlineDelete 为核心的 Fiori Elements 表格删除机制全解

SAP Fiori elements 中删除操作的设计与实现涉及多维度考量。框架默认依据 OData 元数据判断删除能力,通过 DeleteRestrictions 注解实现行级条件控制(deletable-path)。表格支持两种删除模式:工具栏集中删除与响应式表格行内删除,但二者不建议混用。关键约束包括:行内删除仅适用于 Responsive Table,且与多选功能互斥。配置需遵循三层架构:后端能力注解、前端表格形态和运行时交互。设计上强调禁用优于隐藏的可用性原则,并需保持列表页与对象页的删除体验一致

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 152

golang高可用IM即时通讯方案-协程发送、udp转发

2,请求示例,集成了udp转发,后端调度省略。

qq_37430469的博客 683

Unity DOTS核心概念之 System(系统)

本文全面解析Unity ECS架构中System的核心概念与最佳实践。System作为纯逻辑载体,遵循"查询数据→处理数据"的工作流,严格分离数据与逻辑。文章详细介绍了: System定义方式(推荐ISystem接口)与三大设计准则(纯逻辑、无状态、最小权限) 生命周期管理(OnCreate/OnUpdate/OnDestroy)和执行顺序控制(UpdateInGroup/UpdateBefore) 实体查询机制(SystemAPI.Query高级筛选)和多线程优化(IJobEntity

分享知识,拥抱变化 182

【单智能体】AI 数据分析智能体案例讲解(附完整源码)

本案例将引导您构建一个基于 AI 的数据分析智能体,让用户能够通过自然语言查询来分析 CSV 和 Excel 文件中的数据,无需掌握 SQL 知识。该智能体使用 Agno Agent 框架集成 OpenAI GPT-4o 模型,并利用 DuckDB 提供高效的数据处理能力。

rengang66的博客 238

GoBelieve-国内唯一开源IM服务

GoBelieve-国内唯一开源IM服务 1. 一小时接入   专注IM,无冗余功能 几行代码,一小时接入 省时省力。 2. 自由定制   提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自由定制。 3. 完全开源   国内唯一开源IM服务,所有源码在Github开放,与线上版本一致 4. 私有云部署   彻底排除窃取隐私可能,支持自有域名部署可搭建私...

weixin_33814685的博客 417

【人工智能】提示词避坑指南:为什么大模型越让它“禁止”,它越要“唱反调”?

和 AI 沟通就像和聪明但直脑筋的工科生说话——

奶爸的编程之路,也就一周冷个三天 224

IMV2.0

通过一个实例实时 IM系统简进行总结知识,在学习中,他的内容感觉很不错,可以去这里获取相应内容。刘丹冰 golang内容。

wtt234的专栏 393

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

weixin_42412049的博客 1015

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

推荐开源项目:GO-IM - 高性能即时通讯服务器

推荐开源项目:GO-IM - 高性能即时通讯服务器 go-im旧版本停止维护⚠️ 新版本地址:https://github.com/IM-Tools/Im-Services项目地址:https://gitcode.com/gh_mirrors/go/go-im 1、项目介绍 在当今数字化的时代,实时通信已经成为应用程序的核心组成部分。GO-IM 是一个基于 Golang 编写的高性能即时通讯(I...

gitblog_00006的博客 1728

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

推荐开源项目:基于golang+WebRTC构建的高效IM音视频聊天系统

推荐开源项目:基于golang+WebRTC构建的高效IM音视频聊天系统 去发现同类优质开源项目:https://gitcode.com/ 在这个数字化的时代,即时通讯(Instant Messaging, IM)已经成为了人们日常生活和工作中不可或缺的一部分。今天,我们向您推荐一款强大的开源IM音视频聊天系统,它采用了高性能的Golang语言和先进的WebRTC技术,为您打造稳定、高效的远程协作...

gitblog_00058的博客 1407

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

探索高性能即时通讯:GO-IM开源项目深度解析

探索高性能即时通讯:GO-IM开源项目深度解析 在数字化时代,即时通讯(IM)已成为连接人与人之间沟通的重要桥梁。今天,我们将深入探讨一个由Golang编写的高性能IM服务器项目——GO-IM,它以其卓越的性能和丰富的功能,正吸引着全球开发者的目光。 项目介绍 GO-IM是一个开源的即时通讯服务器项目,采用Golang语言开发,旨在提供一个高性能、可扩展的IM解决方案。该项目不仅支持账号密码登录,...

gitblog_00557的博客 697

golang 实现IM 通讯系统

首先需要了解websocket编程是什么?

m0_61287310的博客 312

Go: IM系统技术架构梳理 (2)

整个IM系统的一般架构如下我们这张图展示了整个IM系统的一般架构可见分为四层那最上面这一层是前端,包括哪些东西呢?它包括两部分,第一部分是跟用户直接交互的比如说各种IOS APP, 各种安卓 APP还有各种 web APP 在浏览器里面打开的以及windows上面跑的那种客户端第二部分是跟我们程序相关的SDK,API,Websocket这些我们都统称为前端第二个是接入层,这里展示了几种常用的接入协议实际上还会用到Mqtt, Xmpp 等各种协议这是接入层。

Wang的专栏 1896

GO-IM系统

https://github.com/alberliu/goim 是一个即时通讯服务器,代码全部使用golang完成,主要使用mysql (多设备,消息不丢不重) 官网https://goim.io/https://github.com/Terry-Ye/im纯go实现的分布式im即时通讯系统,各层可单独部署,之间通过rpc通讯,基于redis 做消息推送,比较适合做直播间消息。http://gglinux.com/2017/04/15/IM_design/IM系统设计。

牧竹子 2051
上一篇: 「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务
下一篇: 即时通讯(IM)开源项目OpenIM本周版本发布-v1.0.6
OpenIM
博客等级 码龄5年 295粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值