1. 简介:

①. go-kit是一个微服务工具包合集,自称toolkit,并非framework.

②. 利用它提供的API和规范可以创建微服务体系,可以自由组合搭建自己的微服务项目.

③. 并不是实现一个功能,其实,web框架或原生也可以实现.

2. 微服务体系的基本需求:

①. HTTP REST、RPC
②. 日志功能
③. 限流
④. API监控
⑤. 服务注册与发现
⑥. API网关
⑦. 服务链路追踪
⑧. 服务熔断

3. 三层架构:

①. Transport:
    a. 决定用哪种方式提供服务请求(http,rpc)
    b. 主要负责与HTTP、gRPC、thrift等通信的相关逻辑
    c. 怎么去传参、传什么?下面Endpoint只是定义.

②. Endpoint:
    a. 定义Request和Response格式,并可以使用装饰器包装函数,来实现各种中间件嵌套.
    b. go-kit的主要消息传递模式是RPC,端点表示单个RPC方法.
    c. Go工具包服务中的每个服务方法都转换为端点,便于在服务器和客户端之间进行RPC样式通信.
    d. 每个端点使用传输层通过使用HTTP或gRPC等具体传输将服务方法公开给外部.
       1. 可以使用多个传输来公开单个端点.
    e. 抽象的接收请求返回响应的函数类型,且调用service层的方法,组装成response返回.
    f. go-kit中的所有中间件组件都是通过装饰者设计模式注入的.

3、Service
   a. 业务类、接口等,具体实现什么功能.
   b. 不具有端点或HTTP或gRPC等具体传输的任何东西,或请求和响应消息类型的编码和解码.
   c. 每种服务方法都通过适配器转换为端点,并使用具体传输进行公开.可以使用多个传输来公开单个Go工具包服务.