1作者: kangbit8 个月前
大家好,我是 HN!我构建了一个 React 组件,可以轻松使用 Document Picture-in-Picture API。<p>什么是 Document PiP? 与传统的视频 PiP 不同,Document Picture-in-Picture 允许您将任何 HTML 内容放入一个始终置顶的浮动窗口中。<p>软件包:<a href="https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;react-document-pip" rel="nofollow">https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;react-document-pip</a><p>这个库使用了 Document Picture-in-Picture API,目前在以下浏览器中支持: - Chrome 116+ - Edge 116+ - Opera 102+
1作者: werwolf8 个月前
bzfs 是一个简单可靠的命令行工具,用于在本地或通过 SSH 复制 ZFS 快照(zfs send/receive)。它的配套工具 bzfs_jobrunner 将其转化为跨 N 个源主机和 M 个目标主机的定期快照/复制/修剪作业,由一个版本化的作业配置驱动。 此版本使 1 秒的复制频率对小型增量更新来说成为可能,甚至在受限设置(低 RTT、少量数据集、守护进程模式)下实现亚秒级频率。 v1.13.0 专注于减少每次迭代的延迟——这是大规模高频复制的敌人: - 跨数据集和启动时重用 SSH:减少握手和往返次数,这是小型增量发送花费大部分时间的地方。 - 更早的流启动:并行估算“要发送的字节数”,以便数据路径可以更快地打开,而不是阻塞在预检上。 - 更智能的缓存:更快的快照列表哈希和更短的缓存路径,以减少在紧密循环中重复的 ZFS 查询。 - 更具弹性的连接:在短暂失败之前短暂重试 SSH 控制路径,以平滑瞬态波动。 - 更清晰的操作:规范化的退出代码;当用户终止管道时,抑制“Broken pipe”噪声。 这为什么重要 - 在 1 秒的频率下,固定成本(会话设置、快照枚举)占主导地位。减少 RTT 和冗余的 `zfs list` 调用比原始吞吐量带来更大的收益。 - 对于集群来说,尾部很重要:将每次作业的抖动和启动开销乘以 N×M 作业,可以改善端到端的陈旧性。 1 秒(和亚秒级)复制 - 使用守护进程模式以避免每个进程的启动成本;保持进程运行并以 `--daemon-replication-frequency`(例如,`1s`,甚至在受限情况下为 `100ms`)循环。 - 重用 SSH 连接(现在是默认设置)以避免即使对于新进程也进行握手。 - 保持每个数据集的快照数量较低并积极修剪;更少的条目使 `zfs list -t snapshot` 更快。 - 将范围限制为真正需要该频率的数据集(例如 `--exclude-dataset`、`--skip-parent` 等过滤器)。 - 在集群中,添加小的抖动以避免羊群效应,并限制工作线程以匹配 CPU、I/O 和链路 RTT。 工作原理(简而言之) - 从最新的公共快照进行增量发送;支持书签以确保安全并减少状态。 - 跨数据集/zpool 和运行重用持久的 SSH 会话,以避免握手/执行开销。 - 快照枚举使用缓存以避免在没有任何更改时重新扫描。 - 通过 bzfs_jobrunner 进行作业编排:所有主机上运行相同的配置文件;添加抖动以避免羊群效应;设置工作线程计数/超时以进行扩展。 高频提示 - 以与快照创建成比例的频率进行修剪,以保持枚举速度。 - 使用守护进程模式;将快照/复制/修剪分成专用的循环。 - 在主机之间添加小的随机启动抖动,以减少跨集群的争用。 - 为您的 I/O 和 RTT 范围调整 jobrunner 的 `--workers` 和每个工作线程的超时。 快速示例 - 本地复制:`bzfs pool/src/ds pool/backup/ds` - 从远程拉取:`bzfs user@host:pool/src/ds pool/backup/ds` - Jobrunner(定期):使用守护进程模式以 1 秒的频率运行共享的作业配置:`... --replicate --daemon-replication-frequency 1s`(在受限设置下,亚秒级如 `100ms` 是可能的)。为 `--create-src-snapshots`、`--replicate` 和 `--prune-` 使用单独的守护进程。 链接 - 代码和文档:https://github.com/whoschek/bzfs - README:快速入门、过滤器、安全标志、示例 - Jobrunner README:多主机编排、抖动、守护进程模式、频率 - 1.13.0 差异:https://github.com/whoschek/bzfs/compare/v1.12.0...v1.13.0 注意事项 - 仅限标准工具(ZFS/Unix 和 Python);没有额外的运行时依赖项。 我希望从运行跨多个数据集/主机的 1 秒或亚秒级复制的人那里获得性能反馈: - 每次迭代的墙钟时间、增量快照的数量/大小、数据集计数和链路 RTT 有助于上下文结果。 很乐意回答问题!