go-kit
go-kit
是一个分布式的开发工具集,在大型的组织(业务)中可以用来构建微服务。其解决了分布式系统中的大多数常见问题,因此,使用者可以将精力集中在业务逻辑上。
go-kit的架构如图分为三层结构:Transport层,Endpoint层,Service层。
Transport层主要负责与传输协议HTTP,GRPC,THRIFT等相关的逻辑;
Endpoint层主要负责request/response格式的转换,以及公用拦截器相关的逻辑;
Service层则专注于业务逻辑,就是我们的业务类、接口等相关信息存放。
go-kit除了经典的分层架构外,还在endpoint层提供了很多公用的拦截器,如log,metric,tracing,circuitbreaker,rate-limiter等,来保障业务系统的可用性。
go-kit
go-kit demo(一)基于http访问
目录结构
目录结构
UserEndPoint.go
package myServices
//这里就是我们的业务类、接口等相关信息存放
type IUserService interface {
GetName(userId int) string
}
type UserService struct {
}
func (s UserService) GetName(uid int) string {
if uid == 10{
return "wangqiang"
}
return "xiaoqiang"
}
UserTransport.go
package main
import (
"example.com/myEndPoints"
"example.com/myServices"
"example.com/myTransports"
"github.com/go-kit/kit/transport/http"
"log"
sthttp "net/http"
)
func main() {
//业务接口服务
s := myServices.UserService{}
//使用myEndPoints创建业务服务
getName := myEndPoints.MakeServerEndPointGetName(s)
//使用 kit 创建 handler
// 固定格式
// 传入 业务服务 以及 定义的 加密解密方法
server := http.NewServer(getName, myTransports.GetNameDecodeRequest, myTransports.GetNameEncodeResponse)
//监听服务
log.Println(sthttp.ListenAndServe(":8080", server))
}
启动程序
image.png
image.png
image.png
作者:Feng_Sir
链接:https://www.jianshu.com/p/a4f81147f9ec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。