圈木云科技
首页
  • 快速开始

    • k8s环境搭建
    • golang微服务版本
    • php环境搭建
    • vue前端技术说明
    • uniapp混合开发介绍
    • 压测报告
    • 错误代码
  • IM服务

    • 简介
    • 快速开始
    • 错误代码
  • 流媒体服务

    • 简介
    • 快速开始
    • 错误代码
教程
  • 01.直播app演示
  • 02.陪玩语聊app演示
  • 03.IM聊天交友app演示
  • php接口文档
  • golang接口文档
  • IM接口文档
  • 流媒体接口文档
  • 源站接口文档
  • 问题反馈
  • 项目问题
  • 异常问题
  • 功能问题
  • 名词解释
  • 关于
  • 谁在用
  • 捐赠列表
  • 更新记录
GitHub (opens new window)

qmcloud

首页
  • 快速开始

    • k8s环境搭建
    • golang微服务版本
    • php环境搭建
    • vue前端技术说明
    • uniapp混合开发介绍
    • 压测报告
    • 错误代码
  • IM服务

    • 简介
    • 快速开始
    • 错误代码
  • 流媒体服务

    • 简介
    • 快速开始
    • 错误代码
教程
  • 01.直播app演示
  • 02.陪玩语聊app演示
  • 03.IM聊天交友app演示
  • php接口文档
  • golang接口文档
  • IM接口文档
  • 流媒体接口文档
  • 源站接口文档
  • 问题反馈
  • 项目问题
  • 异常问题
  • 功能问题
  • 名词解释
  • 关于
  • 谁在用
  • 捐赠列表
  • 更新记录
GitHub (opens new window)
  • 简介
    • 技术栈
    • 后台界面
    • 架构图
    • 代码目录说明
    • 启动服务
    • CURL调用
    • 演示
    • 联系方式
    • 参与贡献
  • 快速开始

  • IM服务

  • 流媒体服务

  • 指南
qmcloud
2021-09-20
目录

简介

圈木云直播

自主研发的高性能直播语聊系统

版本说明

  • php版本: ThinkPHP + vue+elementUI。
  • golang版本: k8s+微服务+vue+elementUI

# 技术栈

  • goim :基于B站IM架构,golang分布式IM设计。
  • 流媒体服务器 :golang开发的高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
  • webrtc :Meetecho优秀的通用WebRTC服务器(SFU);
  • MongoDB :云时代构建的基于文档的分布式数据库;
  • Redis:内存中的数据结构存储,用作数据库,缓存和消息代理;
  • kafka :队列 群聊,私聊,消息通知等。
  • Coturn :TURN和STUN Server的开源项目;
  • Nginx :高性能负载平衡器,Web服务器和有HTTPS / Quiche和Brtoli支持的反向代理;
  • K8s集群+docker:用于构建、部署和管理容器化应用程序的平台。
  • 后端: php8.0 + ThinkPHP + ElementUI | golang版 + Vue + ElementUI
  • 移动端: 原生开发版 | uniapp混合开发版

# 后台界面

vue界面1

vue界面2

# 架构图

# 代码目录说明

├── ergo
│   ├── app  // app代码
│   ├── backend // 后台接口,rpc
│   ├── backendweb // 后台vue页面代码
│   ├── script // 数据库脚本,简化的kubernetes部署脚本
│   ├── .gitignore // git控制忽略文件
│   ├── LICENSE // LICENSE文件,使用的是MIT LICENSE
1
2
3
4
5
6
7

开发模式

本项目使用的是微服务开发,api (http) + rpc(grpc) , api充当聚合服务, 复杂、涉及到其他业务调用的统一写在rpc中,如果一些不会被其他服务依赖使用的简单业务, 可以直接写在api的logic中

网关

nginx做网关,使用nginx的auth模块,调用后端的backend服务统一鉴权,业务内部不鉴权, 如果涉及到业务资金比较多也可以在业务中进行二次鉴权。 这块原理基本一样,可以自行替换成apisix、kong等

日志

关于日志,统一使用filebeat收集,上报到kafka中, logstash把kafka数据源同步到elasticsearch中, 再通过kibana进行分析处理展示等。

监控

监控采用prometheus,只需要配置到k8s就可以了,这里可以看项目中的配置

链路追踪

默认jaeger、zipkin支持,只需要配置到k8s就可以了,这里可以看项目中的配置

消息队列

这里使用可kq,kq是基于kafka做的高性能消息队列

延迟队列、定时任务

延迟队列、定时任务本项目使用的是asynq , google团队给予redis开发的简单中间件, asynq也支持消息队列,你也可也把kq消息队列替换成kafka

  • https://github.com/hibiken/asynq (opens new window)

分布式事务

分布式事务使用的是dtm,单节点每秒1W条事务,平常抢购秒杀足够应付了。

# 启动服务

$ go run admin.go -f etc/admin.yaml
Starting server at 0.0.0.0:8888...
1
2

# CURL调用

$ curl -i -X GET http://localhost:8888/api/order/get/1
HTTP/1.1 200 OK
Content-Type: application/json
Date: Sun, 07 Feb 2021 03:45:05 GMT
Content-Length: 30

1
2
3
4
5
6

# 演示

⨳ 后台管理:http://live.onionnews.cn (opens new window) 账号:admin 密码:admin

注意

IOS需要提供UUID:手机通过safari浏览器打开h5页面获取UDID -https://www.yunedit.com/udid (opens new window)

# 联系方式

QQ:407193275 【请备注好信息,否则不加】 微信:BCFind5 【请备注好信息,否则不加】 TG:@qmcloud 【回复较慢】

# 参与贡献

贡献指南
Last Updated: 2024/11/16, 10:54:20
php环境部署

php环境部署→

Theme by Vdoing | Copyright © 2022-2025 Copyright © 2021-2040 Quanmu. All rights reserved. 圈木云科技 | 琼ICP备2022006049号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式