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 的全部内容
/*
*/
}
PS:以上代码只是自己笔记使用,因为刚入手 go 不熟,仅供学习。
文件上传中转,如果是较大的文件,则采用将数据分片传输的方式进行。
Go语言实现FastDFS分布式存储系统WebAPI网关的更多相关文章
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...
- 一文搞定FastDFS分布式文件系统配置与部署
Ubuntu下FastDFS分布式文件系统配置与部署 白宁超 2017年4月15日09:11:52 摘要: FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储.文件同步.文件访问(文件 ...
- FastDFS分布式文件系统
FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...
- FastDFS 分布式文件系统部署实战及基本使用
FastDFS 分布式文件系统部署实战及基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. FastDFS是一个开源的高性能分布式文件系统.它的主要功能包括:文件存储,文件同步 ...
- CentOS7 安装FastDFS分布式文件系统
CentOS7 安装FastDFS分布式文件系统 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家 ...
- Linux FastDFS 分布式文件系统安装
Linux FastDFS 分布式文件系统安装 2013 年 3 月 11 日 – 09:21 | 930 views | 收藏 (No Ratings Yet) FastDFS是一款类Google ...
- django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除
运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...
- [转载] 360分布式存储系统Bada的设计和应用
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208931479&idx=1&sn=1dc6ea4fa28a ...
- 高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍
Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spa ...
随机推荐
- django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)
在python的开发中,遇到了这个错误: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TA ...
- 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
网上看到关于微信官方的跨平台跨业务的终端基础组件Mars的介绍文章,转载这这里.源代码: https://github.com/Tencent/mars作者:男人链接:https://zhuanlan ...
- Hadoop2.0中单点故障解决方案总结---老董
Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的JobTracker和HDFS的NameNode两个核心服务均存在单点问题, ...
- Django框架之模板语法(重要!)
一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 1.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键 ...
- BOM对象,math对象document对象的属性和操作和 事件的基本操作
Math对象 //该对象中的属性方法 和数学有关. abs(x) 返回数的绝对值. exp(x) 返回 e 的指数. floor(x) 对数进行下舍入. log(x) 返回数的自然对数(底为e). m ...
- 微信小程序之日期与时间插件
页面 <picker mode="time" value="{{time}}" start="{{minTime}}" end=&qu ...
- mfc学习---文档视图架构
MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用.单文档应用(SDI)和多文档应用(MDI). 一般情况下,采用文档/视结构的应用程序至少应由以下对象组成: 1. ...
- Mspec
Machine.Specifications Machine.Specifications (MSpec) is a context/specification framework that remo ...
- CF932E Team Work(第二类斯特林数)
题目 CF932E Team Work 前置:斯特林数\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ &\sum\limits_{i=1}^n C_ ...
- 20145201 实验二 Java面向对象程序设计
20145201实验二 Java面向对象程序设计 初步掌握单元测试和TDD 实验步骤 (一)单元测试 (1) 三种代码 编程是智力活动,不是打字,编程前要把干什么.如何干想清楚才能把程序写对.写好.与 ...