Documentation
¶
Index ¶
- Variables
- func ClusterInit(configString json.RawMessage, self *string) int
- func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
- type Cluster
- type ClusterNode
- type ClusterPing
- type ClusterReq
- type ClusterResp
- type ClusterSess
- type ClusterVote
- type ClusterVoteRequest
- type ClusterVoteResponse
- type Conn
- type ConnCache
- type Meter
- type Service
- type Varz
Constants ¶
This section is empty.
Variables ¶
var Globals struct { Cluster *Cluster ConnCache *ConnCache Service *Service }
Functions ¶
func ClusterInit ¶
func ClusterInit(configString json.RawMessage, self *string) int
Returns worker id
func ResponseHandler ¶
func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
ResponseHandler handles responses for monitoring routes
Types ¶
type Cluster ¶
type Cluster struct {
// contains filtered or unexported fields
}
Cluster is the representation of the cluster.
func (*Cluster) Master ¶
func (c *Cluster) Master(msg *ClusterReq, rejected *bool) error
Master at topic's master node receives C2S messages from topic's proxy nodes. The message is treated like it came from a session: find or create a session locally, dispatch the message to it like it came from a normal ws/lp connection. Called by a remote node.
func (*Cluster) Ping ¶
func (c *Cluster) Ping(ping *ClusterPing, unused *bool) error
Ping is called by the leader node to assert leadership and check status of the followers.
func (Cluster) Proxy ¶
func (Cluster) Proxy(resp *ClusterResp, unused *bool) error
Dispatch receives messages from the master node addressed to a specific local connection.
func (*Cluster) Vote ¶
func (c *Cluster) Vote(vreq *ClusterVoteRequest, response *ClusterVoteResponse) error
Vote processes request for a vote from a candidate.
type ClusterNode ¶
type ClusterNode struct {
// contains filtered or unexported fields
}
ClusterNode is a client's connection to another node.
type ClusterPing ¶
type ClusterPing struct {
// Name of the leader node
Leader string
// Election term
Term int
// Ring hash signature that represents the cluster
Signature string
// Names of nodes currently active in the cluster
Nodes []string
}
ClusterPing is content of a leader node ping to a follower node.
type ClusterReq ¶
type ClusterReq struct {
// Name of the node sending this request
Node string
// Ring hash signature of the node sending this request
// Signature must match the signature of the receiver, otherwise the
// Cluster is desynchronized.
Signature string
MsgSub *lp.Subscribe
MsgPub *lp.Publish
MsgUnsub *lp.Unsubscribe
Topic *security.Topic
Type uint8
Message *message.Message
// Originating session
Conn *ClusterSess
// True if the original session has disconnected
ConnGone bool
}
ClusterReq is a Proxy to Master request message.
type ClusterResp ¶
type ClusterResp struct {
Type uint8
MsgSub *lp.Subscribe
MsgPub *lp.Publish
MsgUnsub *lp.Unsubscribe
Msg []byte
Topic *security.Topic
Message *message.Message
// Connection ID to forward message to, if any.
FromConnID uid.LID
}
ClusterResp is a Master to Proxy response message.
type ClusterSess ¶
type ClusterSess struct {
// IP address of the client. For long polling this is the IP of the last poll
RemoteAddr string
// Connection ID
ConnID uid.LID
// Client ID
ClientID uid.ID
}
ClusterSess is a basic info on a remote session where the message was created.
type ClusterVote ¶
type ClusterVote struct {
// contains filtered or unexported fields
}
ClusterVote is a vote request and a response in leader election.
type ClusterVoteRequest ¶
type ClusterVoteRequest struct {
// Candidate node which issued this request
Node string
// Election term
Term int
}
ClusterVoteRequest is a request from a leader candidate to a node to vote for the candidate.
type ClusterVoteResponse ¶
type ClusterVoteResponse struct {
// Actual vote
Result bool
// Node's term after the vote
Term int
}
ClusterVoteResponse is a vote from a node.
type Conn ¶
type Conn struct {
sync.Mutex
message.MessageIds // local identifier of messages
// contains filtered or unexported fields
}
func (*Conn) SendMessage ¶
Send forwards the message to the underlying client.
func (*Conn) SendRawBytes ¶
Send forwards raw bytes to the underlying client.
func (*Conn) Type ¶
func (c *Conn) Type() message.SubscriberType
Type returns the type of the subscriber
type ConnCache ¶
func NewConnCache ¶
func NewConnCache() *ConnCache
type Meter ¶
type Meter struct {
Metrics metrics.Metrics
ConnTimeSeries metrics.TimeSeries
Connections metrics.Counter
Subscriptions metrics.Counter
InMsgs metrics.Counter
OutMsgs metrics.Counter
InBytes metrics.Counter
OutBytes metrics.Counter
}
func (*Meter) UnregisterAll ¶
func (m *Meter) UnregisterAll()
type Service ¶
type Service struct {
PID uint32 // The processid is unique Id for the application
MAC *crypto.MAC // The MAC to use for decoding and encoding keys.
// contains filtered or unexported fields
}
Service is a main struct
func (*Service) HandleVarz ¶
func (m *Service) HandleVarz(w http.ResponseWriter, r *http.Request)
HandleVarz will process HTTP requests for conn stats information.
type Varz ¶
type Varz struct {
Start time.Time `json:"start"`
Now time.Time `json:"now"`
Uptime string `json:"uptime"`
Connections int64 `json:"connections"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
Subscriptions int64 `json:"subscriptions"`
HMean float64 `json:"hmean"` // Event duration harmonic mean.
P50 float64 `json:"p50"` // Event duration nth percentiles ..
P75 float64 `json:"p75"`
P95 float64 `json:"p95"`
P99 float64 `json:"p99"`
P999 float64 `json:"p999"`
Long5p float64 `json:"long_5p"` // Average of the longest 5% event durations.
Short5p float64 `json:"short_5p"` // Average of the shortest 5% event durations.
Max float64 `json:"max"` // Highest event duration.
Min float64 `json:"min"` // Lowest event duration.
StdDev float64 `json:"stddev"` // Standard deviation.
}
Stats will output server information on the monitoring port at /varz.