---
# System prepended metadata

title: go kit
tags: [架构设计, golang, micro service]

---

# go kit
---

go-kit的架构如图3所示，分为三层结构：Transport层，Endpoint层，Service层。

- **Transport层** 主要负责与传输协议HTTP，GRPC，THRIFT等相关的逻辑
- **Endpoint层**  主要负责request／response格式的转换，以及公用拦截器相关的逻辑
- **Service层**   专注于业务逻辑。

go-kit除了经典的分层架构外，还在endpoint层提供了很多公用的拦截器，如log，metric，tracing，circuitbreaker，rate-limiter等，来保障业务系统的可用性。它们在设计上有一个共同特点：都是同传输协议无关的。

在之前的一些http框架中，这些拦截器同传输协议是紧紧耦合在一起的，如果，此时我需要将某些HTTP接口改造成GRPC协议的接口，那么这些拦截器我还得再基于grpc再实现一遍，设计上存在一定的冗余。因此，借助go-kit这套工具集，我们就能很好的对transport协议，middleware进行扩展，且不会影响到业务本身的设计。

###### tags: `golang` `micro service` `架构设计`