docs: update differences scope for jetstream and clustering parity
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Go vs .NET NATS Server: Functionality Differences
|
||||
|
||||
> Excludes clustering/routes, gateways, leaf nodes, and JetStream.
|
||||
> Generated 2026-02-22 by comparing `golang/nats-server/server/` against `src/NATS.Server/`.
|
||||
> Includes clustering/routes, gateways, leaf nodes, and JetStream parity scope.
|
||||
> Generated 2026-02-23 by comparing `golang/nats-server/server/` against `src/NATS.Server/`.
|
||||
|
||||
---
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
| Type | Go | .NET | Notes |
|
||||
|------|:--:|:----:|-------|
|
||||
| CLIENT | Y | Y | |
|
||||
| ROUTER | Y | N | Excluded per scope |
|
||||
| GATEWAY | Y | N | Excluded per scope |
|
||||
| LEAF | Y | N | Excluded per scope |
|
||||
| ROUTER | Y | Y | Route handshake + routing primitives implemented |
|
||||
| GATEWAY | Y | Y | Gateway manager bootstrap implemented |
|
||||
| LEAF | Y | Y | Leaf node manager bootstrap implemented |
|
||||
| SYSTEM (internal) | Y | N | |
|
||||
| JETSTREAM (internal) | Y | N | |
|
||||
| ACCOUNT (internal) | Y | N | |
|
||||
@@ -127,9 +127,9 @@ Go implements a sophisticated slow consumer detection system:
|
||||
| PING / PONG | Y | Y | |
|
||||
| MSG / HMSG | Y | Y | |
|
||||
| +OK / -ERR | Y | Y | |
|
||||
| RS+/RS-/RMSG (routes) | Y | N | Excluded per scope |
|
||||
| A+/A- (accounts) | Y | N | Excluded per scope |
|
||||
| LS+/LS-/LMSG (leaf) | Y | N | Excluded per scope |
|
||||
| RS+/RS-/RMSG (routes) | Y | Y | Route protocol primitives implemented |
|
||||
| A+/A- (accounts) | Y | N | Inter-server account protocol ops still pending |
|
||||
| LS+/LS-/LMSG (leaf) | Y | Y | Leaf protocol primitives implemented |
|
||||
|
||||
### Protocol Parsing Gaps
|
||||
| Feature | Go | .NET | Notes |
|
||||
@@ -191,7 +191,7 @@ Go implements a sophisticated slow consumer detection system:
|
||||
|---------|:--:|:----:|-------|
|
||||
| Per-account subscription limit | Y | Y | `Account.IncrementSubscriptions()` returns false when `MaxSubscriptions` exceeded |
|
||||
| Auto-unsubscribe on max messages | Y | Y | Enforced at delivery; sub removed from trie + client dict when exhausted |
|
||||
| Subscription routing propagation | Y | N | For clusters |
|
||||
| Subscription routing propagation | Y | Y | Remote subscription propagation implemented for routes |
|
||||
| Queue weight (`qw`) field | Y | N | For remote queue load balancing |
|
||||
|
||||
---
|
||||
@@ -221,7 +221,7 @@ Go implements a sophisticated slow consumer detection system:
|
||||
| Account exports/imports | Y | N | |
|
||||
| Per-account connection limits | Y | Y | `Account.AddClient()` returns false when `MaxConnections` exceeded |
|
||||
| Per-account subscription limits | Y | Y | `Account.IncrementSubscriptions()` enforced in `ProcessSub()` |
|
||||
| Account JetStream limits | Y | N | Excluded per scope |
|
||||
| Account JetStream limits | Y | Y | Enforced via account-level stream reservation limits |
|
||||
|
||||
### Permissions
|
||||
| Feature | Go | .NET | Notes |
|
||||
@@ -260,7 +260,7 @@ Go implements a sophisticated slow consumer detection system:
|
||||
| Config file parsing | Y | Y | Custom NATS conf lexer/parser ported from Go; supports includes, variables, blocks |
|
||||
| Hot reload (SIGHUP) | Y | Y | Reloads logging, auth, limits, TLS certs on SIGHUP; rejects non-reloadable changes |
|
||||
| Config change detection | Y | Y | SHA256 digest comparison; `InCmdLine` tracks CLI flag precedence |
|
||||
| ~450 option fields | Y | ~72 | .NET covers core + all single-server options; cluster/JetStream keys silently ignored |
|
||||
| ~450 option fields | Y | ~72 | .NET covers core + single-server options plus cluster/JetStream parsing and reload boundary validation |
|
||||
|
||||
### Missing Options Categories
|
||||
- ~~Logging options~~ — file logging, rotation, syslog, debug/trace, color, timestamps, per-subsystem log control all implemented
|
||||
@@ -288,7 +288,7 @@ Go implements a sophisticated slow consumer detection system:
|
||||
| `/subz` / `/subscriptionsz` | Y | Y | Account filtering, test subject filtering, pagination, and subscription details |
|
||||
| `/accountz` | Y | Stub | Returns empty response |
|
||||
| `/accstatz` | Y | Stub | Returns empty response |
|
||||
| `/jsz` | Y | Stub | Returns empty response |
|
||||
| `/jsz` | Y | Y | Returns live JetStream counts/config via `JszHandler` |
|
||||
|
||||
### Varz Response
|
||||
| Field Category | Go | .NET | Notes |
|
||||
@@ -302,8 +302,8 @@ Go implements a sophisticated slow consumer detection system:
|
||||
| Connections (current, total) | Y | Y | |
|
||||
| Messages (in/out msgs/bytes) | Y | Y | |
|
||||
| SlowConsumer breakdown | Y | N | Go tracks per connection type |
|
||||
| Cluster/Gateway/Leaf blocks | Y | N | Excluded per scope |
|
||||
| JetStream block | Y | N | Excluded per scope |
|
||||
| Cluster/Gateway/Leaf blocks | Y | Partial | Config projection present; `/gatewayz` and `/leafz` endpoints remain stubs |
|
||||
| JetStream block | Y | Y | Includes live JetStream config + stream/consumer counts |
|
||||
| TLS cert expiry info | Y | Y | `TlsCertNotAfter` loaded via `X509CertificateLoader` in `/varz` |
|
||||
|
||||
### Connz Response
|
||||
|
||||
Reference in New Issue
Block a user