Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

venus-market如何下发unseal任务 #5484

Closed
1 of 11 tasks
Tracked by #5527 ...
hunjixin opened this issue Nov 18, 2022 · 10 comments · Fixed by ipfs-force-community/droplet#267
Closed
1 of 11 tasks
Tracked by #5527 ...

venus-market如何下发unseal任务 #5484

hunjixin opened this issue Nov 18, 2022 · 10 comments · Fixed by ipfs-force-community/droplet#267
Assignees
Labels
C-enhancement Category: feature enhancement P2 Medium - we should get to this soon

Comments

@hunjixin
Copy link
Contributor

链服务模块 / Chain Service Components

  • venus
  • venus-auth
  • venus-gateway
  • venus-messager
  • venus-miner
  • 文档 / docs

订单服务模块 / Deal Service Components

  • venus-market
  • 文档 / docs

算力服务模块 / Storage Power Service Components

  • venus-sector-manager
  • venus-worker
  • 文档 / docs

描述 / Description

目前venus-market和venus-cluster之间只存在cluster调用venus-market接口的能力。
但是在预想中,如果venus-market piece文件损坏或丢失,需要找某个miner要对应的piece数据。

在原来的方案中, sealer监听venus-gateway的market event, cluster获取到任务后,进行unseal操作,并把获取到的piece文件上传到指定的位置。

现在market部署到本地后,这一块的方案可以做一些调整

  1. 移动venus-gateway中的market event逻辑到venus-market当中。
  2. venus-market本地默认启动market event代码
  3. sealer链接market的时候同时启动event监听
@hunjixin hunjixin added P2 Medium - we should get to this soon C-enhancement Category: feature enhancement labels Nov 18, 2022
@hunjixin hunjixin added this to the 订单服务 v2.5.0 milestone Nov 18, 2022
@hunjixin hunjixin removed this from the 订单服务 v2.5.0 milestone Nov 25, 2022
@hunjixin
Copy link
Contributor Author

#5505

@diwufeiwen
Copy link
Contributor

market的应用场景比较杂,先列举一下已存在的:

  • 孵化器的模式(离线订单)
    SP将数据切片(工具:go-graphsplit)后Pieces保存在本地,market上没有保存,缺陷:没法检索
    这种场景下,把venus-market移到用户的机房(和venus-sector-manager为兄弟组件),只需要将piece文件服务器挂载,venus-cluster和venus-market都可访问挂载目录即可,是不是只需要调用venus-sector-manager的unsealed命令就可以了

@diwufeiwen
Copy link
Contributor

market的应用场景二:
链上模式(线上发单):这个就比较复杂,存在两种场景: (1)pieces保存在链服务本地, (2)pieces保存在远程(oss)
(1)即使通过gateway让venus-cluster做了unsealed,怎么传到链服务本地,不好做; (2)同样存在传输大文件问题,另外是否会泄露oss等服务的token

虽然market部署到本地,但我们依然打算支持部署到链上。

@LinZexiao
Copy link
Collaborator

LinZexiao commented Feb 6, 2023

我觉得可以将类似于 boost 那边的多协议文件传输支持起来,
目前来说,可以预设三种协议:

  • oss
    • 文件持有者在上传文件之后,将对应的 url 分享出来即可
  • 文件路径
    • 设备id + 文件路径 (适用于传输双方共享设备,或者共享挂载路径)
  • http 传输
    • 文件持有者启动一个文件服务器, 将访问 的 url 分享给接收者

采用统一的文件传输协议,可以在一定程度上简化 不同情境下传输文件的复杂度

@diwufeiwen
Copy link
Contributor

// Transfer has the parameters for a data transfer
type Transfer struct {
// The type of transfer eg "http"
Type string
// A byte array containing marshalled data specific to the transfer type
// eg a JSON encoded struct { URL: "", Headers: {...} }
Params []byte
}

@diwufeiwen diwufeiwen moved this from In Progress to In Review in Venus Project Feb 9, 2023
@Fatman13 Fatman13 mentioned this issue Feb 10, 2023
45 tasks
@LinZexiao
Copy link
Collaborator

LinZexiao commented Feb 13, 2023

// Transfer has the parameters for a data transfer type Transfer struct { // The type of transfer eg "http" Type string // A byte array containing marshalled data specific to the transfer type // eg a JSON encoded struct { URL: "", Headers: {...} } Params []byte }

如果采用结构体的话, 需要考虑对不同协议的结构体编解码, 直接使用 url 会不会方便一点?
例如:

  • 直接文件系统访问
    • file://host/path/to
  • 对象存储
    • oss://buket.host:port/path/to/?token=..
  • http

@diwufeiwen
Copy link
Contributor

就s3的方式,url貌似是读文件的,并不能拿着url直接写进去,还是你打算让cluster再次解析url中各种参数然后创建存储Uploader? @0x5459

@LinZexiao
Copy link
Collaborator

我理解的话, 文件传输 = 上传文件到指定位置 + 分享文件 url ?
换而言之, 只需要 url 只要能够定位获取到 目标文件即可, 不需要关心 发送者是怎么上传文件的?

@diwufeiwen
Copy link
Contributor

cluster是要把Unsealed文件上传到指定地方,oss需要构造 oss.Uploader,需要把url中的bucket,host,token等解析出来,这个时候解析一个struct比解析一个url来的方便,理论上,url也是可以的,都是要解析出有效信息,或拷贝文件或网络传输等。其实不需要分享url,读取的url有接口可以构造

@LinZexiao
Copy link
Collaborator

符合规范的url, 应该是可以直接通过 net/url.Parse 解释出来的
不过确实 Mashal 结构体使用上, 会更加方便一些
相对来说, url 的方式可能更具普适性
我觉得都 ok 的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-enhancement Category: feature enhancement P2 Medium - we should get to this soon
Projects
Archived in project
3 participants