fly-im

module
v0.0.0-...-b3af538 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2024 License: Apache-2.0

README

fly-im介绍

在IM系统工作几年经验的学习。

该开源项目的目标是构建一个高性能的,高弹性的,可靠的分布式即时通讯系统。

并探索丰富的聊天场景。

目前还是一个粗糙的项目,有考虑不足的地方还望见谅😭。

功能

在强大的通讯系统的核心功能的支持下,可以支持丰富的业务。

  1. 多协议支持
    • TCP
    • Websocket
    • Quic
  2. 核心通讯能力:
    • 实时性:
    • 可靠性:
    • 一致性:
    • 高性能/高弹性:
  3. 丰富的聊天场景:在强大的核心通讯能力支持下,可以支持丰富的聊天能力,探索有趣的社交场景。
    • 好友/工作群:由群内成员邀请,才能加入(一般用于亲朋好友), 无需审批和同意,有群人数限制: WorkRoom
    • 社交群:可以通过搜索等,可以发起加群申请,管理员同意后才能加入(类似QQ群): CommunityRoom
    • 陌生人/会议群:创建后可以随意进出的群,不需要申请,有人数限制,支持历史消息存储, 一般用于陌生人社交: MeetingRoom
    • 直播群:创建后可以随意进出的群,不需要申请,没有人数限制,但是不支持历史消息存储,不对消息进可靠保证: LiveChatRoom
    • 万人大群:有一定限制的群,功能上和普通的社交群一样,优先级,并发数等, 暂时先这么做: LargeRoom
    • 已读/已收到回执:在发消息时支持可选。
    • 删除/撤回:
    • 支持自定义聊天内容:语音,视频,图片,表情等
    • 空间计算能力的探索:探索新的社交领域,会议,游戏等,需要灵感。。。
    • 多设备登录/消息漫游等
    • 音视频通话信令:基于通讯的传递音视频通话信令的能力。
    • ... 是否还有更多有趣的聊天场景可以补充。
  4. 完善的监控能力:
  5. 海量用户支持:亿级用户,亿级消息吞吐量。(也许吧)
  6. Webhook:在某些时机会调用业务方的API,以触发某些事件。
  7. 跨平台客户端:Rust/Go + Flutter. Flutter作为UI绘制,Rust/Go用于处理前端的业务逻辑。
  8. 为了支持各种自定义的需求,在核心架构不变下,尽可能的让各个模块都是可替换的,默认提供开箱即用的,还没想好怎么做.
    • 消息协议
    • 数据存储
    • Rpc实现
    • 消息队列实现
    • 各种聊天业务的实现

架构设计

架构文档

文档

设计文档

性能测试

性能测试

感谢

讨论区

目前计划放在B站,会以专栏的形式记录某些主题(可惜目前的等级还不能发专栏,需要水一段时间的经验). 大概会分为以下几个专栏:

  1. 架构设计
  2. 性能优化
  3. 代码质量
  4. 观察性建设
  5. 稳定性建设
  6. IM系统的未来
  7. 有趣的聊天形式

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL