https://github.com/toomanysource/atreus
Atreus is a high-performance and high-concurrency short video microservice application server built with Kratos.
https://github.com/toomanysource/atreus
consul docker go kafka kratos makefile minio mysql nginx redis
Last synced: 5 months ago
JSON representation
Atreus is a high-performance and high-concurrency short video microservice application server built with Kratos.
- Host: GitHub
- URL: https://github.com/toomanysource/atreus
- Owner: toomanysource
- License: apache-2.0
- Created: 2023-08-18T05:55:21.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-22T07:18:29.000Z (almost 3 years ago)
- Last Synced: 2024-04-21T17:20:25.868Z (about 2 years ago)
- Topics: consul, docker, go, kafka, kratos, makefile, minio, mysql, nginx, redis
- Language: Go
- Homepage:
- Size: 5.3 MB
- Stars: 9
- Watchers: 2
- Forks: 10
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Atreus
[English](README.md) | [中文](README_cn.md)
**Atreus** is a high-concurrency and high-performance short video microservice application server built with **Kratos**.
- **high-performance**: Use redis for high performance and high speed reads at the memory level. Uses minio for millisecond upload storage.
- **high-concurrency**: Use Kafka as an efficient asynchronous message processing tool to improve system throughput and stability.
## Project Structure
Atreus is refer to [Kratos Layout](https://github.com/go-kratos/kratos-layout). The design concept is based on **DDD**.

```
❯ tree -L 1
.
├── LICENSE
├── README.md
├── README_cn.md
├── _data // store all services and component data.
├── api // `.proto` API files and the `pb.go` files which generated.
├── app // services implements
├── configs // configuration files for docker.
├── docker
├── third_party // third_party proto for api dependencies
├── pkg // third-party and universal packages
├── middleware // custom middleware
├── docs
├── Makefile
├── make
├── go.mod
└── go.sum
```
**App** structure
```
.
├── cmd // the entry point of the services
│ ├── main.go
│ ├── wire.go // wire library is for dependency injection
│ └── wire_gen.go
├── configs // configuration files for local development.
└── internal // business logic implements
├── biz // the layer for composing business logics.
├── conf // the structure for configuration parsing, generated from .proto file
├── data // for accessing data sources.
├── server // the creation of http and grpc instance.
└── service // the service layer which implements API definition.
```
## Tech Stack
- [Kratos](https://github.com/go-kratos/kratos)
- [MySQL](https://www.mysql.com/)
- [GORM](https://github.com/go-gorm/gorm)
- [Redis](https://github.com/redis/go-redis)
- [Kafka](https://github.com/segmentio/kafka-go)
- [Minio](https://github.com/minio/minio)
- [nginx](https://github.com/nginx/nginx)
- [consul](https://github.com/hashicorp/consul)
## Get Started
We build the project in Docker. You just run the following command:
```
make docker-compose-up
```
> Attation! You need change the value of field `endpointExtra` in minio configation to your local host ip. File in `/configs/service/publish/config.yaml`.
## How to Contribute
Read [issue](https://github.com/toomanysource/atreus/issues/103) first. You can view more details to [contribute](./docs/contribute).
## Contributors
- [alilestera](https://github.com/alilestera)
- [intyouss](https://github.com/intyouss)
- [mo3et](https://github.com/mo3et)
- [Dyamidsteve](https://github.com/Dyamidsteve)
- [meguminkin](https://github.com/meguminkin)
- [FirwoodLin](https://github.com/FirwoodLin)
- [Li1Mo0N](https://github.com/Li1Mo0N)
## License
Atreus is open-sourced software licensed under the [Apache License 2.0](./LICENSE).