model.go 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package model
  2. // ClustersReq params of cluster list.
  3. type ClustersReq struct {
  4. PN int `form:"pn" default:"1"`
  5. PS int `form:"ps" default:"20"`
  6. }
  7. // ClusterResp resp result of clusters.
  8. type ClusterResp struct {
  9. Clusters []*Cluster `json:"clusters"`
  10. Total int64 `json:"total"` // 总数量
  11. }
  12. // TableName gorm table name.
  13. func (*Cluster) TableName() string {
  14. return "cluster"
  15. }
  16. // Cluster resp result of clusters.
  17. type Cluster struct {
  18. ID int64 `gorm:"column:id" json:"id" toml:"id"`
  19. Name string `json:"name" gorm:"column:name" toml:"name"` // 集群名字
  20. Type string `json:"type" gorm:"column:type" toml:"cache_type"` // 缓存类型. (memcache,redis,redis-cluster)
  21. AppID string `json:"app_id" gorm:"column:appids" toml:"app_id"`
  22. Zone string `json:"zone" gorm:"column:zone" toml:"zone"` // 机房
  23. HashMethod string `json:"hash_method" gorm:"column:hash_method" toml:"hash_method"` // 哈希方法 默认sha1
  24. HashDistribution string `json:"hash_distribution" gorm:"column:hash_distribution" toml:"hash_distribution"` // key分布策略 默认为ketama一致性hash
  25. HashTag string `json:"hash_tag" gorm:"column:hashtag" toml:"hash_tag"` // key hash 标识
  26. DailTimeout int32 `json:"dail_timeout" gorm:"column:dial" toml:"dail_timeout"` // dial 超时
  27. ReadTimeout int32 `json:"read_timeout" gorm:"column:read" toml:"read_timeout"`
  28. WriteTimeout int32 `json:"write_timeout" gorm:"column:write" toml:"write_timeout"` // read 超时
  29. NodeConn int8 `json:"node_conn" gorm:"column:nodeconn" toml:"node_connections"` // 集群内节点连接数
  30. PingFailLimit int32 `json:"ping_fail_limit" gorm:"column:ping_fail_limit" toml:"ping_fail_limit"` // 节点失败检测次数
  31. PingAutoEject bool `json:"ping_auto_eject" gorm:"column:auto_eject" toml:"ping_auto_eject"` // 是否自动剔除节点
  32. ListenProto string `json:"listen_proto" toml:"listen_proto"`
  33. ListenAddr string `json:"listen_addr" toml:"listen_addr"`
  34. Servers []string `json:"-" gorm:"-" toml:"servers"`
  35. Hit int `json:"hit" gorm:"-" toml:"-"` // 集群命中率
  36. QPS int `json:"qps" gorm:"-" toml:"-"` // 集群qps
  37. State int `json:"state" gorm:"-" toml:"-"` // 集群状态 (0-online ;1-offline)
  38. MemRatio int `json:"mem_ratio" gorm:"-" toml:"-"` // 内存使用率
  39. Nodes []NodeDtl `json:"nodes" gorm:"-" toml:"-"`
  40. }
  41. // AddClusterReq params of add a cluster.
  42. type AddClusterReq struct {
  43. ID int64 `json:"id" form:"id"` // 主键id 更新的时候使用
  44. Type string `json:"type" form:"type" validate:"required"` // 缓存类型(memcache,redis,redis_cluster)
  45. AppID string `json:"app_id" form:"app_id"` // 集群关联的appid
  46. Zone string `json:"zone" form:"zone"` // 机房
  47. HashMethod string `json:"hash_method" form:"hash_method" default:"fnv1a_64"` // 哈希方法 默认fvn1a_64
  48. HashDistribution string `json:"hash_distribution" form:"hash_distribution" default:"ketama"` // key分布策略 默认为ketama一致性hash
  49. HashTag string `json:"hash_tag" form:"hash_tag"` // key hash 标识
  50. Name string `json:"name" form:"name" validate:"required"` // 集群名字
  51. DailTimeout int32 `json:"dail_timeout" form:"dail_timeout" default:"100"` // dial 超时
  52. ReadTimeout int32 `json:"read_timeout" form:"read_timeout" default:"100"` // read 超时
  53. WriteTimeout int32 `json:"write_timeout" form:"write_timeout" default:"100"` // write 超时
  54. NodeConn int8 `json:"node_conn" form:"node_conn" default:"10"` // 集群内及诶单连接数
  55. PingFailLimit int32 `json:"ping_fail_limit" form:"ping_fail_limit"` // 节点失败检测次数
  56. PingAutoEject bool `json:"ping_auto_eject" form:"ping_auto_eject"` // 是否自动剔除节点
  57. ListenProto string `json:"listen_proto" form:"listen_proto" default:"tcp"` // 协议
  58. ListenAddr string `json:"listen_addr" form:"listen_addr"` // 监听地址
  59. }
  60. // DelClusterReq params of del cluster.
  61. type DelClusterReq struct {
  62. ID int64 `form:"id"` // 集群主键id
  63. }
  64. // ClusterReq get cluster by appid or cluster name.
  65. type ClusterReq struct {
  66. AppID string `json:"app_id" form:"app_id"` // 关联的appid
  67. Zone string `json:"zone" form:"zone"` // 机房信息
  68. Type string `json:"type" form:"type"` // 缓存类型
  69. PN int `form:"pn" default:"1"`
  70. PS int `form:"ps" default:"20"`
  71. // Cluster string `json:"cluster" form:"cluster"` // 集群名字
  72. Cookie string `form:"-"`
  73. }
  74. // ModifyClusterReq params of modify cluster detail.
  75. type ModifyClusterReq struct {
  76. Name string `json:"name" form:"name"`
  77. ID int64 `json:"id" form:"id"` // 集群id
  78. Action int8 `json:"action" form:"action"` // 操作(1 添加节点,2 删除节点;删除节点时只需要传alias)
  79. Nodes string `json:"nodes" form:"nodes"` // 节点信息 json数组 [{"id":11,"addr":"11","weight":1,"alias":"alias"}]
  80. // Addrs []string `json:"addrs" form:"addrs,split"` // 节点地址
  81. // Weight []int8 `json:"weight" form:"weight,split"` // 节点权重,必须与地址一一对应
  82. // Alias []string `json:"alias" form:"alias,split"` // 节点别名,必须与地址一一对应
  83. }
  84. // ClusterDtlReq params of get cluster detail.
  85. type ClusterDtlReq struct {
  86. ID int64 `json:"id" form:"id"` // 集群id
  87. }
  88. // ClusterDtlResp resp result of cluster detail.
  89. type ClusterDtlResp struct {
  90. Nodes []NodeDtl `json:"nodes"`
  91. }
  92. // ClusterFromYml get cluster from tw yml.
  93. type ClusterFromYml struct {
  94. AppID string `json:"app_id" form:"app_id"` // 关联的appid
  95. Zone string `json:"zone" form:"zone"` // 机房信息
  96. TwYml string `json:"tw_yml" form:"tw_yml"`
  97. }
  98. // TableName gorm table name.
  99. func (*NodeDtl) TableName() string {
  100. return "nodes"
  101. }
  102. // NodeDtl cluster node detaiwl
  103. type NodeDtl struct {
  104. ID int64 `json:"id" gorm:"column:id"`
  105. Cid int64 `json:"cid" gorm:"column:cid"`
  106. Addr string `json:"addr" gorm:"column:addr"`
  107. Weight int8 `json:"weight" gorm:"column:weight"`
  108. Alias string `json:"alias" gorm:"column:alias"`
  109. State int8 `json:"state" gorm:"column:state"`
  110. QPS int64 `json:"qps" gorm:"-"`
  111. MemUse float32 `json:"mem_use" gorm:"-"`
  112. MemToal float32 `json:"mem_toal" gorm:"-"`
  113. }
  114. // EmpResp is empty resp.
  115. type EmpResp struct {
  116. }