首页 文章

设置高容量以太坊客户端

提问于
浏览
1

我正在寻找一个可以充当以太坊节点的服务器(或服务器集合),我可以向其发送大量请求,每秒查看最多100个,以从区块链中获取数据,例如帐户余额,交易等(像Etherscan) . 如果我错了,请纠正我,但我不认为使用SSD上的链数据在单个服务器上运行的常规奇偶校验或geth客户端可以实现这样的系统,所以我想做的是follwing:

  • 在服务器A上配置带有SSD的奇偶校验客户端,它将充当常规节点

  • 将链数据同步到服务器B上的另一个SSD

  • 在服务器B上设置未连接到以太坊网络的奇偶校验客户端,并使用从服务器A复制的链数据 . 不处理事务 .

  • 可以在服务器B RPC套接字上查询事务,余额等 .

这种设置的原因是服务器B的开销尽可能少,这样它可以处理更多的查询 .

我想知道使用这个设置是否合理,或者是否可能 . 一个更简单的解决方案是最好的,但我找不到有关高容量区块链服务如何运行的太多信息 . 我真的很感激任何指针 .

2 回答

  • 2

    如果我错了,请纠正我,但我不认为使用SSD上的链数据在单个服务器上运行的常规Parity或Geth客户端可以实现这样的系统 .

    我很乐意纠正你:Parity可以在消费级硬件上轻松处理每秒1_000个RPC请求 .

    如果您每秒需要10_000个请求,您仍然可以在具有128GB RAM和Raid-0冗余闪存存储的高端企业服务器上使用单个Parity实例实现此目的,请确保使用奇偶校验配置大量缓存大小:

    parity --cache-size 65536
    

    您甚至可以通过将 --data-dir 设置为tmpfs将整个区块链放入内存中来进一步优化 .

    如果您仍然需要更多,我将运行多个设置,如上所述,并在设置前放置一个负载均衡器,将按类型排序的请求定向到后面的可用机器 .

    披露:我为Parity工作 . 不过,我认为类似的统计数据对于Geth来说是正确的 .

  • 1

    我认为最好的选择是块预处理 . 运行以太坊客户端的实例,迭代所有块并预处理它们(提取所需的所有信息并将其保存在数据库中) . 这将使您的请求更具灵活性 .

    假设您想要一个特定帐户的交易列表 . 使用当前的ETH RPC API无法做到这一点(我的意思是不是以优化的方式) . 最好的办法是对所有块进行预处理,提取所有事务并将它们排列在数据库中,以便您能够查询来自特定地址的事务 .

    在您构建的数据库之上运行API将使您的服务器更高效 .

相关问题