my-im
是一款基于netty+kafka+redis+zookeeper
实现的分布式即时通讯系统
。实现了群聊、私聊、当前在线用户统计等功能,同时可以很方便水平扩展。
技术栈 | 用处 |
---|---|
netty | 网络通信框架 |
kafka | 不同服务器间消息转发 |
redis | 统计在线用户 |
zookeeper | 分布式服务注册与发现 |
IM
中的各个组件均采用SpringBoot
构建。- 采用
Netty
构建底层通信。 Redis
存放在线用户与所连服务器的信息。Zookeeper
用于im-server
服务的注册与发现。Kafka
用于 不同im-server
之间的消息转发
- 群聊
- 私聊
- 使用
Google Protocol Buffer
高效编解码 - 根据实际情况灵活的水平扩容、缩容
- 服务端自动剔除离线客户端
- 客户端自动重连
- 聊天记录查询
- 协议支持消息加密
- im-client —— 客户端
- im-common —— 公共工具包,主要存放各个中间件工具类
- im-server —— 服务端
数据长度--包类型--发送者ID--接收者ID--Data
在此之前请确保 zookeeper、redis、kafka运行
先启动im-server,再启动im-client
客户端控制台输入聊天信息即可
首先输入ls
命令可查看在线用户(暂时需要排除前缀,比如im_123
,用户id为123
,而不要输入im_123
)
然后以为用户的id:信息
的格式发送消息即可