codecamp

Kitex 服务注册扩展

服务注册扩展

Kitex 支持自定义注册模块,使用者可自行扩展集成其他注册中心,该扩展定义在 pkg/registry 下。

扩展接口和 Info 定义

  • 扩展接口

// Registry is extension interface of service registry.
type Registry interface {
  Register(info *Info) error
  Deregister(info *Info) error
}

  • Info 定义 Kitex 定义了部分注册信息,使用者也可以根据需要自行扩展注册信息到 Tags 中。

// Info is used for registry.
// The fields are just suggested, which is used depends on design.
type Info struct {
  // ServiceName will be set in kitex by default
  ServiceName string
  // Addr will be set in kitex by default
  Addr net.Addr
  // PayloadCodec will be set in kitex by default, like thrift, protobuf
  PayloadCodec string

  Weight        int
  StartTime     time.Time
  WarmUp        time.Duration

  // extend other infos with Tags.
  Tags map[string]string
}

集成到 Kitex

通过 option 指定自己的注册模块和自定义的注册信息。注意注册需要服务信息,服务信息也是通过 option 指定。

  • 指定服务信息

option: ​WithServerBasicInfo

ebi := &rpcinfo.EndpointBasicInfo{
    ServiceName: 'yourServiceName',
    Tags:        make(map[string]string),
}
ebi.Tags[idc] = "xxx"

svr := xxxservice.NewServer(handler, server.WithServerBasicInfo(ebi))

  • 指定自定义注册模块 option: ​WithRegistry

svr := xxxservice.NewServer(handler, server.WithServerBasicInfo(ebi), server.WithRegistry(yourRegistry))

  • 自定义 RegistryInfo Kitex 默认赋值 ServiceName、Addr 和 PayloadCodec,若需要其他注册信息需要使用者自行注入。option: ​WithRegistryInfo

svr := xxxservice.NewServer(handler, server.WithRegistry(yourRegistry), server.WithRegistryInfo(yourRegistryInfo))


Kitex Suite 扩展
Kitex 服务发现扩展
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }