一些用golang开发的存储项目

回复

lei 发起了问题 • 1 人关注 • 0 个回复 • 141 次浏览 • 2 天前 • 来自相关话题

http REST API 验证库

toukii 发表了文章 • 0 个评论 • 90 次浏览 • 3 天前 • 来自相关话题

httpvf

http REST API verify,验证REST API 是否正确,书写脚本。必要时运行脚本,查看是否全部通过验证。查看全部

httpvf


http REST API verify,验证REST API 是否正确,书写脚本。必要时运行脚本,查看是否全部通过验证。


安装


go get github.com/toukii/httpvf/vf

示例


vf.yml:


-
url: http://upload.daoapp.io/topic
method: POST
header:
Content-Type: "application/x-www-form-urlencoded"
body: "title=topic001&content=content001"
resp:
code: 200
cost: 900
-
url: http://upload.daoapp.io/loadfile/topic001
method: GET
resp:
code: 200
cost: 80
body: content001
-
url: http://localhost:8080/uploadform/
method: POST
filename : vf.yml
resp:
code: 200
cost: 10

验证:


vf -v vf.yml

请求




  • url: [请求地址]




  • method: [请求方法]




  • body: [请求body]




  • n: [请求个数]




  • interval: [请求间隔]




  • runtine: [请求并发数]




  • upload: [web前段传入的文件名(input name)]@[上传文件名]



  • header: 请求的header参数,map结构


header:
Content-Type: "application/x-www-form-urlencoded"


  • param: GET 请求的参数,map结构


param:
name: toukii
position: dev-ops

验证返回body




  • code: [响应码]




  • cost: [响应时间,单位ms]




  • body: [直接验证内容]



  • regex: [正则表达式]


json




  • 路径以","分割




  • 路径若有纯数字,为数字加上""




  • 数组下标从0开始,直接写数字


    例如,返回的json内容如下:




[
{
"Map": {
"1": "hello"
},
"Message": "This is toukii,r1",
"Cost": 0.315
}
]

验证hello的写法为:


json: 
'0,Map,"1"': hello

处理文件上传的工具包 - fuh

lyric 发表了文章 • 0 个评论 • 93 次浏览 • 4 天前 • 来自相关话题

处理文件上传的工具包 - fuh

在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一... 查看全部

处理文件上传的工具包 - fuh


在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一块单独抽离出来,做成了一个简单的工具包。主要特点是:



  • 支持自定义文件存储

  • 支持自定义文件名

  • 支持自定义文件大小限制


引入简单,方便,欢迎来拍砖!谢谢!


$ go get github.com/LyricTian/fuh

package main

import (
"encoding/json"
"net/http"

"github.com/LyricTian/fuh"
)

func main() {
http.HandleFunc("/fileupload", func(w http.ResponseWriter, r *http.Request) {
finfo, err := fuh.Upload(r, "file", nil, nil)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
json.NewEncoder(w).Encode(finfo)
})

http.ListenAndServe(":8080", nil)
}

gmcache一个用go写的分布式缓存,类似memcached

stirlingx 发表了文章 • 0 个评论 • 228 次浏览 • 2017-01-19 16:01 • 来自相关话题

主要是用来练手的,欢迎大家仍砖头

  • 使用ectd做服务发现
  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。

项目地... 查看全部

主要是用来练手的,欢迎大家仍砖头



  • 使用ectd做服务发现

  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。


项目地址:


https://github.com/liyue201/gmcache


Gmcache


A distributed key/value memory cache written in go.


Features



  • Light weight

  • Pure golang

  • Supports set,get and delete

  • Supports grpc and http protocols

  • Scalable architecture


Architecture


gmcache-cluster

beegoapix - beego api extension

luffyke 发表了文章 • 0 个评论 • 161 次浏览 • 2017-01-18 15:43 • 来自相关话题

简介

beegoapix是一个beego API开发框架,用于快速开发API服务。

安装

go get github.com/lu... 			查看全部
					

简介


beegoapix是一个beego API开发框架,用于快速开发API服务。


安装


go get github.com/luffyke/beegoapix

功能



  1. 统一API请求处理和返回(v0.1)

  2. 统一日志处理(v0.1)

  3. 异常控制(v0.1)

  4. API版本控制(v0.2)

  5. API权限控制(v0.2)

  6. 组合接口

  7. 接口缓存

  8. 自定义请求


示例


首先确保安装beego和bee工具。


新建Api项目


bee api hello

编辑router.go,添加api路由


package routers

import (
"hello/controllers"
"github.com/luffyke/beegoapix"
)

func init() {
beegoapix.Router()
// add your business path mapping
beegoapix.RegController("app", controllers.AppController{})
}

实现业务controller


package controllers

import (
"github.com/luffyke/beegoapix/api"

"github.com/astaxie/beego/logs"
)

type AppController struct {
}

func (this *AppController) CheckVersion(request api.ApiRequest) (response api.ApiResponse) {
logs.Debug(request.Id)
logs.Debug(request.Data["versionCode"])
response.Data = make(map[string]interface{})
response.Data["versionName"] = "version name 1.0"
return response
}

运行服务


bee run

测试请求


http://localhost:8080/v1/app/check-version

请求示例


{
"id":"12345678",
"sign":"abc",
"client":{
"caller":"app",
"os":"android",
"ver":"1.0",
"platform":"android",
"ch":"offical",
"ex":{
"imei":"1a2b3c"
}
},
"page":{
"page":1,
"size":10
},
"user":{
"uid":"123",
"sid":"abc"
},
"data":{
"versionCode":"v1.0.0"
}
}

返回

{
"state": {
"code": 0,
"msg": ""
},
"data": {
"versionName": "version name 1.0"
}
}

Android 示例


参考项目 beegoapix-android-demo

go-workerpool 支持每分钟百万并发的抽象原型

qianguozheng 发表了文章 • 0 个评论 • 190 次浏览 • 2017-01-14 23:15 • 来自相关话题

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。

基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数

源码地址

查看全部

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。


基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数


源码地址


https://github.com/qianguozheng/go-workerpool.git


用途



  1. 控制goroutine的数目

  2. 简练模型


实际使用场景及灵感来源


http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/

Grumpy:Google开源神器 Go上运行Python

wwdyy 发表了文章 • 0 个评论 • 390 次浏览 • 2017-01-07 13:46 • 来自相关话题

Grumpy是一个Python to Go的源码源代码翻译编译器和运行时,旨在取代CPython 2.7。

关键区别在于,Grumpy是将Python源码编译为Go源代码,然后将其编译为本地代码,而不是字节码。这也就意味着Grumpy没... 查看全部

Grumpy是一个Python to Go的源码源代码翻译编译器和运行时,旨在取代CPython 2.7。


关键区别在于,Grumpy是将Python源码编译为Go源代码,然后将其编译为本地代码,而不是字节码。这也就意味着Grumpy没有虚拟机(VM)。编译好的Go源码是对Grumpy运行时的一系列调用,一个Go库服务于具有相似目的的Python C API(尽管不直接支持C API)。


运行Grumpy程序


方法1:grumprun:


执行Grumpy程序的最简单方法就是使用make run,它封装了一个名为grumprun的shell脚本,它将stdin上的Python代码基于Grumpy构建和运行。以下所有的命令都假设从Grumpy源码根目录开始运行:


echo "print 'hello, world'" | make run

方法2:grumpc


对于复杂一些的程序,你需要使用grumpc把Python代码编译成Go源码以后再进行构建。首先,写一个简单的.py脚本;


echo 'print "hello, world"' > hello.py

接下来,创建工具链并导出一些使工具链工作的环境变量:


 make

export GOPATH=$PWD/build

export PYTHONPATH=$PWD/build/lib/python2.7/site-packages

最后,编译Python脚本并从中构建一个二进制文件:


tools/grumpc hello.py > hello.go

go build -o hello hello.go

好了,现在执行./hello二进制到你的核心内容里即可。


关于Grumpy更多内容,大家可以访问其源码托管地址:https://github.com/google/grumpy

Gitea 发布 1.0.1版本

lunny 发表了文章 • 0 个评论 • 231 次浏览 • 2017-01-05 22:52 • 来自相关话题

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 查看全部

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 9 个提交请求。你可以从 下载页面 下载二进制文件,注意选择适合你的平台。更多详细安装信息请参见 安装向导.


变更日志



  • BUGFIXES

    • Fixed localized MIN_PASSWORD_LENGTH #501

    • Fixed 500 error on organization delete #507

    • Ignore empty wiki repo on migrate #544

    • Proper check access for forking #563

    • Fix SSH domain on installer #506

    • Fix missing data rows on admin UI #580

    • Do not delete tags with releases by default #579

    • Fix missing session config data on admin UI #578

    • Properly show the version within footer on the UI #593


数人云Mesos调度器Swan v0.2最新功能演示

数人云 发表了文章 • 0 个评论 • 183 次浏览 • 2016-12-29 11:00 • 来自相关话题

数人云Mesos调度器Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。小数带来了Swan v0.2的新版本,添加了很多新功能,工程师为了... 查看全部

数人云Mesos调度器Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。小数带来了Swan v0.2的新版本,添加了很多新功能,工程师为了大家更好地了解Swan的新功能,为大家提供了录屏,欢迎收看!


腾讯地址:
https://v.qq.com/x/page/p0358dzspz5.html


Fork me on GitHub!
https://github.com/Dataman-Cloud/swan


关于数人云Mesos调度器Swan


Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

【goxel】Go 版的 axel 小工具

山羊wayne 发表了文章 • 0 个评论 • 254 次浏览 • 2016-12-20 14:21 • 来自相关话题

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我... 查看全部

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我。


goxel




Description


goxel like axel tool

Installation


$ go get github.com/WayneZhouChina/goxel

Usage


goxel [options...] <url>

Options:
-n Numbers of blocks to run(must).
-H Add header string.
-v More status information.
-o Specify local output file(must).
-h Help information.
-V Version information.
-cpus Number of used cpu cores(Default is current machine cores).

Example:


goxel -n 10 -o outfile http://xxx.com

版本更新 | Mesos调度器Swan v0.2来啦

数人云 发表了文章 • 0 个评论 • 163 次浏览 • 2016-12-13 19:22 • 来自相关话题

数人云Mesos调度器 Swan开源已经... 查看全部


数人云Mesos调度器 Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。今天小数带来了Swan v0.2的新版本,添加了很多新功能,大家快来看看吧——




Feature List



  • Uri 支持:支持自定义资源,支持多资源下载

  • PortIndex:支持端口命名,健康检测支持portIndex,portName和portValue

  • Cli:命令行工具

  • Heathcheck:支持mesos自带的healthcheck,http和tcp两种

  • Raft:高可用,分布式数据复制和leader选举

  • Proxy:自带proxy功能,支持负载均衡

  • DNS:自带DNS功能,支持域名解析

  • 一容器一IP:支持IP地址固定分配,一容器一IP

  • Constraints:支持约束条件,UNIQUE和LIKE


Fork me on GitHub!
https://github.com/Dataman-Cloud/swan


关于数人云Mesos调度器Swan


Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

Go 语言 http/https 文件服务器

Akagi201 发表了文章 • 0 个评论 • 219 次浏览 • 2016-12-09 16:49 • 来自相关话题

serve

Repo: https://github.com/Akagi201/serve

Simple http serve... 查看全部

serve


Repo: https://github.com/Akagi201/serve


Simple http server for localhost development


Features



  • [x] Use gohttp as http framework.

  • [x] Static http file server.

  • [x] Support https.

  • [ ] Support http2.

  • [ ] Support WebSocket.

  • [ ] Support browser-sync like features.


Build



  • docker: docker build -t serve .

  • go build -o serve


Install



  • go get github.com/Akagi201/serve


Run



  • ./serve -h

  • openssl genrsa -out server.key 2048

  • openssl req -new -x509 -key server.key -out server.crt -days 365

  • sudo ./serve --http=0.0.0.0:8888 --domains=akagi201.org

Go 语言 udpproxy 调试工具

Akagi201 发表了文章 • 0 个评论 • 125 次浏览 • 2016-12-09 16:47 • 来自相关话题

udpproxy


Repo: https://github.com/Akagi201/udpproxy


A simple UDP Proxy Server in Golang.


Features



  • [x] one source, multi target based on copy.


Build



  • docker: docker build -t udpproxy .

  • go build main.go -o udpproxy


Run



  • --source: data source, default source is :2203.

  • --target: data target, e.g. ip:port.

  • --quiet: whether to print logging info or not.

  • --buffer: default is 10240.

最简 Go 语言 类 koa web 框架

Akagi201 发表了文章 • 0 个评论 • 248 次浏览 • 2016-12-09 13:19 • 来自相关话题

light


Repo: https://github.com/Akagi201/light


Build Status Coverage Status Go Report Card GoDoc


light


Light is a minimal web framework in Go.


Features



  • [x] Use pat as http router

  • [x] Use alice to manage middlewares.


Install



  • go get github.com/Akagi201/light


Import



  • import "github.com/Akagi201/light"

Go 语言 httpdump server 调试工具

Akagi201 发表了文章 • 0 个评论 • 151 次浏览 • 2016-12-09 13:17 • 来自相关话题

httpdump


Repo: https://github.com/Akagi201/httpdump


Simple Golang HTTP Server which dumps the incoming client headers and body


Build



  • docker: docker build -t httpdump .

  • go build main.go -o httpdump


Run



  • --host: default host is 0.0.0.0.

  • --port: default port is 2222.