Documentation
¶
Index ¶
- Variables
- func ClusterInit(configString json.RawMessage, self *string) int
- func NewConnCache() *_ConnCache
- func NewService(cfg *config.Config) (s *_Service, err error)
- func ResponseHandler(w http.ResponseWriter, r *http.Request, data []byte)
- func TimeNow() time.Time
- type Cluster
- func (c *Cluster) Master(reqMsg *ClusterReq, rejected *bool) error
- func (c *Cluster) Ping(ping *ClusterPing, unused *bool) error
- func (Cluster) Proxy(resp *ClusterResp, unused *bool) error
- func (c *Cluster) Start()
- func (c *Cluster) Vote(vreq *ClusterVoteRequest, response *ClusterVoteResponse) error
- type ClusterNode
- type ClusterPing
- type ClusterReq
- type ClusterResp
- type ClusterSess
- type ClusterVote
- type ClusterVoteRequest
- type ClusterVoteResponse
- type Meter
- type Varz
Constants ¶
This section is empty.
Variables ¶
var Globals struct { Cluster *Cluster Service *_Service // contains filtered or unexported fields }
Functions ¶
func ClusterInit ¶
func ClusterInit(configString json.RawMessage, self *string) int
Returns worker id
func NewConnCache ¶
func NewConnCache() *_ConnCache
func NewService ¶
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(reqMsg *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
SubMsg *utp.Subscribe
PubMsg *utp.Publish
UnsubMsg *utp.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
SubMsg *utp.Subscribe
PubMsg *utp.Publish
UnsubMsg *utp.Unsubscribe
RespMsg []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
// protocol - NONE (unset), RPC, GRPC, GRPC_WEB, WEBSOCK
Proto lp.Proto
// Connection ID
ConnID uid.LID
// Session ID
SessID 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 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 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.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
pkg
|
|
|
hash
Package ringhash implementats a consistent ring hash: https://en.wikipedia.org/wiki/Consistent_hashing
|
Package ringhash implementats a consistent ring hash: https://en.wikipedia.org/wiki/Consistent_hashing |
|
stats
Package Meter yields summarized data describing a series of timed events.
|
Package Meter yields summarized data describing a series of timed events. |