以太坊怎么扫块,Magician-Web3 1.0.5 发布啦,加入了负载均衡 和 重试策略
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Magician-Web3 是一个区块链开发工具包。它由两个功能组成。一个是扫描区块链根据开发者的需要监控交易。另一个是对 web3j 的一些二次打包可以减少开发者在一些常见场景下的工作量。它计划支持三种链ETHBSC、POLYGAN 等、SOL 和 TRON
本次更新的点
-
加入了负载均衡只要配置多个 RPC URL 即可自动轮询可以将流量分散给多个节点不用一直盯着一个节点 “祸害了”
-
加入了重试策略当出现了某些意外的原因 导致区块被跳过扫描那么被跳过的区块高度将进入重试策略你可以自己进行处理
-
修改了一点点细节
负载均衡
直接设置多个 rpc 地址即可
MagicianBlockchainScan.create()
.setRpcUrl(
// 可以设置1到n个 rpc地址了超过一个将自动轮询使用
EthRpcInit.create()
.addRpcUrl("https://data-seed-prebsc-1-s1.binance.org:8545")
.addRpcUrl("https://data-seed-prebsc-2-s1.binance.org:8545")
.addRpcUrl("https://data-seed-prebsc-1-s2.binance.org:8545")
)
.setScanPeriod(1000)
.setBeginBlockNumber(BlockEnums.LAST_BLOCK_NUMBER.getValue())
.addEthMonitorEvent(new EventOne())
.addEthMonitorEvent(new EventThree())
.setRetryStrategy(new EthRetry())
.start();
重试策略
在符合以下两个条件时会触发重试策略两个条件必须全都符合 才会触发重试
-
当前正在扫描的块高 是空的块不存在 或者 块里面没交易
-
当前正在扫描的块高 < 链上的最新块高
当上面两个条件同时符合的时候扫描任务会跳过这个块然后继续扫描下一个块同时 重试策略会收到被跳过的块高 你可以在重试策略里 自己处理
创建一个重试策略
public class EthRetry implements RetryStrategy {
@Override
public void retry(BigInteger blockNumber) {
}
}
将重试策略添加到扫描任务中
MagicianBlockchainScan.create()
.setRetryStrategy(new EthRetry())// 调用这个方法添加
.start();
需要注意线程数量的配置
如果你此时开了一个扫块任务 + 一个 重试策略那么需要占用两个线程所以参数必须传 2
// 初始化线程池核心线程数必须 >= 扫块的任务数量 + 重试策略的数量
EventThreadPool.init(2);
细节调整
-
扫描频率最低可以设置 500 毫秒
-
设置 RPC 地址的 传参类型变了
-
由于第二点的优化现在可以根据 RPC 地址的类型来判断你要扫描什么链了所以去除了 ChainType 的设置
MagicianBlockchainScan.create()
.setRpcUrl(// 这里发生了改变
EthRpcInit.create()
.addRpcUrl("https://data-seed-prebsc-1-s1.binance.org:8545")
.addRpcUrl("https://data-seed-prebsc-2-s1.binance.org:8545")
.addRpcUrl("https://data-seed-prebsc-1-s2.binance.org:8545")
)
.setScanPeriod(1000)// 这个参数最低可以设置为500了
.setBeginBlockNumber(BlockEnums.LAST_BLOCK_NUMBER.getValue())
.addEthMonitorEvent(new EventOne())
.addEthMonitorEvent(new EventThree())
.setRetryStrategy(new EthRetry())
.start();
可以访问官网了解更多https://magician-io.co