# MsgGO
Golang Instant Messaging System
基于golang的分布式百万级即时通讯系统
#### 需求分析:
- 发送/接收
- 实现群聊
- 高并发=单机+分布式+弹性扩容
#### 需求拆分
- 实现简单功能 文字通讯
- 资源标准化编码
- 资源采集并标准化,转换为content/url
- 资源编码,最终目标拼接一个json消息体
- 消息体的可扩展性
- 兼容基础媒介入图片文字语音(URL/PIC/CONTENT/NUM)
- 能承接大量新业务,扩展不能对现有业务产生影响
- 红包/打卡/签到等本质是消息内容不一样
- 群聊的特殊需求
- 基础功能无区别
- 1条消息多个参与群聊的终端及时接收到
- 服务器流量计算
- 服务器负载分析
- A发送图片512K
- 100人同时在线接收512kb*100=50M
- 解决分析
- 使用缩略图
- 提供资源服务并发能力使用云服务(qos/alioss)
- 使用压缩消息体,发送文件路径而不是整个文件
- 高并发
- 单机并发性能最优
- 海量用户分布式部署
- 应对突发性事件弹性扩容 熔断 服务降级

// 消息体核心
```
type Message struct {
Id int64 `json:"id,omitempty" form:"id"` //消息id
Userid int64 `json:"userid,omitempty" form:"userid"`//发送用户
Cmd int `json:"cmd,omitempty" form:"cmd"`//群聊还是私聊
Dstid int64 `json:"dstid,omitempty" form:"dstid"` // 对端id or 群id
Media int `json:"media,omitempty" form:"media"` //消息样式
Content string `json:"content,omitempty" form:"content"` //消息内容
Pic string `json:"pic,omitempty" form:"pic"` //预览图片
Url string `json:"url,omitempty" form:"url"` //服务url
Memo string `json:"memo,omitempty" form:"memo"` //简单描述
Amount int `json:"amount,omitempty" form:"amount"` //和数字相关的
}
```
### IM系统架构

#### 网络结构

#### 单机优化
- Map
- 使用读写锁
- map不要太大
- 或者使用syncMap 安全的map
- 优化最大文件数
- 降低对Cpu资源的使用
- 降低Json编码频次
- 一次编码多次使用
- 降低IO资源使用
- 合并写数据库次数
- 优化对数据库读操作
- 能缓存就缓存
- 应用/资源服务分离
- 系统提供动态服务
- 文件服务迁移到oss
### 产品迭代
- v0.1
- 完成需求分析
- 完成技术选型
- 基础蓝图规划
- 技术可行性验证
- v0.2
- 服务根据需求拆分
- 用户服务
- 用户管理
- 消息服务
- 消息接发
- 消息管理
### v0.2 目录结构
```
├── auth 验证服务
│ ├── app_private_key.pem
│ ├── app_public_key.pem
│ ├── auth
│ ├── config
│ │ └── config.go
│ ├── config.json
│ ├── container
│ │ └── auth.go
│ ├── dbops
│ │ └── conn.go
│ ├── defs
│ │ ├── auth.go
│ │ ├── config.go
│ │ └── result.go
│ ├── execption
│ │ └── execptionBase.go
│ ├── main.go
│ ├── result
│ │ └── resultBase.go
│ ├── router
│ │ └── router.go
│ └── utils
│ ├── crypto.go
│ └── simpleTime.go
├── user 用户相关服务
│ ├── config 配置中心
│ │ ├── config.go
│ │ └── config.json
│ ├── container 控制器
│ ├── dbops db相关
│ │ ├── conn.go
│ │ └── defsModel
│ ├── defs 一些定义
│ │ ├── apidef.go
│ │ └── errdef.go
│ ├── exception 异常处理
│ │ └── baseException.go
│ ├── main.go
│ ├── result 返回消息
│ │ └── result.go
│ ├── router 路由层
│ │ └── router.go
│ ├── user
│ └── utils 工具库
│ └── easyutils
│ ├── crypto.go
│ ├── go.mod
│ ├── LICENSE
│ ├── README.md
│ ├── simpleTime.go
│ ├── tootl_test.go
│ └── uuid.go
└── ws 消息服务
├── config 配置中心
│ ├── config.go
│ └── config.json
├── dbops db相关
│ └── conn.go
├── defs 一些定义
├── main.go
├── router 路由层
└── utils 工具库
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于golang的分布式即时通讯系统详细文档+优秀项目+全部资料.zip

共58个文件
go:34个
pem:5个
xml:4个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉

温馨提示
【资源说明】 基于golang的分布式即时通讯系统详细文档+优秀项目+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论






























收起资源包目录
























































































共 58 条
- 1
资源评论

- 普通网友2025-03-12资源很实用,内容详细,值得借鉴的内容很多,感谢分享。

Yuki-^_^
- 粉丝: 3157
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 星搭小星 - AI微信小程序智能助手..zip
- 微信小程序富文本渲染引擎(1).zip
- 房地产全程运营及风险管理.ppt
- 医院预约挂号微信小程序、支付宝小程序、H5应用。.zip
- FDDLTE掉话优化指导书-R2.0.docx
- 微信小程序生活工具集合.zip
- 地下防水混凝土工程-secret.doc
- 给排水采暧燃气工程施工方案(Word.doc
- 《室外给水设计规范》(GB50013-2006)宣贯.ppt
- 某安置房工程监理规划.doc
- 供应商管理程序.doc
- 第13章拉普拉斯变换.ppt
- 调用摄像头加载到场景中代码.docx
- 微信小程序抽奖页面.zip
- 微信小程序商城(Java版).zip
- 微信小程序--github.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
