# 《分布式IM系统》开篇:我要手把手教你搭建并研发一套分布式IM即时通讯系统

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/14WPONMB1 (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★☆☆☆☆
  • 本章重点:主要介绍在接下来的一段时间中,冰河要带着大家从零开始搭建并研发一套分布式IM即时通讯系统。
  • 课程视频:https://t.zsxq.com/14WPONMB1 (opens new window)

大家好,我是冰河~~

今天,正式通知大家一件事情:又到了启动新项目的时候,这也是 冰河技术 知识星球继 Seckill秒杀系统 (opens new window) 项目后,又一个高并发实战项目。星球其他项目与专栏,大家可移步到冰河的个人站点:https://binghe.gitcode.host (opens new window) 进行查看。


那这次又是怎样的一个高并发项目呢?没错,这次就是大家期待已久的分布式IM即时通讯系统,在分布式IM即时通讯系统中,我们会实现:单聊、群聊、图片、文件、语音、视频、历史消息、消息已读、未读、添加好友、删除好友、创建群、加群、退出群、查看群成员、群公告、修改群备注等一系列完整的功能,更会实现对接OpenAI大模型服务,让你深度掌握对接OpenAI大模型服务的流程和落地实现。

文末领券加入冰河技术知识星球更实惠,也有更多奖品等大家来拿,名额不多,先到先得。

# 一、项目介绍

本项目是一个基于前后端+Dev-Ops的分布式IM即时通讯实战项目,基于VUE+SpringBoot+各种分布式技术栈+OpenResty+Swarm+Portainer+Grafana+Prometheus+Docker服务,集需求、架构设计、开发、部署、上线、运维、监控于一体的分布式IM即时通讯系统。

# 1.对比网上系统

那这个系统跟网上的IM系统有啥区别呢?网上大部分IM系统基本都是单机的,无法支持分布式扩展,并且是一个个demo,根本无法真正拿到线上环境运行,更无法真正投产使用。

这可能是你职业生涯中最具含金量的一次点击,点击【查看更多 (opens new window)】了解冰河技术知识星球更多硬核技术和优质项目。

虽然能够通过网上demo级别的IM项目学到一些即时通讯相关的知识,但是不够全面,也不够系统化,出现问题后,也没有人会为你解答,更没有人带你去全面、系统化的学习,到头来,只是学了个demo,仅此而已。


这次咱们启动的分布式IM即时通讯系统,首先,从项目的名称上就可以看出来,它是支持分布式的,可以在线上环境无限扩展,并且考虑到真实环境下即时通讯的需求,冰河会将整个分布式IM即时通讯系统分为五大部分:即时通讯后端服务、大后端平台、SDK接入服务、OpenAI接入服务、大前端UI。


如果小伙伴们公司或个人项目有接入即时通讯的需求,可以无缝对接SDK即可快速接入IM即时通讯功能。


可以这么说,在冰河技术知识星球,小伙伴们不仅可以全面、系统化的学习到一个可以在线上真实环境运行的分布式IM系统,还能基于SDK接入服务快速将自己公司或者个人项目接入IM即时通讯功能,这就是项目的高度可扩展的一种体现。

另外,分布式IM即时通讯系统还会实现对接OpenAI大模型服务,让你深度掌握对接OpenAI大模型服务的流程和落地实现。

# 2.项目工程


# 3.服务监控


这是秒杀系统压测过程中的JVM监控图,后续也会将分布式IM即时通讯系统接入进来。

项目只有部署到真实环境压测,真实运行起来让用户使用,才能发现项目中的细节问题,而这些,仅仅靠学习demo,写demo项目是永远无法被发现的。

# 二、能学到哪些技术?

  • 前端:基于VUE开发完整的分布式IM前端页面,实现各项功能开发。
  • 前端:熟练掌握跨域请求接口的实现方式与开发技巧。
  • 前端:熟练掌握WebSocket实现即时通讯的方案和落地实现,并能够掌握断线重连、心跳等实现。
  • 前端:熟练掌握Git、GitCode,对代码工程的管理、新建代码分支、灵活切换代码分支、拉取与推送代码、合并代码等。
  • 后端:熟练掌握基于DDD领域驱动设计开发项目,并能够基于DDD快速搭建后端服务。
  • 后端:熟练掌握SpringBoot、MyBatis、Mybatis-Plus等开发框架的使用,并对源码有深度的理解,能够基于源码扩展相应的功能。
  • 后端:熟练掌握Netty WebSocket与TCP网络编程,掌握Netty的内存模型、IO多路复用、ChannelPipeline等。
  • 后端:熟练掌握项目中使用的多种设计模式,并能够将设计模式灵活应用到自身实际项目中。
  • 后端:熟练应用各种分布式技术栈,包括但不限于:SpringCloud、SpringCloud Alibaba、Dubbo、Nacos、RocketMQ、ShardingSphere、ELK(Elasticsearch、Logstash、Kibana)。
  • 后端:掌握将真实场景需求转化成架构设计的方法论,架构设计原则、系统边界划分与维护。
  • 后端:熟练掌握单元测试、JMeter压力测试工具,持续交付高质量代码。
  • 后端:合理打印日志,熟练掌握日志可视化治理的方案,掌握分布式系统下的链路追踪方案。
  • 后端:熟练掌握Git、GitCode,对代码工程的管理、新建代码分支、灵活切换代码分支、拉取与推送代码、合并代码等。
  • 运维:熟练掌握Docker的部署与各种Docker命令,掌握Docker前后端镜像的构建。
  • 运维:熟练掌握Git、GitCode,对代码工程的管理、新建代码分支、灵活切换代码分支、拉取与推送代码、合并代码等。
  • 运维:熟练掌握OpenResty的配置与运维,并能够基于OpenResty配置长链接转发、配置SSL与WSS协议等。、
  • 运维:熟练掌握使用Grafana、Prometheus对系统进行监控,包含:JVM、服务器内存、磁盘、IO、数据库、中间件、应用服务(QPS、TPS、TTL、访问量等)的完整链路监控。

冰河会为分布式IM即时通讯系统录制完整的视频,将整个系统的需求、设计、思考、落地实现、编码等录制成视频,供大家更好的学习,掌握更深层次的知识、技术以及思考的过程。

# 三、适应人群

本项目来自于真实互联网业务需求,从零开始,以渐进式的方式,经过需求分析、架构设计、编码实现、部署上线、运维监控等全流程实现,最终交付一个可在真实场景运行的、支持对接OpenAI大模型的分布式IM即时通讯高并发系统项目。

  • 校招、社招没什么拿的出手的项目,投出的简历石沉大海。
  • 想自己开发一套IM即时通讯系统,但不知从何下手,网上的IM系统不成体系,无法提升自己。
  • 一直在小公司做CRUD,并发编程没接触过,更别提如何开发高并发实际项目了。
  • 公司项目没什么并发,在线人数也不多,学了很多并发编程相关的知识不知道怎么用。
  • 学了很多并发编程的知识,也知道一些概念,能说出一些简单的方案,但是没实际项目经验。
  • 自我感觉掌握了一些高并发编程的技术方案,但是如果真正做项目时,还是不知道如何下手。
  • 简历上写了熟悉并发编程,在面试过程中,面试官一般会问高并发项目实战问题,不知道怎么回答。
  • 在大厂工作多年,参与了一些系统的建设与研发,但是也没机会参与高并发、大流量的系统的整个建设过程。
  • 其他问题。。。

# 四、系统大纲

分布式IM即时通讯系统不同于其他项目,在大纲层面与其他系统有所区别,总体上暂时会分成如下几部分(可能会随着系统的不断完善有所调整):需求设计、后端服务、SDK接入服务、大后端平台、OpenAI大模型接入服务、大前端UI、部署与监控等几部分。

  • 第1部分:需求设计
    • 第1节:为何要学习分布式IM即时通讯系统
    • 第2节:分布式IM即时通讯系统的目标与挑战
    • 第3节:...
  • 第2部分:架构设计
    • 第1节:总体方案目标与架构设计
    • 第2节:分布式IM即时通讯系统模型设计
    • 第3节:...
  • 第3部分:后端服务
    • 第1节:后端服务的设计
    • 第2节:...
  • 第4部分:SDK接入服务
    • 第1节:SDK接入服务的设计
    • 第2节:...
  • 第5部分:大后端平台
    • 第1节:大后端平台功能设计
    • 第2节:...
  • 第6部分:OpenAI大模型接入服务
    • 第1节:对接ChatGPT流程设计
    • 第2节:对接ChatGPT功能实现
    • 第3节:...
  • 第7部分:大前端UI
    • 第1节:Web页面工程搭建与初始化
    • 第2节:Web页面结构化设计
    • 第3节:...
  • 第8部分:部署与监控
    • 第1节:Docker环境搭建
    • 第2节:Portainer环境搭建
    • 第3节...

整体课程采用视频+小册+源码+1v1问答形式,加入星球即可加入专属交流群,并且星球提供了简历优化服务,还为大家准备了1000+精美简历模板,助力小伙伴们升职加薪,让你在面试过程中更具竞争力。

# 五、如何学习

分布式IM即时通讯系统是冰河技术知识星球诸多项目中的其中一个,还有很多其他项目,例如:简易商城脚手架项目、Seckill秒杀系统、高并发设计模式等等,还有开源项目、技术小册、1000+精美简历模板与面试技巧等(加入星球后直戳链接:https://t.zsxq.com/140wNNbz9 (opens new window))。详情可以点击放大下图进行查看。


如果你也想通过做实战项目来提升自己的编程内功、架构能力和业务水平,可以加入【冰河技术】知识星球,加入后即可学习往期所有项目,也可以学习后续新开发的项目。今天加入的小伙伴,冰河为大家准备了福利。

  • 今天加入的前20名小伙伴,送冰河最新编写的《实战高并发设计模式》电子书,另外,送并发编程完整学习路线,1v1视频单独指导学习规划。
  • 留言点赞数最多的5名小伙伴送并发编程完整学习路线。

加入星球后,查看星球置顶消息,申请代码权限等。并且课程汇总里面有往期项目、课程专栏、学习路线等内容。

好了,今天就到这儿吧,我是冰河,我们下期见~~