Generic real-time gateway

Real-time gatewayrealtime-gateway

Vendor-neutral real-time gateway. Use when the real product is not in the catalogue; every rule for this kind still applies.

Provider
default
Category
Edge
Official docs
not recorded
Generic?
Vendor-neutral: the kind itself
Properties · 0 set by this component
propertytypevaluesrequireddefault
ackIntervalSeconds · advancedinteger—no—
autoscalingboolean—nofalse
channelAssignment · advancedenumrandom | hash | stickynorandom
drainOnScaleIn · advancedboolean—nofalse
managedboolean—nofalse
protocolenumwebsocket | sse | long-poll | grpc-stream | udp-multicastnowebsocket
pushFallback · advancedboolean—nofalse
sequenceNumbers · advancedboolean—nofalse
stampedeGuard · advancedboolean—nofalse
statefulboolean—notrue
subscriptionsPerUser · advancedinteger—no—
Rules that apply · 3

Every rule whose selector covers this component's kind or its category. Whether a rule fires depends on the design: its properties, its edges and its groups.

reconnect-stampede-without-guard

When a gateway holding millions of sockets restarts, every client reconnects at once and the gateway asks the coordination service about each of them. Without a stampede guard that lookup storm takes the coordination service down too.

  • — all of these hold:
  • — the node has at least one synchronous outgoing edge to a coordination-service
  • — the node's `stampedeGuard` is false
shared-host-per-channel-without-isolation

With heavy-tail traffic a few channels carry most of the load. Assigning channels at random lands those hot channels on arbitrary hosts, and every tenant sharing a host suffers for it.

  • — all of these hold:
  • — the node's `channelAssignment` is "random"
  • — the design requirement `traffic.skew` is "heavy-tail"
stateful-websocket-scale-in-without-drain

Scaling a gateway down kills every live WebSocket on the removed instance at once. Without a drain step those clients all reconnect together.

  • — all of these hold:
  • — the node's `autoscaling` is true
  • — the node's `drainOnScaleIn` is false
Use it in a design
nodes:
  - { id: "realtime-gateway", component: "realtime-gateway" }
Other Real-time gateway products · 19
Source
# yaml-language-server: $schema=../../schema/component.schema.json
# The vendor-neutral real-time gateway: the kind itself, with no product behind it. It sets no
# defaults and adds no properties, so every required kind property stays required on the node.
schemaVersion: "1"
type: "component"
id: "realtime-gateway"
kind: "realtime-gateway"
provider: "default"

The same page as markdown, for an agent: /catalogue/components/realtime-gateway.md