共计 2182 个字符,预计需要花费 6 分钟才能阅读完成。
背景
OpenIM 成立之初就将“开源”作为外围策略来推动,开源充分体现了自在、平等、分享的互联网精力。
寰球范畴频繁产生的数据泄露、勒索病毒、隐衷滥用等安全事件一次次给企业敲响警钟,企业管理者对数据资产的价值、数据安全的重要性有了更清晰的意识,数据安全成就企业外围价值。
IM 作为外围业务数据,平安的重要性毋庸置疑,OpenIM 开源以及私有化部署让企业能更放心使用。
现在 IM 云服务商免费高企,如何让企业低成本、平安、牢靠接入 IM 服务,是 OpenIM 的历史使命,也是咱们后退的方向。
劣势
OpenIM:由前微信技术专家打造的基于 Go 实现的即时通讯(IM)我的项目,从服务端到客户端 SDK 开源即时通讯(IM)整体解决方案。开发文档欠缺,代码 100% 开源,反对 Andorid、iOS 原生开发,反对 Flutter、uni-app 跨端开发,反对小程序、React 等所有支流 web 前端技术框架,PC 反对 Electron,能够轻松代替第三方 IM 云服务
OpenIM 曾经具备 IM 和音视频实时通话的能力,提供 SDK 接入和服务端私有化部署。
当初我的项目 star 增长迅速,短短几周内达到 1k,微信群的开发者 500 人,社区开发者 30 人。
OpenIM 诚邀现诚邀寰球技术极客退出开源社区奉献代码,充分发扬自在、平等、分享的互联网精力,独特打造寰球开源 IM 的第一社区。
官网文档:
https://doc.rentsoft.cn/
github 地址:
https://github.com/OpenIMSDK/…
欢送大家奉献 Star 和 Fork,转发并邀请开发者进群,打造开源 IM 的 No1
为什么要开源
尽管开源工作可能会产生无益的后果,但它不是慈悲行为。将工作公布为凋谢源代码和相应的奉献过程最终会比其余关闭源代码过程带来更高的初始投资回报。约翰·纳什是驰名数学家,也是奥斯卡获奖电影《漂亮的心灵》的配角,他因在“单干博弈”方面的工作而取得诺贝尔经济学奖。他证实了单干不是零和博弈,通过单干,所有参与者可能会产生比他们的投资更高的回报。事实世界中最好的例子可能是开源软件。对于 OpenIM 来说,次要解决两类需要,第一对于老本敏感的初创企业,每年几万的 IM 云服务费用是个不小的开销,而应用 OpenIM 能够零老本进行代替;第二对于信息安全比拟敏感的企业,比方航天、政务等,如果应用私有云 IM 服务,企业外部的敏感信息可能存在泄露的危险,可能会给企业带来灭顶之灾。
后盾架构
服务端由接入层、逻辑层和存储层组成,益处在于各个档次可能根据业务特点专一于本人的事件,进步零碎复用性,升高业务间的耦合。
(1)接入层:音讯通过 websocket 协定接入,其余通过 http/https 协定接入,音讯是高频及外围性能,通过双协定路由,体现了轻重拆散的设计思维。
(2)逻辑层:通过 rpc 实现无状态逻辑服务,易于平行扩大,音讯通过 MQ 解耦。
(3)存储层:redis 存储 token 和 seq;mongodb 存储离线音讯,并定时删除 14 天(可自行配置)前数据;mysql 存储全量历史音讯以及用户相干材料。数据分层存储,充分利用不同存储组件的个性。
(4)Etcd:服务注册和发现、以及分布式配置核心。
音讯流程
Open-IM 音讯模型采纳经典的收件箱模型,并通过全局 seq 做音讯对齐,这里带来架构的简化,体现了简略美的架构设计理念。很多开发者通过网络文章,理解到收件箱模型的原理,也晓得 seq 的概念,但如何在我的项目中做衡量和取舍,爱因斯坦已经说过“事件应该力求简略,不过不能过于简略”,咱们看到很多技术文章对收件箱模型和 seq 的滥用,要么零碎设计简单,要么过于简略,最初的后果是零碎不稳固,音讯可达率无奈达到要求。以下咱们简略解说音讯如何发送,零碎如何简略解耦,接管方如何实时收到音讯,并如何利用 seq 做全局音讯对齐,确保音讯百分百可达。
客户端架构
客户端 SDK 负责和 IM 服务端交互,本地数据存储和同步,音讯、事件回调。开发者通过集成 SDK,自行开发聊天界面 UI,设置事件监听回调实现数据和 UI 对接。OpenIMSDK 分为三层:网络层、逻辑层、存储层。分层治理,各司其职,实现高效、稳固、对立的客户端架构。通过 golang 实现,全终端笼罩。
OpenIM 服务端一键部署
OpenIM 集成流程
OpenIM SDK 集成非常简单,因为开发者私有化部署,代码、配置、数据都在自家服务器上,不必向云平台申请 AppKey 和 Secret,相比第三方 IM 云服务,可见 OpenIM 更平安、可控、自由度更高。
退出咱们:
开源交换群
OpenIMgithub 开源地址:
https://github.com/OpenIMSDK/…
OpenIM 官网: https://www.rentsoft.cn
OpenIM 官方论坛 :https://forum.rentsoft.cn/
更多技术文章:
开源 OpenIM:高性能、可伸缩、易扩大的即时通讯架构
https://forum.rentsoft.cn/thr…
【OpenIM 原创】简略轻松入门 一文解说 WebRTC 实现 1 对 1 音视频通信原理
https://forum.rentsoft.cn/thr…
【OpenIM 原创】开源 OpenIM:轻量、高效、实时、牢靠、低成本的音讯模型
https://forum.rentsoft.cn/thr…