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 ...
随机推荐
- 2015-03-12——简析DOM2级事件
DOM2级事件 事件的几种类型:对象事件,鼠标事件,键盘事件,表单事件,W3CDOM事件,以及针对浏览器的事件. 对象事件:window对象,也是javascript对象.load 适用于windo ...
- java URL 利用网址api 查出手机号归属地
手机号码归属地查询api接口 1.淘宝网API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=手机号码参数:tel:手机号码返 ...
- pdb
core code: import pdb pdb.set_trace() 单步执行并进入:s 单步执行并不进入:n 下一断点:c 当前位置:where 从当前函数返回:r 退出:q pdb comm ...
- cookies设置时间
默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间. Response.Cookies("user_name").Expires=Date ...
- action接收请求参数
一.采用基本类型接收请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能接收自动接收请求参数并赋给同名属性. action的代码: public class Pa ...
- Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)
一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应 ...
- numpy.linspace介绍
numpy.linspace:在指定范围内返回均匀间隔的数组 In [12]: import numpy as np In [13]: result = np.linspace(1,10) #默认生成 ...
- is和==
==判断两个对象值是否相等 is表示两个变量是否指向一块对象
- List和Set区别
1. Set 接口实例存储的是无序的,不重复的数据.List 接口实例存储的是有序的,可以重复的元素. 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有Ha ...
- boot空间不足,删除Ubuntu旧内核
0 Problem 今天打开电脑的时候ubuntu提示boot空间不足.查了资料,原来Ubuntu的自动升级并没有删除系统的旧内核,于是boot下旧的内核文件越积越多,最后就满了. 1 Solutio ...