Giter Site home page Giter Site logo

leozhang404 / lotus-1.4.0 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bugxzhu/lotus-1.4.0

0.0 0.0 0.0 37.93 MB

License: Other

Makefile 0.28% Go 96.14% HTML 0.06% CSS 0.13% Shell 0.78% JavaScript 1.85% Dockerfile 0.09% Python 0.49% Jupyter Notebook 0.17%

lotus-1.4.0's Introduction

Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal-miner功能分离,实现多Miner的分布式部署。

解决了哪些问题?

  • 单Miner节点负载过高,机器不稳定容易导致时空证明失败掉算力的问题;
  • 解决Miner节点负载过高,出块时由于计算不够快,导致的出块失败问题;
  • 解决Window-PoSt和Winning-PoSt同时进行时,显卡锁定冲突的问题;
  • 解决接单的时候,由于内存占用过高导致Miner异常崩溃,掉算力、出块失败等问题;

功能说明

  • 支持同一个MinerId在多台机器上分布式部署;
  • 支持Window-post-miner、Winning-post-miner、Deal-miner、Seal-miner功能分离:
    • PoSt-miner:负责Window-PoSt和Winning-PoSt,可分开为两台机器,也可由一台机器完成;
      • Window-post-miner:负责扇区窗口证明时的扇区抽查及提交;
      • Winning-post-miner:负责出块时扇区的随机抽查;
    • Deal-miner:负责接单和检索,和订单扇区密封的任务分配;
    • Seal-miner:负责普通扇区密封的任务分配。
  • 调度管理基于自定义的任务数量,可以精确控制机器的工作状态

Image text

实现思路

1. 解决SectorID不重复

利用一台Miner集中分配SectorID,由任意一台Miner的--sctype=alloce参数实现。 并由启用--sclisten=IP:PORT参数的Miner作为分配SectorID的Server,其他Miner设置--sctype=get作为Client,从Server Miner上申请SectorID。

lotus-miner run --sctype=alloce --sclisten=192.168.1.50:1357

2. 解决时空证明由单独的机器完成

由任意一台Miner的--wdpost=true--wnpost=true参数实现时空证明由一台/两台独立的机器完成,其他Miner要设置--wdpost=false--wnpost=false

lotus-miner run --wdpost=true --wnpost=true

3. 解决接单及检索

由任意一台Miner的--p2p=true参数实现,接单的Miner需要配置多地址。

lotus-miner run --p2p=true

参数说明

  • --wdpost [boolean] 是否允许window-PoSt证明,默认true
  • --wnpost [boolean] 是否允许winning-PoSt证明,即出块,默认true
  • --p2p [boolean] 是否允许接单,默认true
  • --sctype [alloce | get] 扇区分配服务类型,alloce表示分配SectorID,get表示获取SectorID;
  • --sclisten [string] 扇区分配服务端监听的地址和端口;

配置举例

现有的单Miner集群要切换到分布式Miner,需要先停掉原有Miner和所有Worker,保证没有进行中的任务。然后将原有单Miner的$LOTUS_STORAGE_PATH目录,复制到其他Miner上,并将$LOTUS_STORAGE_PATH/config.toml文件中[API]部分的ListenAddressRemoteListenAddressIP改为当前所在Miner的内网IP。

比如有3个Miner,由PoSt-miner负责SectorID分配(也可由其他Miner分配)。

1. PoSt-miner

lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357

其中192.168.1.50为PoSt-miner的内网IP,1357为扇区分配服务的监听端口。

如果PoSt-miner为两台机器,则需要分别配置--wdpost--wnpost参数:

Window-post-miner(负责窗口抽查证明)配置为:

lotus-miner run --wdpost=true --wnpost=false --p2p=false

Winning-post-miner(负责出块的证明)配置为:

lotus-miner run --wdpost=false --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357

注意:负责扇区分配的Miner,首次部署的时候,需要修改$LOTUS_STORAGE_PATH/sectorid文件(首次部署需要创建该文件),将其中的数字改为大于当前所有扇区ID的一个数字。

2. Deal-miner

lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357

其中--sclisten监听的地址和端口为做扇区分配Server Miner的IP和端口。
Deal-miner需要配置外网端口转发和lotus-miner actor set-addrs配置多地址。

注意:Deal-miner也只能配置一台,不然订单检索的时候会路由失败。

3. Seal-miner

lotus-miner run --wdpost=false --wnpost=false --p2p=false --sctype=get --sclisten=192.16810.50:1357

需要注意的几个问题:

  • Seal-miner和Deal-miner的配置参数相同,原理上都是密封扇区的Miner;
  • Seal-miner可根据自己的集群规模,配置多台;

Worker配置

使用分布式Miner以后,需要根据配置的Seal-miner和Deal-miner数量,将Seal-worker分为多个组,和Miner一一对应。

假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。

lotus-1.4.0's People

Contributors

magik6k avatar whyrusleeping avatar arajasek avatar vyzo avatar raulk avatar stebalien avatar nonsense avatar dirkmc avatar kubuxu avatar hannahhoward avatar laser avatar travisperson avatar frrist avatar jimmylee avatar yusefnapora avatar zgfzgf avatar placer14 avatar deaswang avatar ingar avatar schomatis avatar jsign avatar alanshaw avatar eshon avatar mrsmkl avatar ribasushi avatar lanzafame avatar moran666666 avatar hsanjuan avatar pooja avatar zenground0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.