only leader will return peer stats
parent
44e8c234ed
commit
43cb2a353f
|
@ -31,7 +31,7 @@ func newEtcdServer(name string, urlStr string, listenHost string, tlsConf *TLSCo
|
||||||
// Start to listen and response etcd client command
|
// Start to listen and response etcd client command
|
||||||
func (e *etcdServer) ListenAndServe() {
|
func (e *etcdServer) ListenAndServe() {
|
||||||
|
|
||||||
infof("etcd server [%s:%s]", e.name, e.url)
|
infof("etcd server [name %s, listen on %s, advertised url %s]", e.name, e.Server.Addr, e.url)
|
||||||
|
|
||||||
if e.tlsConf.Scheme == "http" {
|
if e.tlsConf.Scheme == "http" {
|
||||||
fatal(e.Server.ListenAndServe())
|
fatal(e.Server.ListenAndServe())
|
||||||
|
|
|
@ -45,6 +45,7 @@ func newRaftServer(name string, url string, listenHost string, tlsConf *TLSConfi
|
||||||
version: raftVersion,
|
version: raftVersion,
|
||||||
name: name,
|
name: name,
|
||||||
url: url,
|
url: url,
|
||||||
|
listenHost: listenHost,
|
||||||
tlsConf: tlsConf,
|
tlsConf: tlsConf,
|
||||||
tlsInfo: tlsInfo,
|
tlsInfo: tlsInfo,
|
||||||
peersStats: make(map[string]*raftPeerStats),
|
peersStats: make(map[string]*raftPeerStats),
|
||||||
|
@ -148,7 +149,7 @@ func startAsFollower() {
|
||||||
|
|
||||||
// Start to listen and response raft command
|
// Start to listen and response raft command
|
||||||
func (r *raftServer) startTransport(scheme string, tlsConf tls.Config) {
|
func (r *raftServer) startTransport(scheme string, tlsConf tls.Config) {
|
||||||
infof("raft server [%s:%s]", r.name, r.listenHost)
|
infof("raft server [name %s, listen on %s, advertised url %s]", r.name, r.listenHost, r.url)
|
||||||
|
|
||||||
raftMux := http.NewServeMux()
|
raftMux := http.NewServeMux()
|
||||||
|
|
||||||
|
@ -298,11 +299,14 @@ func (r *raftServer) Stats() []byte {
|
||||||
warn(err)
|
warn(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pBytes, _ := json.Marshal(r.peersStats)
|
if r.State() == raft.Leader {
|
||||||
|
pBytes, _ := json.Marshal(r.peersStats)
|
||||||
|
|
||||||
b := append(sBytes, pBytes...)
|
b := append(sBytes, pBytes...)
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
return b
|
return sBytes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register commands to raft server
|
// Register commands to raft server
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"math"
|
"math"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
@ -13,14 +12,14 @@ const (
|
||||||
queueCapacity = 200
|
queueCapacity = 200
|
||||||
)
|
)
|
||||||
|
|
||||||
type runtimeStats struct {
|
// packageStats represent the stats we need for a package.
|
||||||
}
|
// It has sending time and the size of the package.
|
||||||
|
|
||||||
type packageStats struct {
|
type packageStats struct {
|
||||||
sendingTime time.Time
|
sendingTime time.Time
|
||||||
size int
|
size int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewPackageStats creates a pacakgeStats and return the pointer to it.
|
||||||
func NewPackageStats(now time.Time, size int) *packageStats {
|
func NewPackageStats(now time.Time, size int) *packageStats {
|
||||||
return &packageStats{
|
return &packageStats{
|
||||||
sendingTime: now,
|
sendingTime: now,
|
||||||
|
@ -28,6 +27,7 @@ func NewPackageStats(now time.Time, size int) *packageStats {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Time return the sending time of the package.
|
||||||
func (ps *packageStats) Time() time.Time {
|
func (ps *packageStats) Time() time.Time {
|
||||||
return ps.sendingTime
|
return ps.sendingTime
|
||||||
}
|
}
|
||||||
|
@ -38,13 +38,13 @@ type raftServerStats struct {
|
||||||
Leader string `json:"leader"`
|
Leader string `json:"leader"`
|
||||||
LeaderUptime string `json:"leaderUptime"`
|
LeaderUptime string `json:"leaderUptime"`
|
||||||
|
|
||||||
RecvAppendRequestCnt uint64 `json:"recvAppendRequestCnt"`
|
RecvAppendRequestCnt uint64 `json:"recvAppendRequestCnt,"`
|
||||||
RecvingPkgRate float64 `json:"recvPkgRate"`
|
RecvingPkgRate float64 `json:"recvPkgRate,omitempty"`
|
||||||
RecvingBandwidthRate float64 `json:"recvBandwidthRate"`
|
RecvingBandwidthRate float64 `json:"recvBandwidthRate,omitempty"`
|
||||||
|
|
||||||
SendAppendRequestCnt uint64 `json:"sendAppendRequestCnt"`
|
SendAppendRequestCnt uint64 `json:"sendAppendRequestCnt"`
|
||||||
SendingPkgRate float64 `json:"sendPkgRate"`
|
SendingPkgRate float64 `json:"sendPkgRate,omitempty"`
|
||||||
SendingBandwidthRate float64 `json:"sendBandwidthRate"`
|
SendingBandwidthRate float64 `json:"sendBandwidthRate,omitempty"`
|
||||||
|
|
||||||
leaderStartTime time.Time
|
leaderStartTime time.Time
|
||||||
sendRateQueue *statsQueue
|
sendRateQueue *statsQueue
|
||||||
|
@ -158,7 +158,6 @@ func (q *statsQueue) Insert(p *packageStats) {
|
||||||
q.items[q.back] = p
|
q.items[q.back] = p
|
||||||
q.totalPkgSize += q.items[q.back].size
|
q.totalPkgSize += q.items[q.back].size
|
||||||
|
|
||||||
fmt.Println(q.front, q.back, q.size)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *statsQueue) Rate() (float64, float64) {
|
func (q *statsQueue) Rate() (float64, float64) {
|
||||||
|
|
Loading…
Reference in New Issue