用 Go 打造现代 IM 之特征

2023-09-18 11:29:46 +08:00
 wkong

本人职业生涯十多年基本都在开发 IM ,踩过许多坑,重构了无数个版本 (好代码不是设计出来的,是重构出来的)。

我们开源的 IM ,目前我认为最具现代化的 IM:

  1. 万人或千万人群支持
  2. 同一账号多设备登录
  3. 消息不丢,换设备实时同步
  4. 消息可编辑可回复
  5. 消息可以点赞
  6. 已读未读
  7. 在线状态
  8. 端对端加密(仅国外)

(其实现代 IM ,不仅仅是 IM 了,更像一个实时的论坛)

开源地址:

唐僧叨叨 IM ,高颜值,仿 TG https://github.com/TangSengDaoDao/TangSengDaoDaoServer

悟空 IM ,唐僧叨叨的通讯底层(自研消息 DB ) https://github.com/WuKongIM/WuKongIM

4299 次点击
所在节点    程序员
45 条回复
TESTFLIGHT2021
2023-09-18 11:36:34 +08:00
缅北需要这个
0littleboy
2023-09-18 11:39:17 +08:00
遥遥领先于微信
wkong
2023-09-18 11:41:16 +08:00
@0littleboy 不敢不敢
imes
2023-09-18 11:51:32 +08:00
看了一下架构,这个对服务器的负载应该不低吧?尤其是用户量多于 10K ,同时活跃数大于 1K 的时候。
wkong
2023-09-18 11:53:37 +08:00
@imes 这个量基本没啥压力。
laoyutang
2023-09-18 12:11:40 +08:00
千万人的群聊,牛逼啊
sakuramanstein
2023-09-18 12:15:31 +08:00
牛🐮
hellomynameis
2023-09-18 12:18:05 +08:00
不如 Telegram
veike
2023-09-18 12:19:12 +08:00
万人的群聊应该没有办法正常聊天吧
hellomynameis
2023-09-18 12:20:06 +08:00
@veike 不至于,除非全都同时在线,常常人数越多的群在线人数比例就越低,不经常上线的死人越多
skiy
2023-09-18 12:21:20 +08:00
牛。先 star 。
hepin1989
2023-09-18 12:21:23 +08:00
小心点,国家不准有 500 人的群,别去踩缝纫机
wkong
2023-09-18 12:23:29 +08:00
@hepin1989 我们自己不运营应该没事吧。
lasuar
2023-09-18 12:27:10 +08:00
有没有 一键清除多久未上线的成员(时间可填)
lasuar
2023-09-18 12:27:38 +08:00
@lasuar 纠正:多久未活跃的群成员
wkong
2023-09-18 12:27:39 +08:00
@lasuar 没有
bctdg
2023-09-18 13:39:12 +08:00
大佬,能分享一下 IM 业务访问数据库的 workload 的具体分布吗?(比如写入的频率和读(或者扫表)的频率)
看代码是用的 BoltDB 做存储引擎?这个有啥讲究吗
danbai
2023-09-18 13:40:43 +08:00
@wkong #13 没见过之前有个大哥发的帮信罪嘛
fgwmlhdkkkw
2023-09-18 13:42:23 +08:00
@bctdg boltdb 说 go 写的,应该只是为了方便吧,毕竟 sqlite3 需要 cgo
wkong
2023-09-18 13:44:39 +08:00
@bctdg 通讯层会将消息推送一份到业务层,业务层目前是分表存储了消息(业务层存与不存,通讯层都会存储消息)

BoltDB 主要是用来存储一些 key value 的元数据,比如用户的 uid 和 token ,消息存储是自研的 LSM 存储

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX