基于Git/SVN或任意系统的任意网络数据自动同步方案思考

任意 同步 服务器 网络 数据 方案 webhook 通知 Git 自动 编程进阶笔记
发布日期 2022-09-21 更新日期 2022-09-21 阅读次数 61 文章字数 651

代码同步,或其他数据同步,都有一定的应用场景。

最常见的需求,就是代码同步。尽管已经有了 Git / SVN,但是仍然不能自动同步,一次手动点击会仍然是非常麻烦的。

常见的脚本方案,比如简单的定时拉取,或者 webhook,都可以实现我们的需求。

但是这里,更关注于讨论同步原理。

无论是 git / svn ,还是其他任意自研系统,首先要实现对推送更新的检测,一旦其中客户端推送更新,则服务器做出响应,以通知其他客户端拉取最新文件。

另外,webhook很难解决跨网络问题,比如服务器在公网,我希望通知另一个本地电脑更新,则无法实现,此时应该使用 websocket 连接双向通知,也就是除了 webhook 以外,以 websocket 作为服务器通知客户端的辅助方式,这样就实现了任意网络下服务器通知客户端,此时自动触发客户端的拉取功能就可以实现数据同步。

借助 Git 和 webhook 的一些实践。

本地开发和线上开发环境:可以使用 gitee + webhook ,在本地开发完毕,推送至 gitee,由 gitee 触发 webhook 通知线上服务器,线上服务器从 gitee 拉取文件即可。

团队局域网开发环境:在其中一台局域网电脑搭建 gitlab 作为服务器,局域网中任意一台电脑推送数据,则触发多个 webhook 通知其他多台局域网电脑进行文件拉取。

跨网络本地开发环境:搭建一台公网服务器,多台本地电脑(不同局域网)以 webhook 连接至公网服务器,任意一台电脑推送文件后,webhook 通知其他电脑拉取文件。

上述几种方案,都是可行的,理论上可以满足任意同步需求,至于第三种方案对小白来说手动搭建比较麻烦,而且通常需要自主研发,若需求不高可使用免费产品,例如:坚果云。

 


文章作者: 朱丰华

文章链接: https://smart.52dixiaowo.com/blog/post-85.html

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。

任意 同步 服务器 网络 数据 方案 webhook 通知 Git 自动

发表评论

相关推荐
朱丰华   |   7个月前   |   git

git从缓存中移除数据git rm --cached

408    评论    点赞
朱丰华   |   1年前   |   页面 · 监听

iframe子父页面信息传递与监听

375    评论    点赞
朱丰华   |   1年前   |   git · hub · 仓库

go克隆并引用github仓库

147    评论    点赞
朱丰华   |   1年前   |   请求 · 一个

ab测压命令,apache测压工具

172    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

113    评论    点赞
朱丰华   |   1年前   |   变量 · mysql · sql · 用户

MySQL用户自定义变量

95    评论    点赞
朱丰华   |   1年前   |   sed · 文件

Shell 指定行处理head、tail、sed

156    评论    点赞
朱丰华   |   1年前   |   linux · 内容

linux环境下,对于一个大文件,如何查看其中某行的内容

69    评论    点赞
朱丰华   |   1年前   |   linux · 文件

linux递归统计文件夹大小、du命令_Linux du命令:查看文件夹和文件的磁盘占用情况

193    评论    点赞
朱丰华   |   1年前   |   curl

curl命令忽略ssl证书进行https请求

227    评论    点赞
朱丰华   |   1年前   |   js · export · import

js es6 export,import,export default的用法和区别

125    评论    点赞
朱丰华   |   1年前   |   js · vue · 监听

js vue监听,深度监听

114    评论    点赞
朱丰华   |   1年前   |   vue · model

vue语法v-model原理与实现

122    评论    点赞
朱丰华   |   1年前   |   js · vue · npm · 安装

npm快速上手

100    评论    点赞
朱丰华   |   1年前   |   js · 模块 · nodejs

nodejs引入自定义模块

48    评论    点赞
朱丰华   |   1年前   |   php · zend · 反射 · api

php zend引擎api接口:ZENDAPI阅读,反射调用示例

123    评论    点赞
朱丰华   |   1年前   |   文件 · c语言 · include

C语言include语法,h文件和c文件的关系

96    评论    点赞
朱丰华   |   1年前   |   php · 引用 · 变量 · c语言

php扩展内存管理与引用计数

127    评论    点赞
朱丰华   |   1年前   |   zend · php · 类型 · zval

php内核zval类型,与基本类型的转换

116    评论    点赞
朱丰华   |   1年前   |   指针 · 地址 · c语言

C语言的&取地址符,指针

126    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞