用Go语言打造支持同时10万人在线的IM系统

一、为什么要学这个课

  1. 10万人(单机并发10w人)
  2. IM系统

WX20230219-094150@2x.png

  • IM产品用户对性能和体验感
  • 需要具备迅速响应突发事件的能力
  • 物联网要求实时通信,IM实时推送技术的典型代表 1、为什么要学这个课 - 图2

二、这个课能学到什么

1、IM基础功能

  • IM发送文字、表情包、图片
  • IM发送语音、视频
  • 扩张IM消息实现红包、表单等(自身业务扩张)

2、如何实现并发及性能调优

  • wbsocket 使用
  • golang并发优化工作(有人写的代码支持1w个并发,有的人写的代码支持10w个并发)

3、分布式部署

  • 分布式部署方案
  • 分布式部署实战

三、IM聊天功能总结

  • IM基础功能

  • 如何实现并发及性能调优

  • 分布式部署

四、整个应用功能展示

  1. 文字消息展示
  2. 图片消息展示及小图标展示
  3. 语音消息展示
  4. 扩张消息展示(自定义消息)
  5. 群聊消息展示(注:语音消息浏览器没有开发http,故发送不出去语音消息)
  6. 个人中心展示

前端使用vue+mui 后端使用go语言实现

五、整个应用所使用的技术栈

1、前端技术

  1. h5:ajax/获取音频/webscoket发送消息
  2. vue制作单页app
  3. mui/css3等

2、后端技术

  1. 强大的webscoket组件
  2. channel/goroutine
  3. templete技术

3、系统构架

  1. 反向代理Nginx
  2. 消息总线MQ/Redis
  3. 协议Udp/Http2

六、课程安排

  1. 需求分析10%(将一些表现抽象成具体实现的模块,比如说:发送文字、发送图片可以抽想成发送模块)
  2. 重点难点20%(比如:前端怎么获取语音消息、怎么异步发送图片、后端怎么进行webscoket转发信息,怎么进行群发呢)
  3. 功能实现60%(大量代码,对go语言功能是有要求的)
  4. 上线部署10%(编写脚本实现智能发布)

七、学习建议

1、关于后端

  1. 对golang有兴趣(兴趣是最大的老师,兴趣也是最有效果的老师,你对go感兴趣,那你学习起来更加有冲劲 )
  2. 有golang语法基础(怎么定义一个变量,怎么定义一个结构体,怎么定义一个函数,有了这个基础,学习起来就会轻松很多)

2、关于前端

  1. 具备JS基础
  2. 可以了解vue/mui框架

2、关于学习方法

  1. 学以致用、目标驱动最有效果(日清日结)
  2. 举一反三,触类旁通(今天讲webscoket实现IM,你可以实现拍卖,无人售货机等实时通信功能)