同步感知与远程管理

0 缘起

思源笔记帮助文档中关于同步的工作原理、同步冲突产生的原因介绍如下:

自动/手动同步模式工作原理

思源通过对比云端数据快照和本地数据快照进行相应操作:

  • 如果快照相同则忽略本次同步

  • 如果快照不同,则将本地距离上次同步的变更上传到云端,将云端最新的变更合并到本地

    • 如果两端的变更没有冲突则直接合并
    • 如果存在文件冲突,则以本地为准覆盖云端,同时拉取到的云端冲突文件会归入到数据历史中

自动同步模式场景例举

从上述工作原理我们可以得知,思源仅支持在多设备上交替同步数据:设备 A 上同步完成以后设备 B 上再进行同步。无法支持多设备同时同步,这样会发生无法预期的数据覆盖。

正常场景

  1. 在设备 A 上编辑后执行同步(通过自动或者手动触发同步),此时云端数据会被设备 A 数据覆盖,既云端和设备 A 保持数据一致
  2. 在设备 B 上执行同步,此时设备 B 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致
  3. 设备 B 上编辑后再次执行同步,此时云端数据会被设备 B 数据覆盖,既云端和设备 B 保持数据一致
  4. 在设备 A 上执行同步,此时设备 A 数据会被云端数据覆盖,即云端和设备 A、B 保持数据一致

该场景下,使用同步的过程是在设备 A、B 上交替进行的,这样能够保证数据同步符合预期正常完成。

冲突场景

  1. 在设备 A 上编辑 a 文件后同步
  2. 在设备 B 上编辑 a 文件后同步
  3. 此时云端 a 文件会被 B 设备上的 a 覆盖,同时在 B 设备上生成之前 A 设备 a 的历史

可以看到,如果一个设备在同步前先编辑了一个文件,然后再进行同步,则可能会产生冲突。因此,为了减少冲突,需要从几个方面解决:

  1. 养成在编辑前先同步的好习惯。
  2. 不要多个客户端同时在线。
  3. 若需要多个客户端同时在线(但不能同时编辑),则一个设备同步后应告诉其他设备及时进行同步,也就是官方订阅提供的“同步感知”功能。

由于官方订阅只提供了 8G 的空间,很多人使用了第三方 S3 服务,无法使用“同步感知”功能。之前集市中上架了一个同步感知插件,通过第三方服务器提供了同步感知功能,但是插件作者提供的服务器已经关闭,需要自己部署服务器。

一个长期、稳定的服务器对于同步感知功能来说是至关重要的,因此我基于 Quicker 的推送服务做了同步感知的功能。

1 Quicker 动作介绍

动作下载:思源同步感知与远程管理 - by 浅沧 - 动作信息 - Quicker (getquicker.net)

上面的动作提供了两个功能:

  1. 同步感知。一台设备同步后,告知其他设备进行同步。
  2. 远程管理。在一台设备上远程关闭其他设备上运行中的思源笔记客户端。

1.1 使用方法

  1. 运行 Quicker 动作

    1. 如果思源笔记处于前台,则会触发思源的同步功能,同步完成后告知其他电脑进行同步
      建议设置如下快捷键
      image
    2. 如果思源笔记处于后台,则会显示远程管理界面,选择其他电脑上需要关闭的思源笔记
  2. 也可能通过动作的右键菜单直接调用远程管理功能

1.2 工作原理

同步感知工作原理大概是这样的:

  1. 所有电脑上的 Quicker 客户端连接到 Quicker 服务器,保持长连接
  2. 在电脑 A 上运行动作
  3. 动作会让思源笔记进行同步,将文件上传到 S3 服务器
  4. 等电脑 A 的思源同步完成后,动作会推送消息到 Quicker 服务器
  5. Quicker 服务器向电脑 B 上的 Quicker 客户端发送同步消息
  6. 电脑 B 上的 Quicker 客户端接收到消息后,自动运行动作
  7. 动作触发电脑 B 上思源笔记的同步功能,从 S3 服务器下载数据

image

远程感知的工作原理和同步感知类似,过程如下:

  1. 所有电脑上的 Quicker 客户端连接到 Quicker 服务器,保持长连接
  2. 在电脑 A 上运行动作
  3. 动作向 Quicker 服务器发送消息,要求获取其他电脑上的思源笔记客户端
  4. Quicker 服务器向电脑 B、C 上的 Quicker 客户端发送消息
  5. 电脑 B、C 上的 Quicker 客户端接收到消息后,将本电脑上运行中的思源笔记客户端信息回传给 Quicker 服务器
  6. Quicker 服务器将电脑 B、C 的信息转发给电脑 A
  7. 电脑 A 的 Quicker 客户端接收到消息后,显示其他电脑上运行中的思源笔记客户端
  8. 用户在电脑 A 上选择需要关闭到客户端,Quicker 发送消息到服务器
  9. Quicker 服务器向指定的电脑发送消息(比如电脑 C)
  10. 电脑 C 接收到消息后,关闭指定的思源笔记客户端

1.3 使用需要配置的内容

1.3.1 Quicker 的配置

  1. Quicker 各个客户端连接到推送服务image
  2. 点击上图的推送工具,打开 quicker 会员中心,填写推送验证码并保存
    image
  3. 运行动作或者点击动作右键菜单的“修改推送配置”,在弹出的窗口中填写 Quicker 账号的邮箱、上一步填写的推送验证码
    image

1.3.2 思源笔记上的配置

  1. 下载“运行 Javascript”插件(0.7.1 及以上版本)
  2. 启用该插件的 websocket 功能

image

使用此插件才能从外部关闭思源笔记。

2 安卓手机上使用 Http shortcuts 进行远程管理

软件下载:Waboodoo/HTTP-Shortcuts(需要 3.17.0 及以上版本)

HTTPSHORTCUTS3.18.0.zip

导入 shortcuts:shortcuts 思源笔记.zip

具体的配置可以看这个帖子:安卓版 quickAdd V3,从任意位置向思源笔记发送文字与文件 - 链滴 (ld246.com)

2.1 在手机上进行远程管理

  1. 长按桌面上的 http shortcuts 图标
  2. 点击 思源远程管理
  3. 选择需要关闭到电脑客户端(由于 http shortcuts 功能限制,一次只能选择一个客户端进行关闭)

2.2 发送文字、文件到思源笔记功能的升级

  1. 已经支持发送多个文件到思源笔记
  2. 在添加内容到思源笔记之前会先进行一次同步,同步完成后再添加到日记末尾,然后再进行一次同步,减少数据冲突

2.3 注意事项

  1. 由于 Quicker 服务器不支持第三方应用进行长连接,安卓端只能发送消息,不能接收消息,即无法从电脑关闭手机上的思源笔记、触发手机上的同步。
  2. 使用前需要先到 http shortcuts 的变量界面填写 quickerEmail(quicker 账号邮箱)和 quickerPushCode(推送码) 两个变量的值,以便向 Quicker 服务器发送消息。
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22334 引用 • 89360 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    32 引用 • 130 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...