# goMeshSync **Repository Path**: kimsoso/go-mesh-sync ## Basic Information - **Project Name**: goMeshSync - **Description**: 网格数据同步 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-21 - **Last Updated**: 2022-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, sync, 文件同步, 网格传输, 网络拥堵 ## README ## goMeshSync ### 介绍 #### 网格数据同步 1. 客户端将大量文件传输到服务器端集群,如果使用rsync会导致网络卡死,这个方案类似Bittorrent原理,将从单一服务器同步改为:将数据分块,从拥有该部分数据块的节点读取。避免造成流量突发导致的服务宕机问题。 2. 你可以将服务端集群的任何一台机器作为作为接收服务端。如果该服务端因为某些原因宕机,你可以手动配置客户端指定其他机器作为远端服务器。 3. 配合goMeshCli使用 https://gitee.com/kimsoso/go-mesh-cli #### 安装教程 1. config.yaml (struct) * autoNode: true #是否自动发现节点 * 该设置只针对节点都在同一个局域网内有效 * 如设置为false,请给nodes.yaml写入yaml形式的节点列表,如下 * rootDir: "files/" #根目录 * nodesFile: "nodes.yaml" #节点文件 * log: true #是否记录日志 * true为生成文件日志 * false为直接输出到stdout * threads: 10 #协程生成数量 * interval: 1s #普通协程休眠时间 * routineInterval: 5ms #下载协程休眠时间 * bandwidth: "0" #每个协程限速 * 格式为:xxxk, xxxm * 例如 1m, 512k... * commPort: 8001 #通讯端口,未使用 * dataPort: 9111 #数据端口 2. nodes.yaml (slice) ```yaml - 节点1 - 节点2 - 节点3 ``` #### 使用说明 1. 现只支持 linux、macos Linux 64 编译命令为:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/gomeshsync -trimpath -ldflags "-s -w -buildid=" ./main.go #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com/) 3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 https://gitee.com/help 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/