Go语言实现FastDFS分布式存储系统WebAPI网关

前言

  工作需要,第一次使用 Go 来实战项目。

  需求:采用 golang 实现一个 webapi 的中转网关,将一些资源文件通过 http 协议上传至 FastDFS 分布式文件存储系统。

一、FastDFS 与 golang 对接的代码

  github:https://github.com/weilaihui/fdfs_client

  源代码可以 clone 下来看看,go 语法很简单

  基本使用:(client_test.go 中有 test 案例代码)  

package main

import (
    "fmt"
    "io/ioutil"
    "github.com/weilaihui/fdfs_client"
)

func main() {

    ff, _ := ioutil.ReadFile("1.jpg")
    fmt.Println("image len:", len(ff))
    /*
    hosts := []string{"10.0.1.32"}
    port := 22122
    minConns := 10
    maxConns := 150
    connPool,_ := fdfs_client.NewConnectionPool(hosts, port, minConns, maxConns)
    */
    path := "client.conf"
    fds, error := fdfs_client.NewFdfsClient(path)

    if fds == nil {
        fmt.Println("conn error: %s", error)
        var test string
        fmt.Scanln(&test)
        return
    }
    uploadResponse, err := fds.UploadByBuffer(ff, "jpg")

    if uploadResponse == nil {
        fmt.Println("upload error: %s", err)
        var test string
        fmt.Scanln(&test)
        return
    }
    fmt.Println("group name:", uploadResponse.GroupName)
    fmt.Println("remote file id:", uploadResponse.RemoteFileId)

    var test string
    fmt.Scanln(&test)
}

二、简单的 WebAPI 网关

  beego 框架 go 圈很有名气,国内大学著作,考虑到这次工程较小,暂未使用起来。

  go 实现一个 api 网关也是相当的简单:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
        rw.Write([]byte("Hello go web"))
    })
    http.HandleFunc("/upload", upload)
    http.ListenAndServe("localhost:8888", nil)
    fmt.Println("End.")
}

func upload(rw http.ResponseWriter, req *http.Request) {
     fmt.Println("Header", req.Header)
     fmt.Println("Content-Type", req.Header.Get("Content-Type"))
     fmt.Println("Body", req.Body)
     // 获取 body 的全部内容

    len := req.ContentLength

    body := make([]byte, len)

    req.Body.Read(body)

    rw.Write([]byte("Response Body ...."))

}

PS:以上代码只是自己笔记使用,因为刚入手 go 不熟,仅供学习。

文件上传中转,如果是较大的文件,则采用将数据分片传输的方式进行。

原文地址:https://www.cnblogs.com/loongsoft/p/9323235.html

时间: 2024-10-23 14:22:55

Go语言实现FastDFS分布式存储系统WebAPI网关的相关文章

FastDFS(分布式存储系统)+nginx web 服务器

先来一波介绍: 指纹是指系统给每一个文件指定的唯一的id,使文件能唯一指定. 如果不同用户存储的文件有相同的部分,则直接将之前用户相同部分拿来调用,省去了重复上传和下载的工作. tracker-server与storage-server都是可以分小组进行工作的,这样有利于不同的操作同时进行,同时存储容量扩张的话只需要增加小组数量,比较方便. 文件上传流程: 文件下载流程: 与nginx配合使用:(nginx适用于访问量大的情况) nginx要与FastDFS配合使用,需要安装上图中的2(一个包)

FastDFS分布式文件系统配置与部署

? ? ? FastDFS分布式文件系统配置与部署 白宁超 2017年4月14日 ? ? 注:1.1-1.4节是对FastDFS基本配置,如果读者只是安装分布式文件系统,简单关注其原理建议阅读1.2节与1.5节.如果读者仅仅就是安装为目的建议直接阅读1.5节. 本人邮箱:[email protected] 主页网址:http://www.cnblogs.com/baiboy/ ? 目录 ? 1.1 分布式文件系统介绍????1 1.2 系统架构介绍????1 1.3 FastDFS性能方案???

Ceph分布式存储系统

Ceph分布式存储系统 Ceph是根据加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上).高性能及高可靠性.Ceph其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是"Sammy",一个香蕉色的蛞蝓,就是头足类中无壳的软体动物.这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻. 其设计遵循了三个原则:数据与元数据的分离,动态的分布式的元数据管理,可靠统一的分布

tenginx+ImageMagick+Lua+FastDfs分布式自动缩略图

1.安装ImageMagick图片处理软件 [[email protected] ~]# tar xvf ImageMagick-6.4.0-0.tar.gz [[email protected] ~]# cd ImageMagick-6.4.0 [[email protected] ImageMagick-6.4.0]# ./configure --prefix=/usr/local/ImageMagick-6.4.0 [[email protected] ImageMagick-6.4.0]

FastDFS分布式文件存储

  存储能力是提供给上层业务系统以实现文件存取服务,这个存储能力为XDFS,即可扩展的分布式文件系统,实现的原理是封装了第三方的分布式存储系统实现的. 目前封装的第三方分布式系统包括FastDFS.Hadoop的HDFS,所提供的存储接口如下: 1  文件上传 2 文件断点上传 3 文件下载 4 文件断点下载 5  文件删除 6 获取文件大小 7  获取文件Http下载地址 8 批量获取文件Http下载地址 FastDFS适合的场景是互联网大中型企业的高并发文件存储服务,比如存储图片.音频.视频

FastDFS 分布式文件系统 搭建部署

搭建部署FastDFS 分布式文件系统 什么是分布式文件系统 分布式文件系统 ( Distributed File System ) 是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连 分布是文件系统的设计基于客户机/服务器模式 一个典型的网络可能包括多个供多用户访问的服务器 对等特性允许一些系统扮演客户机和服务的双重角色 衡量分布式文件系统的优劣 数据的存储方式 数据的读取速率 数据安全机制 FastDFS介绍 FastDFS是一款开源分布式文件系统,它用纯

django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除

运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.168.1.216 192.168.1.217 我们只需要在配置文件中进行配置即可,然后利用客户端提供的接口通过简单的代码就可以将文件上传到分布式文件系统中 至于内部实现机制,可以参考我的另外一篇博客:分布式文件系统Fastdfs原理及部署 再次提醒在安装客户端可能会遇到各种不可控的因素,导致你上传失败

FastDFS 分布式文件存储

FastDFS 分布式文件存储 什么是FastDFS? FastDFS是一个开源的轻量级的分布式文件系统.他解决了大量数据存储和负载均衡等问题.特别适合以中小文件(4KB < FileSize < 500MB)为载体的在线服务,如视频,音频,图片网站等等.FastDFS是一款开源的轻量级分布式文件系统,他是由纯 C 实现,支持Linux,FreeBSD等UNIX系统类,不是通用的文件系统,只能通过专有的API访问,目前提供了C.Java和PHP API为互联网应用量身定做,解决大容量文件存储问

一、分布式存储系统概念与分类

分布式存储系统概念: 大量普通PC服务器通过互联网,对外作为一个整体存储服务. 特性:可扩展(随着集群的增加,系统的性能呈线性增长); 低成本(系统的自动容错.自动均衡机制使其可以构建在普通的PC上); 高性能(针对单台服务器还是整个集群,都要求系统具备高性能): 易用(提供易用的接口,具备完善的监控.运维工具,能方便地与其他系统集成). 分类: