有这样一个需求,需要 app 的所有用户可以在公屏上进行聊天。因为我们选用的腾讯的即时通讯 im,腾讯那边的群组系统并不能满足我们的需求。app 的用户数量初步预计为>10000 人,腾讯方的群组系统,只有直播群是没有人数限制的,但是有一点,直播群是没有消息记录的。另外几个的群组虽然有历史消息,但是最高也只支持 6000 人的上限。想问问有没有只通过腾讯就能解决的方案?如果没有,其他的解决方案也可以
1
takemeaway 2020-12-24 16:34:01 +08:00
想象一下一万人在一个群里面,说一句话都被秒淹没。
|
2
aloyuu 2020-12-24 16:36:25 +08:00 via Android
1 万人同时说话,1 秒 1 万条
|
3
RudyS 2020-12-24 16:37:58 +08:00
discord ?
|
4
wr516516 2020-12-24 16:40:17 +08:00
这能聊起来吗?
|
5
k1z 2020-12-24 16:49:23 +08:00
电报不是这样的吗。 之前胴体好像 14W 人?
|
6
AoEiuV020 2020-12-24 16:52:56 +08:00
提到多人群就是电报了,几十万人群狂刷消息一点不卡,不知道怎么做到的,
|
7
opengps 2020-12-24 16:59:06 +08:00
自己能实现,但是这个并发规模延迟会很明显。任何一个人发言,都要对另外上万 tcp 连接下发消息
|
8
opengps 2020-12-24 17:02:30 +08:00 1
说电报不卡的,只是作为自己一端的感受。实际这么大规模的批量下发和延迟,本身就是个难以突破的问题,更何况各位用电报本身就有网络线路上的一层高延迟了
|
9
lucifeSe7En OP @takemeaway 只需要保证可以在群里说话就行,同时说话的情况先不考虑
|
10
jhiiii 2020-12-24 17:45:13 +08:00
1, 反过来,app 去后端拉。 一边推一边拉
or 2,N 个小群组组成一个大群组 |
11
janus77 2020-12-24 17:47:05 +08:00
电报实现了,但是具体技术就不是我能知道的了 属于商业机密吧
|
12
liian2019 2020-12-24 17:48:51 +08:00
如果是 java 的话 ,推荐 netty
|
13
annielong 2020-12-24 17:51:21 +08:00
光看百人的 qq 群同聊刷新的 都快看不出来了,感觉电报应该没有全部显示
|
14
XiLingHost 2020-12-24 17:51:37 +08:00
要不然试试用 xmpp 的 muc ?搞个 ejabberd 集群试试
|
15
kiracyan 2020-12-24 17:54:11 +08:00
感觉是个伪需求 1W 人同时在线聊天 想想就可怕
|
16
Tink 2020-12-24 18:21:35 +08:00 via Android
直播啊
|
17
Tink 2020-12-24 18:21:44 +08:00 via Android
弹幕
|
18
oneonesv 2020-12-24 18:24:03 +08:00
打电话给腾讯销售给你提高上限
|
19
rimutuyuan 2020-12-24 18:24:39 +08:00
对,直播弹幕,像 pdd 开播那天都卡死了
|
20
HeiHeiDe 2020-12-24 18:29:00 +08:00 via iPhone
直播
|
21
coderxy 2020-12-24 18:37:18 +08:00
这种全服的就是可以用聊天室啊,在线就收到,不在线就收不到呗。 或者想的简单一点,用 http,发消息就自己写到数据库里,然后所有在线用户每隔 1S 拉一下最新消息,也能实现。
|
22
vizee 2020-12-24 18:37:31 +08:00
用腾讯直播方案,自己再写一个服务端收集直播间消息,给客户端查历史消息用就行了
|
23
firefox12 2020-12-24 18:44:25 +08:00
14 万用户 又不是都在线, 消息都在内存里,拉起来很快的,毫无难度。不去实现这种需求是 因为这种需求跑起来根本毫无体验。我能开发出 350 公里的车,谁能开?舒马赫吗?卖给谁呢? 所以谁去造这种车?
|
24
dcty 2020-12-24 18:53:11 +08:00
腾讯方的群组系统,只有直播群是没有人数限制的,但是有一点,直播群是没有消息记录的。
======================================================= 用户发送消息的时候往自己的服务器发一份。 另外,消息分发肯定要有策略的,考虑极端情况,一秒内,10000 人都发了消息,客户端接收这么多消息并且进行上屏渲染滚动,手机会成为暖手宝的。 |
25
duxiansen 2020-12-24 18:59:23 +08:00
之前不都是吐槽微信群人数限制的太少了,tg 都能支持几十万人,看前面评论,风向咋变了
|
26
Lemeng 2020-12-24 19:18:19 +08:00
这样的大群,没意义,两千人的群,还能接受,平日都会信息淹没。人说,群里和你说了,可真没看到,除非是 @过‘才能收到
当然如果僵尸账号多的话,就另当别论了 |
27
dimlau 2020-12-24 19:49:14 +08:00
|
28
laminux29 2020-12-24 23:08:02 +08:00
服务器倒是没什么难度,毕竟才万人,从平时的经验来看,会踊跃发言的人很少。
但问题是,客户端能否扛得住压力,而且客户端掉线后,还要拉历史记录,压力全在客户端了。 这个问题就转化为:当客户端性能不足时,如何取舍业务,来优化用户体验。 |
29
clayyj1210 2020-12-24 23:38:52 +08:00
@laminux29 服务器倒是没什么难度。。。信息扩散很恐怖。
|
31
westoy 2020-12-24 23:49:03 +08:00 1
分布式 MQ + P2P 广播 + 客户端去重
问题是鹅厂都主动规避的业务场景, 你们为啥头铁.... |
32
wzzzx 2020-12-24 23:56:07 +08:00
首先应该讨论一下需求的合理性
|
33
Maboroshii 2020-12-24 23:58:12 +08:00
作为开发还是讨论一波,虽然楼主问的是腾讯的方案。
客户端当然是要分页拉消息,永远只拉取最新的 n 条新消息然后根据需要往回读。 服务器就先存储后转发就行。 |
34
kenanremix 2020-12-25 00:04:59 +08:00 via iPhone
网易的可以,上家公司群里 4w 人 都可以说话
|
35
dorothyREN 2020-12-25 00:13:03 +08:00
telegram 群支持 20w 人
|
36
yanqiyu 2020-12-25 00:32:44 +08:00
telegram 大概没问题,但是看起来不保证收到消息先后顺序在每个客户端一致
|
37
yfwl 2020-12-25 02:41:08 +08:00
这么多人聊天不行,要不弹幕吧 然后不拉历史消息或者留存最近的历史消息
|
38
Coolee 2020-12-25 08:48:47 +08:00 via Android
几百人的群体验已经很差了,一万人的体验。。。如果能限制 5 秒连续发两条
|
39
shunconf 2020-12-25 08:59:40 +08:00
telegram +1 但是你的考虑到所有的用户都有翻墙软件
|