Graph Node高级配置:环境变量与配置文件详解
Graph Node高级配置环境变量与配置文件详解【免费下载链接】graph-nodeGraph Node indexes data from blockchains such as Ethereum and serves it over GraphQL项目地址: https://gitcode.com/gh_mirrors/gr/graph-nodeGraph Node 作为区块链数据索引和 GraphQL 查询服务的核心组件其灵活的配置系统允许开发者根据不同的应用场景进行深度定制。本文将全面解析 Graph Node 的高级配置方法包括配置文件结构、关键环境变量设置以及最佳实践帮助你构建高效稳定的区块链数据索引服务。配置系统概述Graph Node 的配置体系由两大核心部分组成TOML 配置文件和环境变量。配置文件适用于复杂的多节点部署和精细化的资源分配而环境变量则提供了快速调整运行时参数的便捷方式。两者结合使用可以满足从开发测试到生产环境的各种配置需求。Graph Node 数据流程图展示了数据从区块链到 GraphQL API 的完整处理流程配置文件详解配置文件采用 TOML 格式通过--config命令行参数指定。它包含三个主要部分[chains]、[store]和[deployment]支持环境变量扩展特别适合管理多数据库连接和复杂的部署策略。基础配置结构一个最基本的配置文件示例如下等价于使用--postgres-url命令行参数[store] [store.primary] connection postgresql://graph:passwordlocalhost:5432/graph [deployment] [[deployment.rule]] indexers [index_node_0]完整的配置文件结构可参考 docs/config.md其中详细定义了各配置项的语法和默认值。多数据库配置当单个 Postgres 数据库无法满足需求时可以通过[store]部分配置多个数据库分片shard[store] [store.primary] connection postgresql://graph:${PGPASSWORD}primary/graph weight 0 pool_size 10 [store.primary.replicas.repl1] connection postgresql://graph:${PGPASSWORD}primary-repl1/graph weight 1 [store.vip] connection postgresql://graph:${PGPASSWORD}${VIP_MAIN}/graph weight 1 pool_size 10每个分片可以配置主数据库和只读副本通过weight控制查询流量分配比例。连接池大小pool_size支持基于节点 ID 的动态配置满足不同节点的资源需求pool_size [ { node index_node_general_.*, size 20 }, { node query_node_.*, size 80 } ]区块链节点配置[chains]部分定义了区块链网络的连接信息和数据存储策略[chains] ingestor block_ingestor_node cache_size 500 [chains.mainnet] shard vip amp ethereum-mainnet provider [ { label mainnet1, url http://provider1:8545, features [] }, { label mainnet2, url http://provider2:8545, features [archive, traces] } ] [chains.near-mainnet] protocol near provider [ { label near, details { type firehose, url https://near.firehose.com, features [compression] } } ]配置项包括ingestor: 指定负责区块摄入的节点 IDcache_size: 区块数据缓存大小默认 500 块shard: 链数据存储的数据库分片protocol: 区块链协议类型ethereum、near、cosmos 等provider: 区块链数据提供器配置支持 Web3 和 Firehose 类型部署规则配置[deployment]部分通过规则控制子图部署的存储位置和索引节点分配[deployment] [[deployment.rule]] match { name (vip|important)/.* } shard vip indexers [index_node_vip_0, index_node_vip_1] [[deployment.rule]] match { network [xdai, poa-core] } indexers [index_node_other_0] [[deployment.rule]] shards [sharda, shardb] indexers [index_node_community_0, index_node_community_1]规则按顺序匹配支持基于子图名称和网络的正则匹配可动态选择存储分片和索引节点。环境变量配置环境变量提供了快速配置运行时参数的方式覆盖从网络连接到性能调优的各个方面。关键环境变量分类如下区块链连接配置ETHEREUM_REORG_THRESHOLD: 最大预期重组深度默认 250 块ETHEREUM_POLLING_INTERVAL: 区块轮询间隔毫秒默认 500msETHEREUM_BLOCK_BATCH_SIZE: 并行请求的区块数量默认 10GRAPH_ETHEREUM_JSON_RPC_TIMEOUT: JSON-RPC 请求超时秒完整的区块链相关环境变量列表可在 docs/environment-variables.md 中找到。性能优化参数GRAPH_MAPPING_HANDLER_TIMEOUT: 映射处理器超时秒默认无限制GRAPH_ENTITY_CACHE_SIZE: 实体缓存大小KB默认 10000GRAPH_RUNTIME_MAX_STACK_SIZE: WASM 运行时最大栈大小默认 512KiBGRAPH_STORE_CONNECTION_POOL_SIZE: 数据库连接池大小默认 10GraphQL 服务配置GRAPH_GRAPHQL_QUERY_TIMEOUT: 查询超时秒默认无限制GRAPH_GRAPHQL_MAX_COMPLEXITY: 查询复杂度限制默认无限制GRAPH_GRAPHQL_MAX_FIRST:first参数最大值默认 1000GRAPH_GRAPHQL_HTTP_PORT: HTTP 服务端口缓存配置GRAPH_QUERY_CACHE_BLOCKS: 缓存的最近区块数量默认 1GRAPH_QUERY_CACHE_MAX_MEM: 缓存最大内存MB默认 1000GRAPH_IPFS_CACHE_LOCATION: IPFS 缓存位置Redis URL 或文件路径配置验证与最佳实践配置验证使用以下命令验证配置文件的有效性graph-node --config config.toml config check模拟子图部署位置分配graphman --config config.toml config place some/subgraph mainnet最佳实践环境变量安全敏感信息如数据库密码应使用环境变量注入避免硬编码在配置文件中。连接池设置根据节点类型索引节点/查询节点调整连接池大小查询节点通常需要更大的池容量。监控与调优启用查询日志GRAPH_LOG_QUERY_TIMINGsql,gql监控性能瓶颈逐步调整缓存和批处理参数。备份策略定期备份配置文件特别是在多节点部署环境中确保配置一致性。版本控制将配置文件纳入版本控制跟踪配置变更历史便于回滚和审计。通过合理配置 Graph Node你可以显著提升区块链数据索引效率和查询性能满足不同规模应用的需求。无论是开发环境的快速调试还是生产环境的大规模部署灵活运用配置文件和环境变量都是构建可靠 Graph Node 服务的关键。【免费下载链接】graph-nodeGraph Node indexes data from blockchains such as Ethereum and serves it over GraphQL项目地址: https://gitcode.com/gh_mirrors/gr/graph-node创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467292.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!