{"id":15289008,"url":"https://github.com/qmcloud/momo","last_synced_at":"2025-05-14T18:05:33.458Z","repository":{"id":40643577,"uuid":"102508648","full_name":"qmcloud/momo","owner":"qmcloud","description":"php直播go直播,短视频,直播带货,语音聊天室,陪玩系统源码。","archived":false,"fork":false,"pushed_at":"2024-11-16T02:24:57.000Z","size":208377,"stargazers_count":968,"open_issues_count":11,"forks_count":398,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-05-13T14:21:42.650Z","etag":null,"topics":["goim","golang","kafka","nginx","rtmp"],"latest_commit_sha":null,"homepage":"https://www.onionnews.cn","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qmcloud.png","metadata":{"files":{"readme":"README-en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-05T17:07:06.000Z","updated_at":"2025-04-21T11:50:06.000Z","dependencies_parsed_at":"2023-01-24T04:31:58.882Z","dependency_job_id":"573c4817-37e0-449e-b46f-503dc8064dfd","html_url":"https://github.com/qmcloud/momo","commit_stats":null,"previous_names":["qmcloud/momo","double-baller/momo"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmcloud%2Fmomo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmcloud%2Fmomo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmcloud%2Fmomo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qmcloud%2Fmomo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qmcloud","download_url":"https://codeload.github.com/qmcloud/momo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198514,"owners_count":22030965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["goim","golang","kafka","nginx","rtmp"],"created_at":"2024-09-30T15:55:34.168Z","updated_at":"2025-05-14T18:05:28.450Z","avatar_url":"https://github.com/qmcloud.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"### Live streaming source code, short video, live streaming sales, game accompaniment, imitation heart, hunting game, TT voice chat, beauty appointment, accompaniment system source code open black, appointment source code\n\n----------------\n[简体中文](./README.md) | English\n\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://img.shields.io/badge/php-7.3-blue\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/golang-1.13-blue\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/gin-1.4.0-lightBlue\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/vue-2.6.10-brightgreen\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/element--ui-2.12.0-green\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/gorm-1.9.12-red\"/\u003e\n\u003c/div\u003e\n\n### Front: VUE + Android + IOS + Uniapp\n\n### Microservices ：\n\n- **Goim** ：the official website of Bilibili IM architecture\n- **Streaming Media Server** ： A streaming media server developed by Golang, supporting RTMP/WebRTC/HLS/HTTP FLV/SRT/GB28181\n- **webrtc** ： Meetecho is an excellent general-purpose WebRTC server (SFU).\n- **MongoDB** ：A document based distributed database.\n- **Redis**：In memory data structure storage used as a database, cache, and message broker.\n- **kafka** ：queue group chat, private chat, message notification, etc.\n- **Nginx** ：High performance load balancer, web server, and reverse proxy with HTTPS/Quiche and Brtoli support;\n- **K8S+Docker**：A platform for building, deploying, and managing containerized applications.\n- **admin panel**: php + vue + Element-UI  | golang + vue + Element-UI \n----------------\n\nblog：https://blog.csdn.net/u012115197/article/details/106916635\n\nGitee：https://gitee.com/baoyalive/baoyalive.git （history code backup）\n\nDemo ：[http://www.onionnews.cn/](http://www.onionnews.cn/)\n\n----------------\n\n### Technology Stack\n\n\n## php【Open Source】\n\n1. The web system provides page and interface logic.\n\n2. REDIS service provides caching and storage of dynamic data.\n\n3. MYSQL service provides storage for static data.\n\n4. Video services provide live streaming, roadside streaming, transcoding, storage, on-demand, and support for Tencent Cloud, Alibaba Cloud, Qiniu, and other self built streaming media servers\n\n5. Chat services provide live group chats, private chats, message notifications, etc.\n\n6. Backend framework: ThinkPHP framework.\n \n------------\n## Golang microservice architecture version [not open source]\n\n**Introduction to Microservices**\n\n1. Easily obtain stability that supports millions of daily active services\n\n2. Built in microservice governance capabilities such as cascading timeout control, current limiting, adaptive circuit breaker, and adaptive load shedding, without the need for configuration or additional code\n\n3. Microservice governance middleware can be seamlessly integrated into other existing frameworks for use\n\n4. Minimalist API description, one click generation of code for each end\n\n5. Automatically verify the legality of client request parameters\n\n6. A large number of microservice governance and concurrency toolkits\n\n**Golang microservice architecture diagram**\n\n![](https://github.com/DOUBLE-Baller/momo/blob/master/doc/doc.jpg?raw=true)\n\n**Code directory description**\n\n```\n├── ergo\n│   ├── app  \n│   ├── backend \n│   ├── backendweb \n│   ├── script \n│   ├── .gitignore \n│   ├── LICENSE\n```\n**Gateway**\n\n```\n\nNginx is used as the gateway, utilizing nginx's auth module to call the backend service for unified authentication. Internal authentication is not performed within the business, but if there is a significant amount of business funds involved, secondary authentication can be performed within the business.\n\nIn addition, many students think that nginx is not good at making gateways. The principle is basically the same, and they can replace it with apisix, kong, etc. on their own\n\n```\n\n**Development mode**\n\n```\n\nThis project uses microservice development, with API (HTTP)+RPC (GRPC). The API acts as an aggregation service, and complex and other business calls are uniformly written in RPC. If some simple businesses are not dependent on other services, they can be directly written in the logic of the API\n\n```\n\n**Log**\n\n```\n\nRegarding logs, they will be collected using Filebeat and reported to Kafka. Logstash will synchronize the Kafka data source to Elasticsearch, and then analyze, process, and display it through Kibana.\n\n```\n\n**Monitoring**\n\n```\n\nThe monitoring adopts Prometheus, which only requires configuration. You can refer to the configuration in the project here\n\n```\n\n**Link Tracking**\n\n```\n\nDefault Jaeger and Zipkin support, just configure it, you can check the configuration\n\n```\n\n**Message queue**\n\n```\n\nHere, kq is used, which is a high-performance message queue based on Kafka\n\n```\n\n**Delay queue, scheduled tasks**\n\n```\n\nDelay queue and scheduled tasks. This project uses Asynq, a simple middleware developed by the Google team for Redis. Asynq also supports message queues. You can also replace the KQ message queue with Kafka\n\n```\n\n**Distributed Transaction DTM**\n\n```\n\nDistributed transactions use DTM, with a single node processing 10000 transactions per second, which is sufficient for regular flash sales.\n\n```\n\n**K8S deployment**\n\n```\n\nEasy to use: Provides a visual web UI that greatly reduces the barrier to deployment and management of Kubernetes\n\nOn demand creation: Call cloud platform APIs to quickly create and deploy Kubernetes clusters with just one click\n\nOn demand scaling: Quickly scale Kubernetes clusters to optimize resource utilization efficiency\n\nOn demand patching: Quickly upgrade and patch Kubernetes clusters\n\nOffline deployment: Supports Kubernetes cluster deployment completely offline\n\nSelf repair: Ensuring cluster availability by rebuilding faulty nodes\n\nFull stack monitoring: provides event, monitoring, alarm, and logging solutions from Pod, Node to cluster\n\nMulti AZ support: Distribute Master nodes across different fault domains to ensure high availability of the cluster\n\nApp Store: Built in Apps App Store\n\nGPU support: Supports GPU nodes to assist in running applications such as deep learning\n\n```\n\n### Business cooperation (UI design, custom development, system refactoring, agency promotion, etc.)\n\n**WeChat**: BCFind5 \n\n**QQ**: 407193275 \n\n**TG**: @qmcloud\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqmcloud%2Fmomo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqmcloud%2Fmomo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqmcloud%2Fmomo/lists"}