kratos 框架對傳輸層進行了抽象,用戶可以通過實現(xiàn)接口來接入實現(xiàn),框架默認實現(xiàn)了gRPC和HTTP兩種通信協(xié)議傳輸層。用戶在實現(xiàn)通訊協(xié)議傳輸層時可以參考一下官方實現(xiàn)的代碼。
server
?// 服務(wù)的啟動和停止,用于管理服務(wù)生命周期。
type Server interface {
Start(context.Context) error
Stop(context.Context) error
}
Transporter
?type Transporter interface {
// 代表實現(xiàn)的通訊協(xié)議的種類,如內(nèi)置的 http grpc,也可以實現(xiàn)其他的類型如 mqtt,websocket
Kind() Kind
// 提供的服務(wù)終端地址
Endpoint() string
// 用于標識服務(wù)的完整方法路徑
// 示例: /helloworld.Greeter/SayHello
Operation() string
// http 的請求頭或者 grpc 的元數(shù)據(jù)
Header() Header
}
Endpointer
?type Endpointer interface {
// 用于實現(xiàn)注冊到注冊中心的終端地址,如果不實現(xiàn)這個方法則不會注冊到注冊中心
Endpoint() (*url.URL, error)
}
使用方式將 http 或 grpc 注冊到 server 中
app := kratos.New(
kratos.Name(Name),
kratos.Server(
httpSrv,
),
)
更多建議: