默认

跟着源码学IM(十):基于Netty,搭建高性能IM集群(含技术思路+源码)

查看数: 123383 | 评论数: 15 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-01-18 00:30

正文摘要:

本文原题“搭建高性能的IM系统”,由作者“刘莅”授权即时通讯网整理和发布,内容有修订和改动,作者公众号:“漫漫技术路”。为了尊重原创,如需转载,请联系作者获得授权。 1、引言 相信很多朋友对微信、QQ等聊 ...

评论

Delicate 发表于 5 个月前
引用:crazyerror 发表于 2022-06-24 07:15
你好请教一下入伙某个节点挂掉之后,是否也就不能消费redis中的队列消息,导致这个消息一直不能分发下去呢 ...

消息应该会存储到数据库吧,用户会连接到别的server,上线了不是重新拉取消息吗,redis只是用于在线推送,这相当于离线消息呗,怎么会一直不能分发呢
JackJiang 发表于 2 年前
引用:zyxelva 发表于 2022-10-28 21:19
我想到的是:
1.分布式缓存,存储了(userID,NettyServer);
2.若接收人对应的NettyServer不在此Serve ...

        嗯嗯
zyxelva 发表于 2 年前
引用:JackJiang 发表于 2022-05-13 16:41
你说到点子上了,当用户量真的很大的时候,这确实会成为单点,所以类似这种架构是没法做到无限扩容集群的 ...

我想到的是:
1.分布式缓存,存储了(userID,NettyServer);
2.若接收人对应的NettyServer不在此Server,
2.1.一种方式是http调用NettyServer转发消息接口;
2.2. 一种是封装目标netty server的ip,port为RPC.
JackJiang 发表于 2 年前
引用:crazyerror 发表于 2022-06-24 07:15
你好请教一下入伙某个节点挂掉之后,是否也就不能消费redis中的队列消息,导致这个消息一直不能分发下去呢 ...

按照这种架构,是有可能的。。。
其实这些所谓的集群,绝大多数都是假集群,用来学习参考一下可以,真的要直接用,几乎是不可能的
crazyerror 发表于 2 年前
你好请教一下入伙某个节点挂掉之后,是否也就不能消费redis中的队列消息,导致这个消息一直不能分发下去呢?
JackJiang 发表于 2 年前
引用:feilueze 发表于 2022-05-13 14:38
* Jack Jiang点评:上述集群方案中,Redis既作为在线用户列表存储中心,又作为集群中不同IM长连接实例的消 ...

你说到点子上了,当用户量真的很大的时候,这确实会成为单点,所以类似这种架构是没法做到无限扩容集群的。
其实市面上你看到的声称支持集群的多数都是这样实现的。。。但搞技术的看到集群两个字就像打了鸡血一样,管它真的假的,但没有不行,你懂的
feilueze 发表于 2 年前
* Jack Jiang点评:上述集群方案中,Redis既作为在线用户列表存储中心,又作为集群中不同IM长连接实例的消息中转服务(此时的Redis作用相当于MQ),那Redis不就成为了整个分布式集群的单点瓶颈了吗?

@ 如果redis用了分片  或集群  这个还会成为瓶颈吗?
JackJiang 发表于 2 年前
引用:ink 发表于 2022-04-05 17:24
我之前实现了一个单机的基于netty的IM,现在想弄一个分布式的,打算按照文章的思路,用Kafka来做服务器集群 ...

你可以先实现了再说,im这种技术不标准,每个人的实现方式都不一样,别生搬硬套理论就好,够用就行了
ink 发表于 2 年前
我之前实现了一个单机的基于netty的IM,现在想弄一个分布式的,打算按照文章的思路,用Kafka来做服务器集群之前的桥梁,想问一下,分布式的情况,消息确认机制跟如何实现比较好,也是通过消息队列发送吗
wzx 发表于 2 年前
laile
elovezuo 发表于 2 年前
学习,不错不错
JackJiang 发表于 2 年前

不错不错
15805817394 发表于 2 年前
写得真好
JackJiang 发表于 2 年前
引用:WarriorFromLong 发表于 2022-01-18 20:27
点赞,,我去看看代码。

嗯呢
WarriorFromLong 发表于 2 年前
点赞,,我去看看代码。

返回顶部