/xzll-im

蝎子莱莱爱打怪 的 im开源项目

Primary LanguageJava

蝎子莱莱爱打怪 的 IM开源项目

与im结缘是在2022年,因为此类系统有足够大的挑战性,所以我对此如痴如醉,之前做过架构以及细节方面的设计,但是一直没有落地。不落地的设计不是好设计。所以有了这个项目。 目前项目处于前期阶段,后期一点点完善并将补上架构图和我能想到的所有设计细节!

想要设计一个好的im系统,是很有难度的,本项目将尽可能达到以下几点:

  • 高并发
  • 高可用
  • 高性能
  • 稳定可靠
  • 灵活好扩展
  • 可观测

想要实现上边的几点,将不可避免的需要集成很多中间件或框架,如下:

本项目涉及到的 【技术】

  • 已集成
  1. SpringBoot【项目搭建】✅
  2. Netty【长连接服务器】✅
  3. Spring Cloud Alibaba Nacos【配置中心】✅
  4. Dubbo【rpc调用,利用长连接做消息转发】✅
  5. zookeeper【暂时用处只是dubbo注册,后期如果没有其他用处可能移除,让dubbo注册到nacos】
  6. Redis【缓存,分布式锁】✅
  7. RocketMQ【解耦、削峰】✅
  8. Mybatis Plus【ORM】✅
  9. Mysql【数据存储】✅
  10. Spring Cloud GateWay 【网关】✅
  11. Oauth2 + Spring Security 【认证&鉴权】✅
  • 待集成
  1. Sentinel 【限流】
  2. docker+k8s【项目部署】
  3. prometheus + grafana【服务监控】
  4. SkyWalking 【链路追踪】
  5. ElasticSearch【聊天记录等搜索】
  6. Jmeter+python脚本【压测】
  7. redis集群部署
  8. elasticsearch集群部署
  9. canal 数据同步 mysql同步到es
  10. mysql分库分表
  11. 等等

本项目涉及到的 【功能点】

  1. 登录【已实现】✅
  2. 单聊【已实现】✅
  3. 群聊【准备采用写扩散模型】
  4. 消息送达ack【保证消息可靠不丢失】
  5. 消息有序性【通过消息id来实现】
  6. 撤回
  7. 已读
  8. 离线消息【push+pull】
  9. 最近会话
  10. 音视频,位置,语音,图片消息
  11. 直播
  12. 等...

其他细节待补充,完善中 ~ 。