/NoneIM

:ocean: None-IM 分布式可横向扩展的IM系统

Primary LanguageJava

GitHub stars GitHub forks GitHub issues

None-IM是一款分布式可横向扩展的IM系统。

目前,None-IM处于开发阶段,已经实现以下功能:

  • 登陆,注册,私聊,群聊等IM基础功能
  • IM服务的集群--注册与发现
  • 中间porxy层负责Cilent的接入和IM服务的负载均衡
  • porxy层提供内网穿透能力

文件目录:

None-IM  目录
├─none-client         客户端
├─none-conmmon        公共代码
├─none-proxy          代理层
├─none-server         服务端

架构示意图:

none_jg.png

网络框架:

<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.6.Final</version>

自定义协议的序列化(serialize):

<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.29</version>

粘包和半包的原因使用WireShark分析

集群模式下消息转发的方案如何选择?

  • 服务器消息推送,针对在线和离线用户

  • Redis对用户信息的缓存

  • proxy实现内网穿透

  • zookeeper 实现服务的注册和发现

  • IM Server的集群(支持横向扩展)

  • rpc 实现跨server的通信