瑞波(Ripple)历史分片

在服务器运行时,他们自然会生成一个数据库,其中包含有关在网络运行时期间见证或获取的分类帐的数据。每台rippled服务器将该分类帐数据存储在其分类帐存储中,但当存储的分类帐数量超过配置的空间限制时,在线删除逻辑会旋转这些数据库。

历史分片将XRP分类帐的交易历史记录分散到XRP分类帐网络中服务器之间的称为分片的分段中。分片是一系列分类帐。一台rippled服务器以同样的方式在分类账存储和分片存储中存储分类帐。

使用历史分片功能,单个rippled服务器可以帮助存储历史数据,而无需存储整个(多TB)历史记录。分片存储不会取代分类账存储,而是通过XRP分类账网络实现分布式分类账历史的可靠路径。

XRP分类帐网络:分类帐存储和分片存储图

获取和共享历史分片

rippled服务器只有经过配置才能获取并存储历史分片
对于这些服务器,在与网络同步并回填分类帐历史记录到配置的最近分类账数量后开始获取分支。在较低网络活动期间,
rippled设置为维护一个服务器的服务器shard_db随机选择一个分片添加到其分片存储。为了增加网络分类帐历史记录均匀分布的概率,随机选择分片进行采集,并且当前分片没有特别考虑。

选择分片后,分类帐获取过程首先获取分片中最后一个分类帐的序列,然后向后分类。检索过程从服务器在本地检查数据开始。对于不可用的数据,服务器向对等rippled服务器请求数据那些在请求的时间段内具有可用数据的服务器回应其历史记录。请求服务器将这些响应组合起来以创建分片。当它包含特定范围内的所有分类帐时,分片就完成了。

如果rippled服务器在完全获取分片之前空间不足,它将停止其检索过程,直到有足够的空间可以继续。在那之后,最近完成的分片可能会替换较旧的分片。如果有足够的磁盘空间,则rippled服务器会获取其他随机选择的分片以添加到分片存储,直到达到分片(max_size_gb的最大分配磁盘空间

XRP分类帐网络数据完整性

所有分类帐的历史记录由服务器共享,它们同意保留特定范围的历史分类帐。这使得服务器可以确认他们拥有他们同意维护的所有数据,并生成校样树或分类账增量。由于rippled配置了历史分片的服务器会随机选择它们存储的分片,因此所有已关闭分类帐的全部历史记录都将存储在正态分布曲线中,从而增加XRP分类帐网络平均维护历史记录的可能性。

分片存储配置

要配置您rippled存储分类帐历史记录的分片,shard_db请在rippled.cfg文件中添加一个部分

分片配置示例

示例rippled.cfg文件中的以下片段显示了将分片添加到rippled服务器的配置字段

[shard_db]
type=NuDB
path=/var/lib/rippled/db/shards/nudb
max_size_gb=50

提示:Ripple建议使用NuDB作为分片存储(type=NuDB)。NuDB比RocksDB使用更少的文件句柄。RocksDB使用随存储数据大小而变化的内存,这可能需要过多的内存开销。

提示:虽然验证程序和跟踪(或库存)rippled服务器都可以配置为使用历史分片存储,但Ripple建议仅​​为非验证程序rippled服务器添加历史分片以减少验证程序的开销。如果您运行验证程序并希望使用分区管理分类帐历史记录,请运行rippled启用分片的单独服务器。

有关详细信息,请参考[shard_db]在示例rippled.cfg配置示例

调整分片存储

确定分片存储的合适大小需要仔细考虑。定碎片存储的大小时,应该考虑以下几点:

  • 虽然是多余的,但可以在分类账商店和历史分片商店中保存全部分类帐历史记录。
  • 有效的配置可能会将分类账存储仅限于最近的历史记录。
  • 由于当前分片可能被选择存储,因此分类帐存储历史记录的大小应至少为每个分片的分类帐的两倍,并且重新获取该数据将是浪费的。
  • 获取的时间,文件句柄的数量和内存缓存使用情况直接受到大小的影响。
  • 每个分片包含2 ^ 14个分类帐(16384)。
  • 基于分片的年龄,分片占据大约200MB到4GB。较旧的分片较小,因为当时XRP分类帐中的活动较少。

猜你喜欢

转载自blog.csdn.net/sinat_34070003/article/details/80138821