Extension of Service Registry
Kitex supports user-defined registration module. Users can extend and integrate other registration centers by themselves. This extension is defined under pkg/registry.
Extension API and Definition of Info Struct
- Extension API
 
// Registry is extension interface of service registry.
type Registry interface {
	Register(info *Info) error
	Deregister(info *Info) error
}
- Definition of Info Struct Kitex defines some registration information. Users can also expand the registration information into tags as needed.
 
// 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
    
    // SkipListenAddr is used to prevent the listen addr from overriding the Addr(available from Kitex v0.10.0)
    SkipListenAddr bool
}
Integrate into Kitex
Specify your own registration module and customized registration information through option. Note that registration requires service information, which is also specified through option.
- 
Specify Server Info
option:
WithServerBasicInfoebi := &rpcinfo.EndpointBasicInfo{ ServiceName: "yourServiceName", Tags: make(map[string]string), } ebi.Tags[idc] = "xxx" svr := xxxservice.NewServer(handler, server.WithServerBasicInfo(ebi)) - 
Specify Custom Registion module
option:
WithRegistrysvr := xxxservice.NewServer(handler, server.WithServerBasicInfo(ebi), server.WithRegistry(yourRegistry)) - 
Custom RegistryInfo
Kitex sets ServiceName, Addr and PayloadCodec by default. If other registration information is required, you need to inject it by yourself. option:
WithRegistryInfo.svr := xxxservice.NewServer(handler, server.WithRegistry(yourRegistry), server.WithRegistryInfo(yourRegistryInfo)) - 
Allow custom registry to get the actual address for registering(available from Kitex v0.10.0)
When the Client cannot access the Listen Address of the Server and needs to use a public IP address to access the Server, it can be set by specifying
AddrandSkipListenAddrin RegistryInfo.info := ®istry.Info{ Addr: YourServerAddress, SkipListenAddr: true, ... } svr := xxxservice.NewServer(handler, server.WithRegistry(yourRegistry), server.WithRegistryInfo(info))