You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by la...@apache.org on 2021/09/02 14:41:39 UTC
[dubbo-go] branch config-enhance updated: feat(config): add new
protocol config (#1425)
This is an automated email from the ASF dual-hosted git repository.
laurence pushed a commit to branch config-enhance
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/config-enhance by this push:
new 7206057 feat(config): add new protocol config (#1425)
7206057 is described below
commit 720605763126235f16cbb3884ff01cb648b0328d
Author: Mulavar <97...@qq.com>
AuthorDate: Thu Sep 2 22:41:35 2021 +0800
feat(config): add new protocol config (#1425)
* feat(config): add new protocol config
* feat(config): replace '_' with '-'
Co-authored-by: dongjianhui03 <do...@meituan.com>
---
config/protocol_config.go | 7 +++--
config/provider_config.go | 5 ++-
remoting/getty/config.go | 70 +++++++++++++++++++++---------------------
remoting/getty/getty_client.go | 43 ++++++++++++++------------
remoting/getty/getty_server.go | 24 ++++++++++-----
remoting/getty/pool.go | 4 +--
6 files changed, 82 insertions(+), 71 deletions(-)
diff --git a/config/protocol_config.go b/config/protocol_config.go
index 11eeb7b..ab24145 100644
--- a/config/protocol_config.go
+++ b/config/protocol_config.go
@@ -27,9 +27,10 @@ import (
// ProtocolConfig is protocol configuration
type ProtocolConfig struct {
- Name string `default:"dubbo" validate:"required" yaml:"name" json:"name,omitempty" property:"name"`
- Ip string `yaml:"ip" json:"ip,omitempty" property:"ip"`
- Port string `default:"2000" yaml:"port" json:"port,omitempty" property:"port"`
+ Name string `default:"dubbo" validate:"required" yaml:"name" json:"name,omitempty" property:"name"`
+ Ip string `yaml:"ip" json:"ip,omitempty" property:"ip"`
+ Port string `default:"2000" yaml:"port" json:"port,omitempty" property:"port"`
+ Params interface{} `yaml:"params" json:"params,omitempty" property:"params"`
}
func initProtocolsConfig(rc *RootConfig) error {
diff --git a/config/provider_config.go b/config/provider_config.go
index 4a7adef..eaed3a2 100644
--- a/config/provider_config.go
+++ b/config/provider_config.go
@@ -43,9 +43,8 @@ type ProviderConfig struct {
Services map[string]*ServiceConfig `yaml:"services" json:"services,omitempty" property:"services"`
ProxyFactory string `default:"default" yaml:"proxy" json:"proxy,omitempty" property:"proxy"`
- // Protocols map[string]*ProtocolConfig `yaml:"protocols" json:"protocols,omitempty" property:"protocols"`
- ProtocolConf interface{} `yaml:"protocol_conf" json:"protocol_conf,omitempty" property:"protocol_conf"`
- FilterConf interface{} `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf"`
+
+ FilterConf interface{} `yaml:"filter_conf" json:"filter_conf,omitempty" property:"filter_conf"`
// ShutdownConfig *ShutdownConfig `yaml:"shutdown_conf" json:"shutdown_conf,omitempty" property:"shutdown_conf"`
ConfigType map[string]string `yaml:"config_type" json:"config_type,omitempty" property:"config_type"`
}
diff --git a/remoting/getty/config.go b/remoting/getty/config.go
index 9971d5c..5cf36bf 100644
--- a/remoting/getty/config.go
+++ b/remoting/getty/config.go
@@ -36,21 +36,21 @@ const (
type (
// GettySessionParam is session configuration for getty
GettySessionParam struct {
- CompressEncoding bool `default:"false" yaml:"compress_encoding" json:"compress_encoding,omitempty"`
- TcpNoDelay bool `default:"true" yaml:"tcp_no_delay" json:"tcp_no_delay,omitempty"`
- TcpKeepAlive bool `default:"true" yaml:"tcp_keep_alive" json:"tcp_keep_alive,omitempty"`
- KeepAlivePeriod string `default:"180s" yaml:"keep_alive_period" json:"keep_alive_period,omitempty"`
+ CompressEncoding bool `default:"false" yaml:"compress-encoding" json:"compress-encoding,omitempty"`
+ TcpNoDelay bool `default:"true" yaml:"tcp-no-delay" json:"tcp-no-delay,omitempty"`
+ TcpKeepAlive bool `default:"true" yaml:"tcp-keep-alive" json:"tcp-keep-alive,omitempty"`
+ KeepAlivePeriod string `default:"180s" yaml:"keep-alive-period" json:"keep-alive-period,omitempty"`
keepAlivePeriod time.Duration
- TcpRBufSize int `default:"262144" yaml:"tcp_r_buf_size" json:"tcp_r_buf_size,omitempty"`
- TcpWBufSize int `default:"65536" yaml:"tcp_w_buf_size" json:"tcp_w_buf_size,omitempty"`
- TcpReadTimeout string `default:"1s" yaml:"tcp_read_timeout" json:"tcp_read_timeout,omitempty"`
+ TcpRBufSize int `default:"262144" yaml:"tcp-r-buf-size" json:"tcp-r-buf-size,omitempty"`
+ TcpWBufSize int `default:"65536" yaml:"tcp-w-buf-size" json:"tcp-w-buf-size,omitempty"`
+ TcpReadTimeout string `default:"1s" yaml:"tcp-read-timeout" json:"tcp-read-timeout,omitempty"`
tcpReadTimeout time.Duration
- TcpWriteTimeout string `default:"5s" yaml:"tcp_write_timeout" json:"tcp_write_timeout,omitempty"`
+ TcpWriteTimeout string `default:"5s" yaml:"tcp-write-timeout" json:"tcp-write-timeout,omitempty"`
tcpWriteTimeout time.Duration
- WaitTimeout string `default:"7s" yaml:"wait_timeout" json:"wait_timeout,omitempty"`
+ WaitTimeout string `default:"7s" yaml:"wait-timeout" json:"wait-timeout,omitempty"`
waitTimeout time.Duration
- MaxMsgLen int `default:"1024" yaml:"max_msg_len" json:"max_msg_len,omitempty"`
- SessionName string `default:"rpc" yaml:"session_name" json:"session_name,omitempty"`
+ MaxMsgLen int `default:"1024" yaml:"max-msg-len" json:"max-msg-len,omitempty"`
+ SessionName string `default:"rpc" yaml:"session-name" json:"session-name,omitempty"`
}
// ServerConfig holds supported types by the multiconfig package
@@ -58,53 +58,53 @@ type (
SSLEnabled bool
// heartbeat
- HeartbeatPeriod string `default:"60s" yaml:"heartbeat_period" json:"heartbeat_period,omitempty"`
+ HeartbeatPeriod string `default:"60s" yaml:"heartbeat-period" json:"heartbeat-period,omitempty"`
heartbeatPeriod time.Duration
// heartbeat timeout
- HeartbeatTimeout string `default:"5s" yaml:"heartbeat_timeout" json:"heartbeat_timeout,omitempty"`
+ HeartbeatTimeout string `default:"5s" yaml:"heartbeat-timeout" json:"heartbeat-timeout,omitempty"`
heartbeatTimeout time.Duration
// session
- SessionTimeout string `default:"60s" yaml:"session_timeout" json:"session_timeout,omitempty"`
+ SessionTimeout string `default:"60s" yaml:"session-timeout" json:"session-timeout,omitempty"`
sessionTimeout time.Duration
- SessionNumber int `default:"1000" yaml:"session_number" json:"session_number,omitempty"`
+ SessionNumber int `default:"1000" yaml:"session-number" json:"session-number,omitempty"`
- // grpool
- GrPoolSize int `default:"0" yaml:"gr_pool_size" json:"gr_pool_size,omitempty"`
- QueueLen int `default:"0" yaml:"queue_len" json:"queue_len,omitempty"`
- QueueNumber int `default:"0" yaml:"queue_number" json:"queue_number,omitempty"`
+ // gr pool
+ GrPoolSize int `default:"0" yaml:"gr-pool-size" json:"gr-pool-size,omitempty"`
+ QueueLen int `default:"0" yaml:"queue-len" json:"queue-len,omitempty"`
+ QueueNumber int `default:"0" yaml:"queue-number" json:"queue-number,omitempty"`
// session tcp parameters
- GettySessionParam GettySessionParam `required:"true" yaml:"getty_session_param" json:"getty_session_param,omitempty"`
+ GettySessionParam GettySessionParam `required:"true" yaml:",inline" json:",inline"`
}
- // ClientConfig holds supported types by the multiconfig package
+ // ClientConfig holds supported types by the multi config package
ClientConfig struct {
- ReconnectInterval int `default:"0" yaml:"reconnect_interval" json:"reconnect_interval,omitempty"`
+ ReconnectInterval int `default:"0" yaml:"reconnect-interval" json:"reconnect-interval,omitempty"`
// session pool
- ConnectionNum int `default:"16" yaml:"connection_number" json:"connection_number,omitempty"`
+ ConnectionNum int `default:"16" yaml:"connection-number" json:"connection-number,omitempty"`
// heartbeat
- HeartbeatPeriod string `default:"60s" yaml:"heartbeat_period" json:"heartbeat_period,omitempty"`
+ HeartbeatPeriod string `default:"60s" yaml:"heartbeat-period" json:"heartbeat-period,omitempty"`
heartbeatPeriod time.Duration
// heartbeat timeout
- HeartbeatTimeout string `default:"5s" yaml:"heartbeat_timeout" json:"heartbeat_timeout,omitempty"`
+ HeartbeatTimeout string `default:"5s" yaml:"heartbeat-timeout" json:"heartbeat-timeout,omitempty"`
heartbeatTimeout time.Duration
// session
- SessionTimeout string `default:"60s" yaml:"session_timeout" json:"session_timeout,omitempty"`
+ SessionTimeout string `default:"60s" yaml:"session-timeout" json:"session-timeout,omitempty"`
sessionTimeout time.Duration
- // grpool
- GrPoolSize int `default:"0" yaml:"gr_pool_size" json:"gr_pool_size,omitempty"`
- QueueLen int `default:"0" yaml:"queue_len" json:"queue_len,omitempty"`
- QueueNumber int `default:"0" yaml:"queue_number" json:"queue_number,omitempty"`
+ // gr pool
+ GrPoolSize int `default:"0" yaml:"gr-pool-size" json:"gr-pool-size,omitempty"`
+ QueueLen int `default:"0" yaml:"queue-len" json:"queue-len,omitempty"`
+ QueueNumber int `default:"0" yaml:"queue-number" json:"queue-number,omitempty"`
// session tcp parameters
- GettySessionParam GettySessionParam `required:"true" yaml:"getty_session_param" json:"getty_session_param,omitempty"`
+ GettySessionParam GettySessionParam `required:"true" yaml:",inline" json:",inline"`
}
)
@@ -158,7 +158,7 @@ func GetDefaultServerConfig() ServerConfig {
}
}
-// CheckValidity confirm getty sessian params
+// CheckValidity confirm getty session params
func (c *GettySessionParam) CheckValidity() error {
var err error
@@ -203,7 +203,7 @@ func (c *ClientConfig) CheckValidity() error {
}
if c.heartbeatPeriod >= time.Duration(config.MaxWheelTimeSpan) {
- return perrors.WithMessagef(err, "heartbeat_period %s should be less than %s",
+ return perrors.WithMessagef(err, "heartbeat-period %s should be less than %s",
c.HeartbeatPeriod, time.Duration(config.MaxWheelTimeSpan))
}
@@ -231,7 +231,7 @@ func (c *ServerConfig) CheckValidity() error {
}
if c.heartbeatPeriod >= time.Duration(config.MaxWheelTimeSpan) {
- return perrors.WithMessagef(err, "heartbeat_period %s should be less than %s",
+ return perrors.WithMessagef(err, "heartbeat-period %s should be less than %s",
c.HeartbeatPeriod, time.Duration(config.MaxWheelTimeSpan))
}
@@ -246,7 +246,7 @@ func (c *ServerConfig) CheckValidity() error {
}
if c.sessionTimeout >= time.Duration(config.MaxWheelTimeSpan) {
- return perrors.WithMessagef(err, "session_timeout %s should be less than %s",
+ return perrors.WithMessagef(err, "session-timeout %s should be less than %s",
c.SessionTimeout, time.Duration(config.MaxWheelTimeSpan))
}
diff --git a/remoting/getty/getty_client.go b/remoting/getty/getty_client.go
index bd2143e..226e33e 100644
--- a/remoting/getty/getty_client.go
+++ b/remoting/getty/getty_client.go
@@ -50,7 +50,7 @@ var (
errClientReadTimeout = perrors.New("maybe the client read timeout or fail to decode tcp stream in Writer.Write")
clientConf *ClientConfig
- clientGrpool gxsync.GenericTaskPool
+ clientGrPool gxsync.GenericTaskPool
)
// it is init client for single protocol.
@@ -59,27 +59,30 @@ func initClient(protocol string) {
return
}
- // load clientconfig from consumer_config
+ // load client config from rootConfig.Protocols
// default use dubbo
if config.GetApplicationConfig() == nil {
return
}
- protocolConf := config.GetRootConfig().Network
+ if config.GetRootConfig().Protocols == nil {
+ return
+ }
+
+ protocolConf := config.GetRootConfig().Protocols[protocol]
defaultClientConfig := GetDefaultClientConfig()
if protocolConf == nil {
- logger.Info("protocol_conf default use dubbo config")
+ logger.Info("use default getty client config")
} else {
- //dubboConf := protocolConf.(map[interface{}]interface{})[protocol]
- dubboConf := protocolConf[protocol]
- if dubboConf == nil {
- logger.Warnf("dubboConf is nil")
+ gettyClientConfig := protocolConf.Params
+ if gettyClientConfig == nil {
+ logger.Warnf("gettyClientConfig is nil")
return
}
- dubboConfByte, err := yaml.Marshal(dubboConf)
+ gettyClientConfigBytes, err := yaml.Marshal(gettyClientConfig)
if err != nil {
panic(err)
}
- err = yaml.Unmarshal(dubboConfByte, &defaultClientConfig)
+ err = yaml.Unmarshal(gettyClientConfigBytes, &defaultClientConfig)
if err != nil {
panic(err)
}
@@ -89,12 +92,12 @@ func initClient(protocol string) {
logger.Warnf("[CheckValidity] error: %v", err)
return
}
- setClientGrpool()
+ setClientGrPool()
rand.Seed(time.Now().UnixNano())
}
-// ShutdownConfig ClientConf
+// SetClientConf ClientConf
func SetClientConf(c ClientConfig) {
clientConf = &c
err := clientConf.CheckValidity()
@@ -102,11 +105,11 @@ func SetClientConf(c ClientConfig) {
logger.Warnf("[ClientConfig CheckValidity] error: %v", err)
return
}
- setClientGrpool()
+ setClientGrPool()
}
-func setClientGrpool() {
- clientGrpool = gxsync.NewTaskPoolSimple(clientConf.GrPoolSize)
+func setClientGrPool() {
+ clientGrPool = gxsync.NewTaskPoolSimple(clientConf.GrPoolSize)
}
// Options : param config
@@ -132,7 +135,7 @@ type Client struct {
codec remoting.Codec
}
-// create client
+// NewClient create client
func NewClient(opt Options) *Client {
switch {
case opt.ConnectTimeout == 0:
@@ -153,7 +156,7 @@ func NewClient(opt Options) *Client {
func (c *Client) SetExchangeClient(client *remoting.ExchangeClient) {
}
-// init client and try to connection.
+// Connect init client and try to connection.
func (c *Client) Connect(url *common.URL) error {
initClient(url.Protocol)
c.conf = *clientConf
@@ -168,7 +171,7 @@ func (c *Client) Connect(url *common.URL) error {
return err
}
-// close network connection
+// Close close network connection
func (c *Client) Close() {
c.mux.Lock()
client := c.gettyClient
@@ -180,7 +183,7 @@ func (c *Client) Close() {
}
}
-// send request
+// Request send request
func (c *Client) Request(request *remoting.Request, timeout time.Duration, response *remoting.PendingResponse) error {
_, session, err := c.selectSession(c.addr)
if err != nil {
@@ -215,7 +218,7 @@ func (c *Client) Request(request *remoting.Request, timeout time.Duration, respo
return perrors.WithStack(err)
}
-// isAvailable returns true if the connection is available, or it can be re-established.
+// IsAvailable returns true if the connection is available, or it can be re-established.
func (c *Client) IsAvailable() bool {
client, _, err := c.selectSession(c.addr)
return err == nil &&
diff --git a/remoting/getty/getty_server.go b/remoting/getty/getty_server.go
index a9ae886..f048bd7 100644
--- a/remoting/getty/getty_server.go
+++ b/remoting/getty/getty_server.go
@@ -46,27 +46,35 @@ import (
var srvConf *ServerConfig
func initServer(protocol string) {
- // load clientconfig from provider_config
+ if protocol == "" {
+ return
+ }
+
+ // load server config from rootConfig.Protocols
// default use dubbo
if config.GetApplicationConfig() == nil {
return
}
- protocolConf := config.GetProviderConfig().ProtocolConf
+ if config.GetRootConfig().Protocols == nil {
+ return
+ }
+
+ protocolConf := config.GetRootConfig().Protocols[protocol]
defaultServerConfig := GetDefaultServerConfig()
if protocolConf == nil {
- logger.Info("protocol_conf default use dubbo config")
+ logger.Info("use default getty server config")
} else {
- dubboConf := protocolConf.(map[interface{}]interface{})[protocol]
- if dubboConf == nil {
- logger.Warnf("dubboConf is nil")
+ gettyServerConfig := protocolConf.Params
+ if gettyServerConfig == nil {
+ logger.Warnf("gettyServerConfig is nil")
return
}
- dubboConfByte, err := yaml.Marshal(dubboConf)
+ gettyServerConfigBytes, err := yaml.Marshal(gettyServerConfig)
if err != nil {
panic(err)
}
- err = yaml.Unmarshal(dubboConfByte, &defaultServerConfig)
+ err = yaml.Unmarshal(gettyServerConfigBytes, &defaultServerConfig)
if err != nil {
panic(err)
}
diff --git a/remoting/getty/pool.go b/remoting/getty/pool.go
index 8b091a4..e30bafe 100644
--- a/remoting/getty/pool.go
+++ b/remoting/getty/pool.go
@@ -66,8 +66,8 @@ func newGettyRPCClientConn(rpcClient *Client, addr string) (*gettyRPCClient, err
clientOpts = append(clientOpts, getty.WithClientSslEnabled(sslEnabled), getty.WithClientTlsConfigBuilder(config.GetClientTlsConfigBuilder()))
}
- if clientGrpool != nil {
- clientOpts = append(clientOpts, getty.WithClientTaskPool(clientGrpool))
+ if clientGrPool != nil {
+ clientOpts = append(clientOpts, getty.WithClientTaskPool(clientGrPool))
}
gettyClient = getty.NewTCPClient(clientOpts...)