用Go语言打造支持同时10万人在线的IM系统
一、为什么要学这个课
- 10万人(单机并发10w人)
- IM系统
- IM产品用户对性能和体验感
- 需要具备迅速响应突发事件的能力
- 物联网要求实时通信,IM
实时推送
技术的典型代表
二、这个课能学到什么
1、IM基础功能
- IM发送文字、表情包、图片
- IM发送语音、视频
- 扩张IM消息实现红包、表单等(自身业务扩张)
2、如何实现并发及性能调优
- wbsocket 使用
- golang并发优化工作(有人写的代码支持1w个并发,有的人写的代码支持10w个并发)
3、分布式部署
- 分布式部署方案
- 分布式部署实战
三、IM聊天功能总结
IM基础功能
如何实现并发及性能调优
分布式部署
四、整个应用功能展示
- 文字消息展示
- 图片消息展示及小图标展示
- 语音消息展示
- 扩张消息展示(自定义消息)
- 群聊消息展示(注:语音消息浏览器没有开发http,故发送不出去语音消息)
- 个人中心展示
前端使用vue+mui 后端使用go语言实现
五、整个应用所使用的技术栈
1、前端技术
- h5:ajax/获取音频/webscoket发送消息
- vue制作单页app
- mui/css3等
2、后端技术
- 强大的webscoket组件
- channel/goroutine
- templete技术
3、系统构架
- 反向代理Nginx
- 消息总线MQ/Redis
- 协议Udp/Http2
六、课程安排
- 需求分析10%(将一些表现抽象成具体实现的模块,比如说:发送文字、发送图片可以抽想成发送模块)
- 重点难点20%(比如:前端怎么获取语音消息、怎么异步发送图片、后端怎么进行webscoket转发信息,怎么进行群发呢)
- 功能实现60%(大量代码,对go语言功能是有要求的)
- 上线部署10%(编写脚本实现智能发布)
七、学习建议
1、关于后端
- 对golang有兴趣(兴趣是最大的老师,兴趣也是最有效果的老师,你对go感兴趣,那你学习起来更加有冲劲 )
- 有golang语法基础(怎么定义一个变量,怎么定义一个结构体,怎么定义一个函数,有了这个基础,学习起来就会轻松很多)
2、关于前端
- 具备JS基础
- 可以了解vue/mui框架
2、关于学习方法
- 学以致用、目标驱动最有效果(日清日结)
- 举一反三,触类旁通(今天讲webscoket实现IM,你可以实现拍卖,无人售货机等实时通信功能)