#kafka #plugin #solana #publisher #accounts-db #ms #config

solana-accountsdb-plugin-kafka

Solana AccountsDb 插件用于 Kafka

9 个不稳定版本

0.1.4+solana.1.11.32022年7月23日
0.1.3+solana.1.10.112022年7月23日
0.1.3+solana.1.10.22022年3月15日
0.1.2 2022年2月28日

#15 in #ms

Download history 7/week @ 2024-03-31

每月 182 次下载

Apache-2.0

37KB
718 代码行

Solana AccountsDB 插件用于 Kafka

用于与 Solana 的 插件框架 一起使用的 Kafka 发布者。

安装

二进制版本

在以下位置查找二进制版本:https://github.com/Blockdaemon/solana-accountsdb-plugin-kafka/releases

从源代码构建

cargo build --release
  • Linux: ./target/release/libsolana_accountsdb_plugin_kafka.so
  • macOS: ./target/release/libsolana_accountsdb_plugin_kafka.dylib

重要: Solana 的插件接口要求 Solana 验证器和此插件的构建环境必须 相同

这包括 Solana 版本和 Rust 编译器版本。加载针对错误版本的插件会导致内存损坏和崩溃。

配置

配置通过插件的 JSON 配置文件指定。

示例配置

{
  "libpath": "/solana/target/release/libsolana_accountsdb_plugin_kafka.so",
  "kafka": {
    "bootstrap.servers": "localhost:9092",
    "request.required.acks": "1",
    "message.timeout.ms": "30000",
    "compression.type": "lz4",
    "partitioner": "murmur2_random"
  },
  "shutdown_timeout_ms": 30000,
  "update_account_topic": "solana.testnet.account_updates",
  "slot_status_topic": "solana.testnet.slot_status",
  "publish_all_accounts": false,
  "program_ignores": [
    "Sysvar1111111111111111111111111111111111111",
    "Vote111111111111111111111111111111111111111"
  ]
}

参考

  • libpath:Kafka 插件的路径
  • kafkalibrdkafka 配置选项。此插件覆盖了示例配置中看到的默认值。
  • shutdown_timeout_ms:插件在退出请求时给定的将所有消息刷新到 Kafka 的时间。
  • update_account_topic:账户更新主题名称。省略以禁用。
  • slot_status_topic:槽状态更新主题名称。省略以禁用。
  • publish_all_accounts:启动时发布所有账户。省略以禁用。
  • program_ignores:要忽略其拥有的账户更新的 Solana 程序 ID。

缓冲

Kafka生产者严格采用非阻塞模式,以便Solana验证器同步时几乎不会产生延迟。这意味着来自Solana验证器的传入事件将被缓冲并异步发布。

当发布缓冲区耗尽时,任何额外的事件将被丢弃。这可能会发生在Kafka代理速度过慢或与Kafka的连接失败时。因此,选择足够大的缓冲区至关重要。

可以使用librdkafka配置选项来控制缓冲区大小,包括

  • queue.buffering.max.messages:生产者队列允许的最大消息数量。
  • queue.buffering.max.kbytes:生产者队列允许的最大总消息大小总和。

依赖项

~53–73MB
~1.5M SLoC