前言

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

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

一、FastDFS 与 golang 对接的代码

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

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

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

package mainimport ("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 := 22122minConns := 10maxConns := 150connPool,_ := 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 stringfmt.Scanln(&test)return}uploadResponse, err := fds.UploadByBuffer(ff, "jpg")if uploadResponse == nil {fmt.Println("upload error: %s", err)var test stringfmt.Scanln(&test)return}fmt.Println("group name:", uploadResponse.GroupName)fmt.Println("remote file id:", uploadResponse.RemoteFileId)var test stringfmt.Scanln(&test)
}

二、简单的 WebAPI 网关

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

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

package mainimport ("fmt""net/http"
"io/ioutil"
)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 ...."))

   */
data, _ := ioutil.ReadAll(req.Body)
}

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

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

转载于:https://www.cnblogs.com/loongsoft/p/9323235.html

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

  1. 搭建FastDFS分布式文件存储系统教程

    转载来源:https://github.com/happyfish100/fastdfs/wiki 搭建FastDFS分布式文件存储系统教程 环境准备 使用的系统软件 名称 说明 centos 7.x ...

  2. FastDfs分布式文件存储系统

    FastDfs分布式文件存储系统 FastDfs 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适 ...

  3. Docker部署Fastdfs分布式文件存储系统

    Docker部署Fastdfs分布式文件存储系统 Fastdfs分布式文件存储系统 拉取镜像 部署Tracker和Storage 开放端口 SpringBoot代码示例 Fastdfs分布式文件存储系 ...

  4. 超简单用Docker安装FastDFS分布式文件存储系统

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. Docker安装FastDFS分布式文件存储系统 ...

  5. Docker安装分布式存储系统(FastDFS)

    Docker安装分布式存储系统(FastDFS) docker中有FastDFS的镜像可以直接执行下面的命令: docker pull delron/fastdfs 查看docker中FastDFS的 ...

  6. ceph存储原理_热门的分布式存储系统ceph入门介绍

    一.什么是ceph ceph是当前最热门的分布式存储系统之一,是软件定义存储(SDS,SoftwareDefinedStorage)解决方案中的典范.其具备良好的可靠性.可扩展性,应用范围包括块存储( ...

  7. 开源分布式存储系统的对比

    我们在选型开源分布式存储系统框架之前需要对不同的框架进行调研. 所有的开源存储系统介绍链接 存储系统对比 目前比较热门的分布式文件系统有如下几种: Ceph,GlusterFS,Sheepdog,Lu ...

  8. 分布式存储系统 Ceph 介绍与环境部署

    文章目录 一.概述 二.Ceph 架构 三.Ceph核心组件介绍 四.Ceph 三种存储类型 1)块存储服务(RBD) 2)文件系统存储服务(CephFS) 3)对象存储服务(RGW) 五.Ceph版 ...

  9. FastDFS 分布式文件系统详解

    FastDFS 分布式文件系统详解 什么是文件系统 文件系统是操作系统用于在磁盘或分区上组织文件的方法和数据结构.磁盘空间是什么样的我们并不清楚,但文件系统可以给我们呈现一个非常清晰的表象,我们可以创 ...

最新文章

  1. PDMan-2.1.3 发布:用心开源,免费的国产数据库建模工具
  2. Leetcode 242. 有效的字母异位词 解题思路及C++实现
  3. 为什么算法渐进复杂度中对数的底数总为2
  4. 29、Power Query-分支语句的进阶
  5. goto在c语言中的作用,关键字goto在C语言中的使用
  6. python子类继承父类属性实例_python – 从子类内的父类访问属性
  7. ERROR: Cannot unpack file C:\Users\admin\AppData\Local\Temp\pip-unpack-yo8pmupp\simple.htm (download
  8. 测试 第七章 循环结构进阶 1205 草稿
  9. Java中接口定义成员变量
  10. LINUX使用C执行系统命令ping,读取执行结果的崩溃日志
  11. python获取文件修改时间_Python-获取文件最后修改时间 | 学步园
  12. pwn题shellcode收集
  13. 论坛介绍 | COSCon'22 开源操作系统(O)
  14. 插件化Amigo-1
  15. PTA浙大版《C语言程序设计(第3版)》练习2-4 温度转换
  16. 非常实用的12条 SQL 优化方案
  17. 解决Xcode Simulator 黑屏问题
  18. 水浒二十八回--施恩重霸孟州道 武松醉打蒋门神
  19. 使用Cpolar+freekan源码 创建在线视频网站
  20. 本草纲目pdf彩图版下载_本草纲目下载|本草纲目彩色图集精编珍藏版下载pdf高清版下载_最火手机站...

热门文章

  1. java中的常用日期类_Java中的常用日期类说明
  2. mysql 6安装当前密码_MySQL8.0 安装踩坑指南
  3. 10个必知的网页设计术语计算机与网络,计算机网络专业毕业论文-网页设计与制作(23页)-原创力文档...
  4. js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
  5. android json 解析图片,JSON解析并获取android中的图像
  6. 【C++进阶】 遵循TDD原则,实现平面向量类(Vec2D)
  7. web安全----XSS漏洞之基本原理
  8. 华为鸿蒙os电视测评,高端技术下放毫不吝啬!华为智慧屏SE系列评测:鸿蒙OS让入门大屏也好用...
  9. 2013_hangzhou_online
  10. 7. 整数反转 golang