Code Monkey home page Code Monkey logo

tailchat-server's Introduction

tailchat-server

启动开发服务器

cp .env.example .env
vim .env

编辑.env的配置为自己的

pnpm install # 安装环境变量
pnpm dev # 启动开发服务器

开发环境

强烈建议使用 Docker 初始化第三方开发环境, 隔离性更加好 并且无需复杂的安装配置。

mongodb

docker run -d --name mongo -p 127.0.0.1:27017:27017 mongo:4

redis

docker run -d --name redis -p 127.0.0.1:6379:6379 redis

minio

docker run -d \
  -p 127.0.0.1:19000:9000 \
  -p 127.0.0.1:19001:9001 \
  --name minio \
  -e "MINIO_ROOT_USER=tailchat" \
  -e "MINIO_ROOT_PASSWORD=com.msgbyte.tailchat" \
  minio/minio server /data --console-address ":9001"

服务端插件安装方式

安装所有插件

pnpm plugin:install all

安装单个插件

pnpm plugin:install com.msgbyte.tasks

单节点部署

docker-compose 一键部署

请确保已经安装了:

  • docker
  • docker-compose

在项目根目录下执行

docker-compose build # 需要编译
docker-compose up -d

运维

使用mongo工具进行管理

从docker中取出mongodb的数据

docker exec -it <MONGO_DOCKER_NAME> mongodump -h 127.0.0.1 --port 27017 -d <MONGO_COLLECTION_NAME> -o /opt/backup/
docker exec -it <MONGO_DOCKER_NAME> tar -zcvf /tmp/mongodata.tar.gz /opt/backup/<MONGO_COLLECTION_NAME>
docker cp <MONGO_DOCKER_NAME>:/tmp/mongodata.tar.gz ${PWD}/

将本地的备份存储到mongodb镜像

docker cp mongodata.tar.gz <MONGO_DOCKER_NAME>:/tmp/
docker exec -it <MONGO_DOCKER_NAME> tar -zxvf /tmp/mongodata.tar.gz
docker exec -it <MONGO_DOCKER_NAME> mongorestore -h 127.0.0.1 --port 27017 -d <MONGO_COLLECTION_NAME> /opt/backup/<MONGO_COLLECTION_NAME>

通过docker volume

备份

docker run -it --rm --volumes-from <DOCKER_CONTAINER_NAME> -v ${PWD}:/opt/backup --name export busybox sh

# 进入容器
tar -zcvf /opt/backup/data.tar <DATA_PATH>

exit

此处<DATA_PATH>, 如果是minio则为/data/如果是mongo则为/data/db

恢复

docker run -it --rm --volumes-from <DOCKER_CONTAINER_NAME> -v ${PWD}:/opt/backup --name importer busybox sh
tar -zxvf /opt/backup/data.tar
exit

Benchmark

Case 1

部署环境

hash: 4771a830b0787280d53935948c99c340c81de977
env: development
cpu: i7-8700K
memory: 32G
节点数: 1
测试终端: tailchat-cli
测试脚本: bench --time 60 --num 10000 "chat.message.sendMessage" '{"converseId": "61fa58845aff4f8a3e68ccf3", "groupId": "61fa58845aff4f8a3e68ccf4", "content": "123"}'

备注:
- 使用`Redis`作为消息中转中心, `Redis`部署在局域网的nas上
- 使用一个真实账户作为消息推送的接收方
Benchmark result:

  3,845 requests in 1m, 0 error

  Requests/sec: 64

  Latency:
    Avg:       15ms
    Min:        9ms
    Max:       91ms

Case 2

tailchat-server's People

Contributors

moonrailgun avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.