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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Go