Automaticly provide RESTful API for gRPC

回复

jmzwcn 回复了问题 • 2 人关注 • 1 个回复 • 115 次浏览 • 11 小时前 • 来自相关话题

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

qianguozheng 发表了文章 • 0 个评论 • 115 次浏览 • 6 天前 • 来自相关话题

使用 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/

supervisor的client api

foolbread 发表了文章 • 4 个评论 • 80 次浏览 • 3 天前 • 来自相关话题

最近项目需要,自己利用supervisor提供的接口,封装了一个golang的client api

项目地址:https://githu...

力争做最好的go模板引擎

Lime 发表了文章 • 1 个评论 • 236 次浏览 • 3 天前 • 来自相关话题

一直觉得 go 没有一个好用的模板引擎,渲染 html 的时候特别痛苦,总有一种有力气却使不出来的感觉。

模板引擎一般有两种实现方式,一种是解析 html 语法树,然后根据一定的规则动态的拼接,另外一种是把模板预先生成代码,渲染模板时调用相... 查看全部

一直觉得 go 没有一个好用的模板引擎,渲染 html 的时候特别痛苦,总有一种有力气却使不出来的感觉。


模板引擎一般有两种实现方式,一种是解析 html 语法树,然后根据一定的规则动态的拼接,另外一种是把模板预先生成代码,渲染模板时调用相关的函数即可。


Go 内置的 template 包使用的是第一种方式,不过很多开源项目使用的是第二种方式,比如 quicktemplate 、 gorazor 等。不过这两个可能由于设计的问题,都没有实现模板继承和模板 include ,而且有的语法个人觉得不是太优雅。


所以我想要一个 go 模板,它具备以下特性:


原生的 golang 语法



  • 支持模板植入代码

  • 支持模板继承和 include

  • 高性能

  • 语法简单、优雅

  • 自动编译


基于以上,实现了 hero 模板引擎,用过 nodejs EJS 模板引擎的童鞋应该很容易上手。 hero 目前已经在 http://bthub.io 线上使用。


Github: https://github.com/shiyanhui/hero


Gophers ,欢迎 issues 和 pr ,让我们一起共同打造 golang 最好的模板引擎!

beegoapix - beego api extension

luffyke 发表了文章 • 0 个评论 • 57 次浏览 • 2 天前 • 来自相关话题

beegoapix

beegoapix is beego api extension framework, to develop more faster api service.

Install

查看全部
					

beegoapix


beegoapix is beego api extension framework, to develop more faster api service.


Install


go get github.com/luffyke/beegoapix

Function



  1. accept all client http request, reflect and call sub-controller to handle request(v0.1)

  2. log request and response(v0.1)

  3. error handling(v0.1)

  4. version control(v0.2)

  5. priviledge(v0.2)

  6. combine controller

  7. cache(etag)


Demo


make sure have installed beego and bee tool.


new api project


bee api hello

edit router.go


package routers

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

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

write your business 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
}

run the server


bee run

post the request


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

request


{
"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"
}
}

response

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

Android demo


please reference to project beegoapix-android-demo

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

stirlingx 发表了文章 • 0 个评论 • 80 次浏览 • 1 天前 • 来自相关话题

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

  • 使用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