耕种集群
耕种集群是为规模较大的农民设计的,旨在解决与扩大规模相关的各种挑战。 基本上,集群由四个不同的部分组成:
- 控制器
- 缓存
- 农民
- 绘图
优点
- 带宽效率:piece cache 的集中存储节省带宽。
- 远程计算能力:多个PC可以贡献他们的 CPU 能力(最终是GPU) 来绘制,无需本地存储数据块。
- 冗余:每个组件多台计算机运行会增加冗余。
- 额外空间:通过将块同步缓存(piece sync cache) 移动到一个中心点,可以为较大的集群释放大约1%的SSD。
核心通信技术:NATS.io
该进程的核心是一个名为 NATS.io 的第三方软件,用于农民进程之间的通信。 安装 NATS.io 的最简单方法是通过 Docker。
要启动 NATS,创建一个配置文件,内容如下:
max_payload = 2MB
保存为 nats.config
并使用 Docker启动NATS 服务器:
docker run \
--name nats \
--restart unless-stopped \
--publish 4222:4222 \
--volume ./nats.config:/nats.config:ro \
nats -c /nats.config
组件配置
这四个组件中的每一个都需要一些额外的参数,每个组件都需要指定 cluster
,NATS服务器的URL以及要运行的具体组件。
控制器
控制器应该是第一个运行组件。 它连接到节点,所以必须包含 node-rpc-url
。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
controller \
--base-path /path/to/controller-dir \
--node-rpc-url ws://<NODE_IP>:<NODE_PORT>
用你的 NATS 服务器 IP 地址替换 <NATS_IP>
, 并使用您的节点的 IP 地址和端口替换 <NODE_IP>:<NODE_PORT>
。使用 --base-path
指定工作目录。
控制器记录农场连接、断开连接和缓存同步进度, 可选连接选项包括 --in-connections
, --out-connections
, --pending-in-connections
, 和 --pending-out-connections
。
缓存
接下来,运行缓存组件。 虽然您可以运行多个缓存进程来分担负载,但只需要一个。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
cache \
path=/path/to/cache,size=SIZE
将 <NATS_IP>
替换为您的 NATS 服务器 IP 地址。使用 path=
提供缓存文件路径,并指定缓存大小。虽然建议使用 SSD,但也可以使用硬盘。根据主网的当前状态,200 GB 是一个不错的大小,可用于缓存。
农夫
在每台要耕种的计算机上运行农民组件。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
farmer \
--reward-address <REWARD_ADDRESS> \
path=/path/to/farm,size=SIZE
使用你的 NATS 服务器 IP 地址替换 <NATS_IP>
并提供您的奖励地址、农场路径和大小。可选参数包括 --cpu-sector-encoding-concurrency
或 ----cuda-sector-downloading-concurrency
, --farming-thread-pool-size
, --disable-farm-locking
和 --create
。
绘图
最后,运行绘图组件。 至少需要一个绘图组件来绘制和重新绘制农场。 它可以放在与农民相同的计算机上,也可以放在单独的机器上。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
plotter
使用你的NATS 服务器 IP 地址替换 <NATS_IP>
。 可选参数包括许多与并发和核心/线程相关的农民选项。
同时运行多个组件
用 --
将不同的组件参数隔离开,可以一个命令运行多个组件
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
cache \
path=/path/to/cache,size=SIZE
--
plotter
远程计算潜力
此配置允许扩展远程计算功能。 例如,如果计算机适合耕作,但不适合绘图, 你可以在这台电脑上运行农民,可以在一个或多个远程机器上运行绘图。 这样就能在多个农场之间进行连续绘图和重新绘图,确保有效利用绘图器,直到所有数据块都得到绘图和重新绘图。
高级选项 / 冗余设置
可以设置 nats 服务器集群,但这种集群超出了本文档的范围。 如果你有多个 nats 服务器,你可以指定多个.
subspace-farmer cluster --nats-server nats://<NATS_IP#1>:4222 --nats-server nats://<NATS_IP#2>:4222\
您可以运行多个控制器组件,但每一个都需要指定不同的缓存组。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
controller \
--cache-group group1 \
--base-path /path/to/controller-dir \
--node-rpc-url ws://<NODE_IP>:<NODE_PORT>
您需要在缓存组件上指定一个缓存组,这个组与控制器组件上指定的缓存组需要一致。
subspace-farmer cluster --nats-server nats://<NATS_IP>:4222 \
cache \
--cache-group group1 \
path=/path/to/cache,size=SIZE