bilibili-backup/app/admin/main/cache/model/overlord.go

129 lines
4.9 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package model
// OverlordReq .
type OverlordReq struct {
Name string `json:"name" form:"name"`
Zone string `json:"zone" form:"zone"`
Type string `json:"type" form:"type"`
Alias string `json:"alias" form:"alias"`
Addr string `json:"addr" form:"addr"`
AppID string `json:"appid" form:"appid"`
PN int `form:"pn" default:"1"`
PS int `form:"ps" default:"20"`
Cookie string `json:"-"`
}
// OverlordResp .
type OverlordResp struct {
Names []string `json:"names,omitempty"`
Addrs []string `json:"addrs,omitempty"`
Cluster *OverlordCluster `json:"cluster,omitempty"`
Clusters []*OverlordCluster `json:"clusters,omitempty"`
Total int64 `json:"total"`
Nodes []*OverlordNode `json:"nodes,omitempty"`
Apps []*OverlordApp `json:"apps,omitempty"`
AppIDs []string `json:"appids,omitempty"`
}
// TableName gorm table name.
func (*OverlordCluster) TableName() string {
return "overlord_cluster"
}
// OverlordCluster .
type OverlordCluster struct {
ID int64 `json:"id" gorm:"column:id"`
Name string `json:"name" gorm:"column:name"` // 集群名字
Type string `json:"type" gorm:"column:type"` // 缓存类型. (memcache,redis,redis-cluster)
Zone string `json:"zone" gorm:"column:zone"` // 机房
HashMethod string `json:"hash_method" gorm:"column:hash_method"` // 哈希方法 默认sha1
HashDistribution string `json:"hash_distribution" gorm:"column:hash_distribution"` // key分布策略 默认为ketama一致性hash
HashTag string `json:"hash_tag" gorm:"column:hashtag"` // key hash 标识
ListenProto string `json:"listen_proto" gorm:"column:listen_proto"`
ListenAddr string `json:"listen_addr" gorm:"column:listen_addr"`
DailTimeout int32 `json:"dail_timeout" gorm:"column:dial"` // dial 超时
ReadTimeout int32 `json:"read_timeout" gorm:"column:read"` // read 超时
WriteTimeout int32 `json:"write_timeout" gorm:"column:write"` // write 超时
NodeConn int8 `json:"node_conn" gorm:"column:nodeconn"` // 集群内节点连接数
PingFailLimit int32 `json:"ping_fail_limit" gorm:"column:ping_fail_limit"` // 节点失败检测次数
PingAutoEject bool `json:"ping_auto_eject" gorm:"column:auto_eject"` // 是否自动剔除节点
Nodes []*OverlordNode `json:"nodes" gorm:"-"`
}
// TableName gorm table name.
func (*OverlordNode) TableName() string {
return "overlord_node"
}
// OverlordNode .
type OverlordNode struct {
Cid int64 `json:"cid" gorm:"column:cid"`
Alias string `json:"alias" gorm:"column:alias"`
Addr string `json:"addr" gorm:"column:addr"`
Weight int8 `json:"weight" gorm:"column:weight"`
}
// TableName gorm table name.
func (*OverlordApp) TableName() string {
return "overlord_appid"
}
// OverlordApp .
type OverlordApp struct {
ID int64 `json:"-" gorm:"column:id"`
TreeID int64 `json:"treeid" gorm:"column:tree_id"`
AppID string `json:"appid" gorm:"column:app_id"`
Cid int64 `json:"cid" gorm:"column:cid"`
Cluster *OverlordCluster `json:"cluster,omitempty"`
}
// OverlordApiserver resp result of clusters.
type OverlordApiserver struct {
Group string `json:"group"`
Clusters []struct {
Name string `json:"name"`
Type string `json:"cache_type"`
// HashMethod string `json:"hash_method"`
// HashDistribution string `json:"hash_distribution"`
// HashTag string `json:"hash_tag"`
// DailTimeout int32 `json:"dail_timeout"`
// ReadTimeout int32 `json:"read_timeout"`
// WriteTimeout int32 `json:"write_timeout"`
// NodeConn int8 `json:"node_connections"`
// PingFailLimit int32 `json:"ping_fail_limit"`
// PingAutoEject bool `json:"ping_auto_eject"`
FrontEndPort int `json:"front_end_port"`
Instances []struct {
IP string `json:"ip"`
Port int `json:"port"`
Weight int8 `json:"weight"`
Alias string `json:"alias"`
State string `json:"state"`
Role string `json:"role"`
} `json:"instances"`
} `json:"clusters"`
}
// OverlordToml resp result of clusters.
type OverlordToml struct {
Name string `toml:"name"`
Type string `toml:"cache_type"`
HashMethod string `toml:"hash_method"`
HashDistribution string `toml:"hash_distribution"`
HashTag string `toml:"hash_tag"`
DailTimeout int32 `toml:"dail_timeout"`
ReadTimeout int32 `toml:"read_timeout"`
WriteTimeout int32 `toml:"write_timeout"`
NodeConn int8 `toml:"node_connections"`
PingFailLimit int32 `toml:"ping_fail_limit"`
PingAutoEject bool `toml:"ping_auto_eject"`
ListenProto string `toml:"listen_proto"`
ListenAddr string `toml:"listen_addr"`
Servers []string `toml:"servers"`
}