查看原文
其他

SubQuery开发者指南丨在本地运行 SubQuery

区块链数据提供者 SubQuery中文站 2022-03-30



本指南将介绍如何在基础设施上运行本地SubQuery节点,其中包括索引器和查询服务的使用。不用担心在运行自己的SubQuery基础架构中所出现的问题。


SubQuery向社区免费提供管理的托管服务。按照我们所发布的指南查看您如何将项目部署到SubQuery项目。

使用Docker



另一个解决方案是运行一个 Docker Container,由 docker-compose.yml 文件定义。对于一个刚刚初始化的新项目,你不需要在这里做任何改动。


在项目目录下运行以下命令:


docker-compose pull && docker-compose up


第一次下载所需软件包可能需要一些时间(@subql/node, @subql/quiry, and Postgress) ,但很快你就会看到一个运行中的 SubQuery 节点。

运行Indexer



需求:


Postgres 数据库 (版本12或更高). 当<0>SubQuery node</0> 为区块链建立索引时,提取的数据将会存储在外部数据库实例中。


SubQuery 节点需要一个加载的过程,它能够从 SubQuery 项目中提取基于子区块链的数据,并将其保存到 Postgres 数据库。


安装:


# NPMnpm install -g @subql/node


请注意我们不推荐使用 yarn global ,因为它的依赖管理性能不佳,可能导致在运行中出现错误。


安装完毕后,您可以使用以下命令来启动节点:


subql-node <command>

输入命令:


以下命令将帮助您完成 SubQuery 的节点配置并建立索引。要了解更多信息,您可以运行 --help。


指向本地项目路径:


subql-node -f your-project-path

使用字典:


使用完整的链词库可以在测试期间或在您的第一个索引期间大大加快 SubQuery 项目的处理速度。在特定情况下,我们可以看到索引性能提高了10倍。


完整的链词库预先索引特定链中所有事件和外观的位置,并允许您的节点服务在索引时跳到相关位置,而不是检查每个区块。


您可以在 project.yaml 文件中添加字典端点(请参见Manifest File:

https://crowdin.com/backend/create/manifest.md),或在运行时使用以下命令指定它:


subql-node --network-dictionary=https://api.subquery.network/sq/subquery/dictionary-polkadot

阅读更多关于 SubQuery 词典的工作原理:

https://crowdin.com/backend/tutorials_examples/dictionary.md


连接数据库:


export DB_USER=postgresexport DB_PASS=postgresexport DB_DATABASE=postgresexport DB_HOST=localhostexport DB_PORT=5432subql-node -f your-project-path

由于您的 Postgres 数据库的配置(例如不同的数据库密码),还请确保索引器(`subql/node`)和查询服务(`subql/query`)都可以与其建立连接。


指定一个配置文件:


subql-node -c your-project-config.yml


这将把查询节点指向一个配置文件,该文件可以是 YAML 或 JSON 格式。看看下面的例子。


subquery: ../../../../subql-example/extrinsicssubqueryName: extrinsicsbatchSize:100localMode:true


如何更改区块链批处理大小:


subql-node -f your-project-path --batch-size 200
Result:[IndexerManager] fetch block [203, 402][IndexerManager] fetch block [403, 602]

当索引器首次在链上运行时,获取单个区块将大大降低性能。增加批量处理的规模以调整获取的区块数量,这将会减少整个处理时间。默认的批处理大小为100。


在本地模式下运行:


subql-node -f your-project-path --local


出于调试的目的,用户可以在本地模式下运行该节点。切换到本地模式将在默认模式 public 中创建 Postgres 表。


如果未使用本地模式,则使用初始的 Postgres 模式,并将创建初始的 subquery_ 和与其相对应的项目表。


检查节点运行状况:


有两个端口可用来检查和监视所运行的 SubQuery 节点的健康状况。

 

  • 返回普通 200 响应的健康检查端口

  • Metadata 端口,其中包括您正在运行的 SubQuery 节点的额外分析


将其附加到您的 SubQuery 节点的基本URL。例如:http://localhost:3000/meta 将会返回:


{ "currentProcessingHeight": 1000699, "currentProcessingTimestamp": 1631517883547, "targetHeight": 6807295, "bestHeight": 6807298, "indexerNodeVersion": "0.19.1", "lastProcessedHeight": 1000699, "lastProcessedTimestamp": 1631517883555, "uptime": 41.151789063, "polkadotSdkVersion": "5.4.1", "apiConnected": true, "injectedApiConnected": true, "usingDictionary": false, "chain": "Polkadot", "specName": "polkadot", "genesisHash": "0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3", "blockTime": 6000}

http://localhost:3000/health 如果成功,将返回 HTTP 200。


如果索引器出现错误,将返回500错误。这通常可以在节点启动时看到。


{ "status": 500, "error": "Indexer is not healthy"}


如果使用了错误的 URL,将返回 404 not found 错误。


{"statusCode": 404,"message": "Cannot GET /healthy","error": "Not Found"}


调试您的项目:


使用 node inspector 来运行以下命令。


node --inspect-brk <path to subql-node> -f <path to subQuery project>


例如:


node --inspect-brk /usr/local/bin/subql-node -f ~/Code/subQuery/projects/subql-helloworld/Debugger listening on ws://127.0.0.1:9229/56156753-c07d-4bbe-af2d-2c7ff4bcc5adFor help, see: https://nodejs.org/en/docs/inspectorDebugger attached.


然后打开 Chrome 开发工具,进入 Source>Filesystem,将项目添加到工作区并开始调试。查看更多信息如何调试SubQuery项目:
https://doc.subquery.network/tutorials_examples/debug-projects/

运行Query服务



安装:


# NPMnpm install -g @subql/query


请注意我们不推荐使用 yarn global ,因为它的依赖管理性能不佳,可能导致在运行中出现错误。


运行 Query 服务:


export DB_HOST=localhostsubql-query --name <project_name> --playground

确保项目名称与你初始化项目时的项目名称相同。另外,检查环境变量是否正确。


在成功运行subql-query 服务后,打开你的浏览器,前往 http://localhost:3000。你应该看到资源管理器中显示了一个 GraphQL 操场,以及准备查询的模式。

Website:

https://www.subquery.network/


Discord中文群:

https://discord.gg/SZsgE3M7


Telegram中文群:

 t.me/subquerychina


Mixin中文群:

https://subquery.mixinbots.com/join


往期精彩


《SubQuery开发者指南丨映射(Mapping)》


《SubQuery开发者指南丨GraphQL 架构(GraphQL Schema)》


《SubQuery丨开发者快速入门指南》


《SubQuery丨Hello world 入门简介》


《SubQuery开发者指南丨Hello World Explained》


《SubQuery开发者指南丨Hello World (由SubQuery 托管)》


《SubQuery 开发者指南丨安装 SubQuery》


《SubQuery开发者指南丨创建一个SubQuery项目》

《SubQuery开发者指南丨清单文件(Manifest File)》




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存