[ADDED] Multiple routes and ability to have per-account routes

New configuration fields:
```
cluster {
   ...
   pool_size: 5
   accounts: ["A", "B"]
}
```

The configuration `pool_size` in the example above means that this
server will create 5 routes to a remote server, assuming that that
server has the same `pool_size` setting.

Accounts (which are not part of the `accounts[]` configuration)
are assigned a specific route in this pool, and this will be the
same route on all servers in the cluster.

Accounts that are defined in the `accounts` field will each have
a dedicated route connection. This will allow suppression of the
account name in some of the route protocols, reducing bytes transmitted
which may increase performance.

Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
This commit is contained in:
Ivan Kozlovic
2023-03-20 16:48:39 -06:00
parent 70f6caa060
commit 105237cba8
34 changed files with 4590 additions and 722 deletions

View File

@@ -79,6 +79,8 @@ func RunServerCallback(opts *server.Options, callback func(*server.Server)) *ser
opts.NoLog = !doLog
opts.Trace = doTrace
opts.Debug = doDebug
// For all tests in the "test" package, we will disable route pooling.
opts.Cluster.PoolSize = -1
s, err := server.NewServer(opts)
if err != nil || s == nil {