go-kit 源码解析
2022-08-14 10:48:09 0 举报
AI智能生成
go-kit 源码解析
作者其他创作
大纲/内容
示例代码
github
更加详细的代码示例
说明
go-kit 是一个微服务的框架
提供了公共的代码框架
go-kit 的源码非常简单
项目代码结构
main.go
程序入口
service.go
业务逻辑处理
transport.go
Request 定义, 解码请求
Response 定义, 编码请求
包装 service 为 endpoint
logging.go
包装 logger
主要用于业务代码的特殊日志
instrumenting.go
metric 相关
proxying.go
代理相关
使用 goBreaker 来实现断路器,实际上就是两层函数包装
实现
重要的接口
endpoint.Endpoint 业务逻辑处理
DecodeRequestFunc 解码 request
EncodeResponseFunc 编码 response
ServerOption 参数设置
http
示例
m.Handle("/sum", httptransport.NewServer(
endpoints.SumEndpoint,
decodeHTTPSumRequest,
encodeHTTPGenericResponse,
append(options, httptransport.ServerBefore(opentracing.HTTPToContext(otTracer, "Sum", logger)))...,
))
endpoints.SumEndpoint,
decodeHTTPSumRequest,
encodeHTTPGenericResponse,
append(options, httptransport.ServerBefore(opentracing.HTTPToContext(otTracer, "Sum", logger)))...,
))
grpc
示例
grpctransport.NewServer(
endpoints.SumEndpoint,
decodeGRPCSumRequest,
encodeGRPCSumResponse,
append(options, grpctransport.ServerBefore(opentracing.GRPCToContext(otTracer, "Sum", logger)))...,
)
endpoints.SumEndpoint,
decodeGRPCSumRequest,
encodeGRPCSumResponse,
append(options, grpctransport.ServerBefore(opentracing.GRPCToContext(otTracer, "Sum", logger)))...,
)
0 条评论
下一页