设置高容量以太坊客户端

时间:2018-02-06 21:50:25

标签: ethereum parity-io

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

  1. 在服务器A上配置带有SSD的奇偶校验客户端,它将充当常规节点
  2. 将链数据同步到服务器B上的另一个SSD
  3. 在服务器B上设置未连接到以太坊网络的奇偶校验客户端,并使用从服务器A复制的链数据。不处理事务。
  4. 可以在服务器B RPC套接字上查询事务,余额等。
  5. 这种设置的原因是服务器B的开销尽可能少,这样它可以处理更多的查询。

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

在您构建的数据库之上运行API将使您的服务器更具性能。