6 个版本
0.1.0 | 2024 年 8 月 10 日 |
---|---|
0.0.3 | 2023 年 10 月 4 日 |
0.0.3-alpha.0.1 | 2023 年 8 月 31 日 |
#286 in 神奇豆
164 次每月下载
80KB
1.5K SLoC
rs-ingest
为 Futurenet 编写的 Rust 摄入库
此软件包提供构建 Futurenet 上自定义摄入引擎的原语。它受到 stellars go/ingest
软件包的启发。
通常,开发者可能需要 Horizon 范围之外的摄入功能,或者需要更高的数据可用性。例如,一个协议的前端可能需要将事件摄入到自己的数据库中,具有非常具体的筛选或大量数据,或者他们可能还需要回放历史记录以查看是否错过了某些事件。
本 crate 就是基于这种需求设计的,并且可以在 futurenet 上工作!
注意:您还可以使用此 crate 用于 pubnet,请参阅 示例。
注意:此 crate 仍在开发中。当前的 crate 功能有限。
注意:目前仅支持 POSIX 系统。
特性
目前,您可以同时回放历史记录和在线运行。目前在线运行不支持从给定账本开始回放历史记录。
注意:当前的实现是实验性的,并且没有涵盖摄入 crate 应该具有的所有功能,包括但不限于故障安全机制、归档器交互、自定义 toml 配置、读取器以及更优化的代码库。
离线运行
离线运行意味着可以通过追赶回放历史。回放历史将允许您处理在指定范围内的网络中发生的一切。
rs-ingest
允许您以两种模式离线运行
- 单线程
- 多线程
单线程模式
以单线程模式运行是使用 rs-ingest
的最直接方式。此模式将等待核心子进程完成同步,然后允许检索账本元数据。
单线程模式将存储每个账本的元数据。
多线程模式
多线程模式运行也很简单,但返回一个 Receiver<MetaResult>
对象,它在新账本元数据(已解码)发射时接收它。
当您运行多线程模式时,您将负责如何存储元数据或由此派生的对象。
在运行多线程模式时,您还需要手动调用 关闭机制。
在线运行
在线运行意味着能够与 Futurenet 同步并关闭账本,从而接收账本关闭元数据。此模式更适合用于构建使用实时数据(例如事件流)的应用。
多线程模式
在线运行只能在多线程模式下进行。您将收到一个 Receiver<MetaResult>
对象,它在 stellar-core 关闭账本时接收账本关闭元数据。
在运行多线程模式时,您还需要手动调用 关闭机制。
关闭机制
rs-ingest
具有关闭机制,该机制删除执行期间创建的临时存储桶并清除对象。关闭操作在重新初始化对 rs-ingest
的操作之前非常重要。在单线程模式下运行时,关闭机制在 rs-ingest
模块内部触发,而在多线程模式下,实现者必须决定何时触发关闭机制。
试试看
该包是一个工作版本,但您已经可以开始尝试它目前提供的功能。例如,查看 示例。
该包可在 crates.io 上找到
ingest = "0.0.3"
stellar-core 设置
在使用该包之前,您需要 stellar-core
可执行文件。要安装目前与 futurenet 兼容的核心
git clone https://github.com/stellar/stellar-core
cd stellar-core
git checkout v20.0.0rc1
git submodule init
git submodule update
./autogen.sh
CXX=clang++-12 ./configure --enable-next-protocol-version-unsafe-for-production
make
make install [this one might need root access on some machines]
注意。根据机器的不同,您可能需要与
CXX=clang++-12
不同的 cmake 环境变量。
学习
查看 LEARN.md
依赖项
~8–16MB
~210K SLoC