defs

package module
v2.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2025 License: MIT Imports: 17 Imported by: 0

README

flow diagram

DeFS

Go Reference Go

DeFS(Decentralized file service) 去中心化文件服务,引领了数据存储领域的革新,通过引入动态存储技术,解决了传统静态存储和去中心化存储所面临的挑战。其核心设计理念是为用户提供更加高效、安全且可靠的数据存储解决方案。通过数据的自由流动和动态迁移,在去中心化的同时,又保障了数据的安全性和可靠性。

该项目目前正在积极开发中,处于 Alpha 状态。

文档

该文档正在编写中……

Documentation

Overview

Package defs 提供了DeFS去中心化存储系统的核心定义和接口

Index

Constants

This section is empty.

Variables

View Source
var NoOpThreshold = 100 * time.Hour

NoOpThreshold 表示无操作的时间阈值,设定为 100 小时

Functions

This section is empty.

Types

type DeFS

type DeFS struct {
	// contains filtered or unexported fields
}

DeFS 是一个封装了DeFS去中心化(动态)存储的结构体

func Open

func Open(h host.Host, options ...fscfg.Option) (*DeFS, error)

Open 创建并返回一个新的DeFS实例 参数:

  • h: libp2p网络主机实例
  • options: 可选的配置选项列表

返回值:

  • *DeFS: 新创建的DeFS实例
  • error: 如果创建过程中发生错误则返回错误信息

示例:

defs, err := Open(h,

fscfg.WithBucketSize(200),// 设置桶大小为 200
fscfg.WithMaxPeersPerCpl(10),// 每个 CPL 最多允许 10 个节点

// PubSub 相关配置
fscfg.WithPubSubOption(pubsub.WithSetFollowupTime(1 * time.Second)),
fscfg.WithPubSubOption(pubsub.WithSetGossipFactor(0.3)),
fscfg.WithPubSubOption(pubsub.WithSetMaxMessageSize(2 << 20)),
fscfg.WithPubSubOption(pubsub.WithNodeDiscovery(d)),

)

if err != nil {
	logger.Errorf("创建DeFS实例失败: %v", err)
	return nil, err
}

func (*DeFS) AddPubSubPeer

func (fs *DeFS) AddPubSubPeer(peer peer.ID) error

AddPubSubPeer 添加节点到发布订阅系统 参数:

  • peer: 要添加的对等节点ID

返回值:

  • error: 如果添加失败则返回错误

func (*DeFS) AddRoutingPeer

func (fs *DeFS) AddRoutingPeer(pi peer.AddrInfo, mode int) (bool, error)

AddRoutingPeer 尝试将对等节点添加到路由表 参数:

  • pi: 要添加的对等节点地址信息
  • mode: 运行模式 (建议:0:客户端 1:服务端,可根据实际需求设置)

返回值:

  • bool: 如果对等节点成功添加则返回 true
  • error: 如果添加失败则返回错误

说明:

  • 所有添加的节点都被视为非查询节点(queryPeer=false)
  • 所有添加的节点都被设置为可替换(isReplaceable=true)
  • 这样设计可以保证路由表的动态性和新鲜度

func (*DeFS) Afero

func (fs *DeFS) Afero() afero.Afero

Afero 获取文件系统实例 返回值:

  • afero.Afero: 文件系统实例

func (*DeFS) Ctx

func (fs *DeFS) Ctx() context.Context

Ctx 获取全局上下文 返回值:

  • context.Context: 全局上下文实例

func (*DeFS) DB

func (fs *DeFS) DB() *database.DB

DB 获取数据库实例 返回值:

  • *database.DB: 数据库实例

func (*DeFS) Download

func (fs *DeFS) Download() *downloads.DownloadManager

Download 获取下载管理器实例 返回值:

  • *downloads.DownloadManager: 下载管理器实例

func (*DeFS) Host

func (fs *DeFS) Host() host.Host

Host 获取网络主机实例 返回值:

  • host.Host: 网络主机实例

func (*DeFS) NodePubSub

func (fs *DeFS) NodePubSub() *pubsub.NodePubSub

NodePubSub 返回发布订阅系统 返回值:

  • *pubsub.NodePubSub: 发布订阅系统

func (*DeFS) Opt

func (fs *DeFS) Opt() *fscfg.Options

Opt 获取配置选项 返回值:

  • *fscfg.Options: 配置选项实例

func (*DeFS) RoutingTable

func (fs *DeFS) RoutingTable() *kbucket.RoutingTable

RoutingTable 获取客户端实例 返回值:

  • *kbucket.RoutingTable : 路由表实例

func (*DeFS) Upload

func (fs *DeFS) Upload() *uploads.UploadManager

Upload 获取上传管理器实例 返回值:

  • *uploads.UploadManager: 上传管理器实例

Directories

Path Synopsis
api
badgerhold 是一个基于 Badger DB 之上的索引和查询层。
badgerhold 是一个基于 Badger DB 之上的索引和查询层。
Package bitset 实现了位集合,它是一个在非负整数和布尔值之间的映射。
Package bitset 实现了位集合,它是一个在非负整数和布尔值之间的映射。
crypto
cbc
ctr
gcm
Package database 提供数据库相关的操作功能
Package database 提供数据库相关的操作功能
package downloads_ 提供了文件下载相关的功能
package downloads_ 提供了文件下载相关的功能
Package main 是DeFS系统的主包
Package main 是DeFS系统的主包
Package files 提供文件操作相关的功能
Package files 提供文件操作相关的功能
Package kbucket 提供了基于Kademlia DHT的路由表实现
Package kbucket 提供了基于Kademlia DHT的路由表实现
generate
Package main 实现了一个用于生成键前缀映射的工具
Package main 实现了一个用于生成键前缀映射的工具
Package defs 提供了DeFS去中心化存储系统的网络握手协议实现
Package defs 提供了DeFS去中心化存储系统的网络握手协议实现
operate
Package reedsolomon 提供Go语言的纠删码功能
Package reedsolomon 提供Go语言的纠删码功能
Package segment 提供了基本数据类型的编解码功能 支持所有Go语言的基本类型,包括整数、浮点数、复数、字符串、字节数组和布尔值
Package segment 提供了基本数据类型的编解码功能 支持所有Go语言的基本类型,包括整数、浮点数、复数、字符串、字节数组和布尔值
sign
rsa
// tarfs 包实现了 tar 档案的只读内存表示
// tarfs 包实现了 tar 档案的只读内存表示
Package uploads 提供文件上传相关的功能实现
Package uploads 提供文件上传相关的功能实现
utils
log
zip

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL