go-kit是什么?
gokit是构建golang微服务的工具集,能够帮助我们构建基础的、可靠的、可扩展的微服务,使用go语言实现的。
架构设计
gk使用分层模式,如果你是从PHP、Ruby、Django等语言过渡到go语言,那么经典的MVC分层肯定很熟悉,gk的也分为三层:
1.Transport层 (传输)
2.Endpoint层 (终点)
3.Service层 (逻辑服务)
请求从1->3, 响应从3->1
Transports 层
transport 域会绑定到具体的传输协议上,例如:HTTP或者gRPC; 总而言之,微服务可能会支持多种传输协议;这是非常重要且强力的,可以在一个简单的微服务中支持HTTP API和 RPC service。
当实现一个Restful HTTP API时,路由定义在httptransport中. 设置的路由代码如下:
userRegisterHandler := httptransport.NewServer(
selfendpoint.MakeUserRegisterHandler(s),
decodeUserRegisterRequest,
encodeUserRegisterResponse,
opt...,
)
r := mux.NewRouter()
r.Handle("/user/register", userRegisterHandler).Methods("POST")
Endpoints 层
endpoint 就像controller中的action/handler;该层是处理reque