美文网首页
Storj用例场景与流程分析

Storj用例场景与流程分析

作者: tristan_lee | 来源:发表于2018-12-28 20:31 被阅读0次

三种节点的用例

storj_usecase
  • uplink用例场景
    • 客户端程序uplink可以创建bucket(类似文件夹)
    • 客户端程序uplink可以上传数据文件
    • 客户端程序uplink可以下载数据文件
    • 客户端程序uplink可以枚举bucket的文件列表
    • 客户端程序uplink可以删除bucket或者bucket中的文件
  • satellite用例场景
    • satellite节点提供kad发现服务,主要用于发现storage节点,并维护kad路由表
    • satellite节点提供数据文件的元数据存储服务(pointerdb)
    • satellite节点提供对存储数据进行审计的服务
    • satellite节点提供数据文件冗余修复服务
    • satellite节点提供存储计费服务
  • storage node用例场景
    • storage节点提供kad发现服务,主要用于发现satellite节点,并维护kad路由表
    • storage节点提供数据存储服务

典型用例场景的流程

用户端上传文件的流程

以下只列举节点间的grpc交互流程(忽略其它流程细节,详细消息结构请查阅相关proto文件):

storj_upload_sequential
  1. 客户端uplink首先根据指定的冗余策略(Redundancy Scheme)计算出所需的存储空间(rs_size),然后向satellite节点的overlay服务(grpc服务)请求所需存储空间
  2. satellite节点返回提供具体存储空间的节点信息(node数组)
  3. 客户端uplink向satellite节点的pointerdb服务(grpc服务)请求存储带宽分配的计费信息PayerBandwidthAllocation结构(简称pba)用于计费
  4. satellite节点返回pba结构
  5. 客户端uplink向所有分配的storage节点的piecestore服务(grpc服务)上传具体数据分片
  6. storage节点向satellite节点提交存储带宽分配agreement信息
  7. 客户端uplink生成上传数据文件的元数据信息(pointer结构)
  8. 客户端uplink将生成的元数据信息(pointer结构)上传给satellite节点的pointerdb服务(grpc服务),satellite节点存储文件的元数据信息以便进行文件数据索引

用户端上传文件流程与相关类图的关系

简单类图:

storj_upload_class_simple

代码流程摘要:

    metainfo, streams, err := cfg.Metainfo(ctx)
    if err != nil {
       return err
    }

    createInfo := storj.CreateObject{
       RedundancyScheme: cfg.GetRedundancyScheme(),
       EncryptionScheme: cfg.GetEncryptionScheme(),
    }
    obj, err := metainfo.CreateObject(ctx, dst.Bucket(), dst.Path(), &createInfo)
    if err != nil {
       return convertError(err, dst)
    }

//......

    mutableStream, err := obj.CreateStream(ctx)
    if err != nil {
        return err
    }

//......

    upload := stream.NewUpload(ctx, mutableStream, streams)
    _, err = io.Copy(upload, reader)

  1. 客户端uplink根据本地配置信息生成一个storj.Metainfo对象metainfo和一个streams.Store对象streams
  2. 由metainfo.CreateObject()根据传入的路径信息创建一个storj.MutableObject对象obj
  3. 由obj.CreateStream()创建一个storj.MutableStream对象mutableStream
  4. 最终由控制类stream.Upload操作对象streams与对象obj完成相关文件数据上传操作

详细扩充类图:

storj_upload_class

用户端下载文件的流程

以下只列举节点间的grpc交互流程(忽略其它流程细节,详细消息结构请查阅相关proto文件)

storj_down_sequential
  1. 客户端uplink首先向satellite节点的overlay服务(grpc服务)请求指定路径的文件的元数据(pointer)
  2. satellite节点返回指定路径的文件的元数据(pointer),具体存储节点信息(node数组),以及pba结构
  3. 客户端uplink将返回的元数据(pointer)组装成storj.Object结构
  4. 客户端uplink根据storj.Object结构的信息向具体storage节点的piecestore服务(grpc服务)请求下载文件数据分片

用户端下载文件流程与相关类图的关系

简单类图:

storj_down_class_simple

代码流程摘要:

metainfo, streams, err := cfg.Metainfo(ctx)
if err != nil {
   return err
}

readOnlyStream, err := metainfo.GetObjectStream(ctx, src.Bucket(), src.Path())
if err != nil {
   return convertError(err, src)
}

download := stream.NewDownload(ctx, readOnlyStream, streams)
  1. 客户端uplink根据本地配置信息生成一个storj.Metainfo对象metainfo和一个streams.Store对象streams
  2. 由metainfo.GetObjectStream()根据传入的路径信息创建一个storj.ReadOnlyStream对象`readOnlyStream``
  3. 最终由控制类stream.Download操作对象streams与对象readOnlyStream完成相关文件数据下载操作

详细扩充类图:

storj_down_class

全文完

相关文章

  • Storj用例场景与流程分析

    三种节点的用例 uplink用例场景客户端程序uplink可以创建bucket(类似文件夹)客户端程序uplink...

  • 测试用例设计方法(二)

    测试用例设计方法 1、场景法 定义:通过场景描述的业务流程(业务逻辑),设计用例来遍历场景,验证软件系统功能 场景...

  • 接口测试

    流程:需求讨论-需求评审-场景设计-用例设计-数据准备-执行 用例:功能(功能是否正常,功能是否按接口文档实现),...

  • 01-用户研究

    用研目的 用研场景 用研方法 用研流程 输出报告 数据分析

  • 测试用例评审

    用例评审是整个测试流程中非常重要的一环,可以帮助我们: 1、与开发达成需求共识 2、完善测试用例场景,测试数据共识...

  • 产品设计规范

    一、设计流程 需求分析记录需求,分析整理,输入到【需求表】 场景分析用户场景分析,整理流程 脑洞大开内部讨论,功能...

  • 性能测试需求分析

    一、需求分析 业务分析 场景设置 心梗测试场景 业务场景-订单流程 测试数据准备 性能测试目标 订单流程的场景

  • 需求分析-04角色与场景分析

    用例分析包括两个有机的组织部分:用例图是目录,用例描述是封装所有需求的形式。 用例图image.png 用例描述与...

  • 软件测试常见问题

    1、软件测试流程是什么? ①需求分析,需求评审②编写测试计划③编写测试用例,用例评审④执行测试,提交bug,回归测...

  • UML笔记

    继承 多态 封装 抽象 用例描述:用例名 用例编号参与者用例描述前置条件后置条件基本流程替代流程 领域模型是对概...

网友评论

      本文标题:Storj用例场景与流程分析

      本文链接:https://www.haomeiwen.com/subject/mznelqtx.html