github.com/nyan233/littlerpc@v0.4.6-0.20230316182519-0c8d5c48abaf/core/client/config.go (about)

     1  package client
     2  
     3  import (
     4  	"crypto/tls"
     5  	"github.com/nyan233/littlerpc/core/client/loadbalance"
     6  	"github.com/nyan233/littlerpc/core/common/logger"
     7  	"github.com/nyan233/littlerpc/core/common/msgparser"
     8  	"github.com/nyan233/littlerpc/core/common/msgwriter"
     9  	"github.com/nyan233/littlerpc/core/middle/codec"
    10  	"github.com/nyan233/littlerpc/core/middle/packer"
    11  	"github.com/nyan233/littlerpc/core/middle/plugin"
    12  	perror "github.com/nyan233/littlerpc/core/protocol/error"
    13  	"github.com/nyan233/littlerpc/internal/pool"
    14  	"time"
    15  )
    16  
    17  type Config struct {
    18  	// Tls相关的配置
    19  	TlsConfig *tls.Config
    20  	// 服务器的地址
    21  	// 当配置了地址解析器和负载均衡器的时候,此项将被忽略
    22  	ServerAddr string
    23  	// 使用的日志器
    24  	Logger logger.LLogger
    25  	// 连接池中的连接是否使用KeepAlive
    26  	KeepAlive bool
    27  	// 发送ping消息的间隔
    28  	KeepAliveTimeout time.Duration
    29  	// 底层使用的Goroutine池的大小
    30  	PoolSize int32
    31  	// 客户端使用的传输协议
    32  	NetWork string
    33  	// 字节流编码器
    34  	Packer packer.Packer
    35  	// 结构化数据编码器
    36  	Codec codec.Codec
    37  	// 用于连接复用的连接数量
    38  	MuxConnection int
    39  	// 是否开启负载均衡
    40  	OpenLoadBalance bool
    41  	// 负载均衡规则, 默认可选hash/roundRobin/random/consistentHash
    42  	BalancerScheme string
    43  	// 地址解析器, 默认提供http/file/live
    44  	BalancerResolverFunc loadbalance.ResolverFunc
    45  	// 负载均衡器的附加配置, 实现第三方的负载均衡器时可能需要此配置
    46  	BalancerTailConfig interface{}
    47  	// 负载均衡器的地址列表更新间隔, 默认120s
    48  	ResolverUpdateInterval time.Duration
    49  	BalancerFactory        func(config loadbalance.Config) loadbalance.Balancer
    50  	// 安装的插件
    51  	Plugins []plugin.ClientPlugin
    52  	// 可以生成自定义错误的工厂回调函数
    53  	ErrHandler perror.LErrors
    54  	// 自定义Goroutine Pool的建造器, 在客户端不推荐使用
    55  	// 在不需要使用异步回调模式时可以关闭
    56  	ExecPoolBuilder pool.TaskPoolBuilder[string]
    57  	Writer          msgwriter.Writer
    58  	ParserFactory   msgparser.Factory
    59  	// 是否启用调试模式
    60  	Debug bool
    61  	// 是否注册MessageParser-OnRead接口
    62  	RegisterMPOnRead bool
    63  }