暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

IPFS系统中API服务网络流程分析

求真得趣 2021-04-12
921


IPFS系统支持多种网络服务,本文采用IPFS v0.9.0-dev版本,对API网络服务进行源码分析,以便更好的了解IPFS的数据流程。在IPFS系统中API网络服务默认通过5001端口(可配置)开启服务,以"/api/v0"作为URI地址后字段。


具体服务流程如下:


  总体说来,整个流程是先定义了一些单元功能和单元HTTP服务多路复用器,后面统一构建API服务的多路复用器,开启服务。

IPFS中存在的多个网络服务,整体系统结构流程类似。协程通过goprocess包管理,通过goprocess.WithTeardown(tf TeardownFunc)创建一个新的进程,通过其他接口可以添加子进程等。

简单的介绍下goprocess。在go语言中,goprocess包设计了一种管理进程生命周期的方法。这一点和net/context包的Context很像,它更像是Context和WaitGroup的一个混合体Context-WaitGroup。goprocess支持接受多个客户端单元信号,例如关闭信号,用来管理启动和停止工作单元。可以把它想象成go语言里的UNIX进程树。

go-ipfs只是IPFS工程放在前面的一个主体项目,后面还牵涉到很多的子项目这里不做描述。

文章转载自求真得趣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论