IM聊天系统

1 简介

git地址 https://github.com/Bannirui/ekko.git

聊天系统,包含用户管理和用户通信,支持集群部署。

2 技术栈

框架\中间件\组件 角色\功能
SpringBoot 项目脚手架
Dubbo RPC通信
Proto 序列化\反序列化
MySQL 用户信息存储
Redis 作为数据库使用,持久化不敏感
ZooKeeper 使用会话临时节点\监听机制
Netty Socket通信

3 收获

  • 工作中已经好久没有从0开始搭建项目,尽量将常用技术组件都融合在一个项目的搭建中,出发点就是尽可能多的整合主流技术。甚至在搭建项目过程中也遇到了一些问题,也是当场查阅官网文档或者Git上源码的samples,及时补充记忆漏洞。
  • 之前学习ZK源码的时候,其作者实现各个组件,诸如限流器\会话管理器\发送器\接收器\FLE选举算法…等等,无一例外为了突出==器==的作用,及线程保活,要么是将其封装为一个线程任务,要么将其派生为线程,然后通过队列的生产者\消费者模型支撑线程模型的调度。在项目中也尽可能使用这样的抽象方式。
  • 以前写netty的时候不知所以,学习过一次源码之后,虽然写相同的业务代码,但是整体的感受会有一些不同,会更放心的写逻辑功能,也比较清晰的知道数据流。
  • 在学习过Redis源码之后,即使依然使用一直使用的String结构,自己也会在使用过程中回忆编码实现,感叹作者对内存吝啬的那种优雅处理手段。

IM聊天系统
https://bannirui.github.io/2023/04/26/IM聊天系统/
作者
dingrui
发布于
2023年4月26日
许可协议