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聊天系统/