From 72774e3c9c004c9f2574bb7f25cd9fac6d83fe53 Mon Sep 17 00:00:00 2001 From: "R.I.Pienaar" Date: Wed, 18 Oct 2023 16:40:55 +0200 Subject: [PATCH] Formalized Multi-cluster and Leafnode toplogies Signed-off-by: R.I.Pienaar --- adr/ADR-8.md | 193 ++++++++++++++++++++++++++++----- adr/images/0008-topologies.png | Bin 0 -> 70324 bytes 2 files changed, 164 insertions(+), 29 deletions(-) create mode 100644 adr/images/0008-topologies.png diff --git a/adr/ADR-8.md b/adr/ADR-8.md index 9c5945e4..8a40ce2f 100644 --- a/adr/ADR-8.md +++ b/adr/ADR-8.md @@ -9,11 +9,13 @@ ## Release History -| Revision | Date | Description | -|----------|------------|-------------------------------------------| -| 1 | 2023-10-16 | Document NATS Server 2.10 sourced buckets | -| 1 | 2023-10-16 | Document read replica mirrors buckets | -| 1 | 2023-10-16 | Document consistency guarantees | +| Revision | Date | Description | +|----------|------------|-----------------------------------------------------| +| 1 | 2021-12-15 | Initial stable release of version 1.0 specification | +| 2 | 2023-10-16 | Document NATS Server 2.10 sourced buckets | +| 2 | 2023-10-16 | Document read replica mirrors buckets | +| 2 | 2023-10-16 | Document consistency guarantees | +| 3 | 2023-10-19 | Formalize initial bucket topologies | ## Context @@ -51,6 +53,7 @@ additional behaviors will come during the 1.x cycle. * Merged buckets using NATS Server 2.10 subject transforms * Read replicas facilitated by Stream Mirrors * Replica auto discovery for mirror based replicas + * Formalized Multi-cluster and Leafnode Topologies ### 1.2 @@ -394,22 +397,123 @@ is clearly indicated as a language specific extension. Names should be language The default behavior with no options set is to send all the `last_per_subject` values, including delete/purge operations. -#### Replicas for NATS Server 2.10 and newer +#### Multi-Cluster and Leafnode topologies + +A bucket, being backed by a Stream, lives in one Cluster only. To make buckets available elsewhere we have to use +JetStream Sources and Mirrors. + +In KV we call these `Toplogies` and adding *Topology Buckets* require using different APIs than the main Bucket API +allowing us to codify patterns and options that we support at a higher level than the underlying Stream options. + +For example, we want to be able to expose a single boolean that says an Aggregate is read-only which would potentially +influence numerous options in the Stream Configuration. + +![KV Topologies](images/0008-topologies.png) + +To better communicate the intent than the word Source we will use `Aggregate` in KV terms: + + **Mirror**: Copy of exactly 1 other bucket. Used primarily for scaling out the `Get()` operations. + + * It is always Read-Only + * It can hold a filtered subset of keys + * Replicas are automatically picked using a RTT-nearest algorithm without any configuration + * Additional replicas can be added and removed at run-time without any re-configuration of already running KV clients + * Writes and Watchers are transparently sent to the origin bucket + * Can replicate buckets from other accounts and domains + +**Aggregate**: A `Source` that combines one or many buckets into 1 new bucket. Used to provide a full local copy of +other buckets that support watchers and gets locally in edge scenarios. + + * Requires being accessed specifically by its name used in a `KeyValue()` call + * Can be read-only or read-write + * It can hold a subset of keys from the origin buckets to limit data exposure or size + * Can host watchers + * Writes are not transparently sent to the origin Bucket as with Replicas, they either fail (default) or succeed and + modify the Aggregate (opt-in) + * Can combine buckets from multiple other accounts and domains into a single Aggregate + * Additional Sources can be added after initially creating the Aggregate + +Experiments: + +These items we will add in future iterations of the Topology concept: + + * Existing Sources can be removed from an Aggregate. Optionally, but by default, purge the data out of the bucket + for the Source being removed + * Watchers could be supported against a Replica and would support auto-discovery of nearest replica but would + minimise the ability to add and remove Replicas at runtime + +*Implementation Note*: While this says Domains are supported, we might decide not to implement support for them at +this point as we know we will revisit the concept of a domain. The existing domain based mirrors that are supported +in KeyValueConfig will be deprecated but supported for the foreseeable future for those requiring domain support. + +#### Creation of Aggregates Since NATS Server 2.10 we support transforming messages as a stream configuration item. This allows us to source one bucket from another and rewrite the keys in the new bucket to have the correct name. -To copy the keys `NEW.>` from bucket `ORDERS` into `NEW_ORDERS` we create the new stream with the following -partial config: +We will model this using a few API functions and specific structures: + +```go +// KVAggregateConfig configures an aggregate +// +// This one is quite complex because are buckets in their own right and so inevitably need +// to have all the options that are in buckets today (minus the deprecated ones). +type KVAggregateConfig struct { + Bucket string + Writable bool + Description string + Replicas int + MaxValueSize int32 + History uint8 + TTL time.Duration + MaxBytes int64 + Storage KVStorageType // a new kv specific storage struct, for now identical to normal one + Placement *KVPlacement // a new kv specific placement struct, for now identical to normal one + RePublish *KVRePublish // a new kv specific replacement struct, for now identical to normal one + Origins []*KVAggregateOrigin +} + +type KVAggregateOrigin struct { + Stream string // note this is Stream and not Bucket since the origin may be a mirror which may not be a bucket + Bucket string // in the case where we are aggregating from a mirror, we need to know the bucket name to construct mappings + Keys []string // optional filter defaults to > + External *ExternalStream +} + +// CreateAggregate creates a new read-only Aggregate bucket with one or more sources +CreateAggregate(ctx context.Context, cfg KVAggregateOrigin) (KeyValue, error) {} + +// AddAggregateOrigin updates bucket by adding new origin cfg, errors if bucket is not an Aggregate +AddAggregateOrigin(ctx context.Context, bucket KeyValue, cfg KVAggregateOrigin) error {} +``` + +To copy the keys `NEW.>` from bucket `ORDERS` into `NEW_ORDERS`: + +```go +bucket, _ := CreateAggregate(ctx, KVAggregateConfig{ + Name: "NEW_ORDERS", + Writable: false, + Origins: []KVAggregateOrigin{ + { + Stream: "KV_ORDERS", + Keys: []string{"NEW.>"} + } + } +}) +``` + +We create the new stream with the following partial config, rest as per any other KV, if the `orders` handle : ```json + "subjects": []string{}, + "deny_delete": true, + "deny_purge": true, "sources": [ { "name": "KV_ORDERS", - "filter_subject": "$KV.ORDERS.NEW.>", "subject_transforms": [ { - "src": "$KV.ORDERS.>", + "src": "$KV.ORDERS.NEW.>", "dest": "$KV.NEW_ORDERS.>" } ] @@ -417,17 +521,55 @@ partial config: ], ``` +When writable, configure as normal just add the sources. + This results in all messages from `ORDERS` keys `NEW.>` to be copied into `NEW_ORDERS` and the subjects rewritten on write to the new bucket so that a unmodified KV client on `NEW_ORDERS` would just work. -As this is a `Source` and not a `Mirror` this new bucket can accept writes. Sourced streams can be created with no -listening subjects which would render the mirror a read-only replica. Given that it's a Source it can be made with -multiple sources to create an aggregate bucket by using multiple subject transforms. +#### Creation of Mirrors -#### Read replica mirrors +Replicas can be built using the standard mirror feature by setting `mirror_direct` to true as long as the origin bucket +also has `allow_direct`. When adding a mirror it should be confirmed that the origin bucket has `allow_direct` set. -Regional read replicas can be built using the standard mirror feature by setting `mirror_direct` to true as long as the -origin bucket also has `allow_direct`. +We will model this using a few API functions and specific structures: + +```go +type KVMirrorConfig struct { + Name string + Description string + Replicas int + History uint8 + TTL time.Duration + MaxBytes int64 + Storage StorageType + Placement *Placement + Keys []string // if empty no filters on the mirror +} + +type KVMirrorOrigin struct { + Stream string // note this is Stream and not Bucket since the origin may be a mirror which may not be a bucket + Keys []string // optional filter defaults to > + External *ExternalStream +} + +// CreateMirror creates a new read-only Mirror bucket from an origin bucket +CreateMirror(ctx context.Context, origin KVMirrorOrigin, cfg KVMirrorConfig) error {} +``` + +These mirrors are not called `Bucket` and may not have the `KV_` string name prefix as they are not buckets and cannot +be used as buckets without significant changes in how a KV client constructs its key names etc, we have done this in +the leafnode mode and decided it's not a good pattern. + +When creating a replica of `ORDERS` to `MIRROR_ORDERS_NYC` we do: + +```go +origin := KVMirrorOrigin{Name: "ORDERS"} + +err := CreateMirror(ctx, origin, KVMirrorConfig{ + Name: "MIRROR_ORDERS_NYC", + // ... +}) +``` When a direct read is done the response will be from the rtt-nearest mirror. With a mirror added the `nats` command can be used to verify that a alternative location is set: @@ -437,12 +579,12 @@ $ nats s info KV_ORDERS ... State: - Alternates: KV_ORDERS_NYC: Cluster: nyc Domain: hub - KV_ORDERS: Cluster: lon Domain: hub + Alternates: MIRROR_ORDERS_NYC: Cluster: nyc Domain: hub + KV_ORDERS: Cluster: lon Domain: hub ``` -Here we see a RTT-sorted list of alternatives, the `KV_ORDERS_NYC` is nearest to me in the RTT sorted list. +Here we see a RTT-sorted list of alternatives, the `MIRROR_ORDERS_NYC` is nearest to me in the RTT sorted list. When doing a direct get the headers will confirm the mirror served the request: @@ -450,7 +592,7 @@ When doing a direct get the headers will confirm the mirror served the request: $ nats req '$JS.API.DIRECT.GET.KV_ORDERS.$KV.ORDERS.NEW.123' '' 13:26:06 Sending request on "JS.API.DIRECT.GET.KV_ORDERS.$KV.ORDERS.NEW.123" 13:26:06 Received with rtt 1.319085ms -13:26:06 Nats-Stream: KV_ORDERS_NYC +13:26:06 Nats-Stream: MIRROR_ORDERS_NYC 13:26:06 Nats-Subject: $KV.ORDERS.NEW.123 13:26:06 Nats-Sequence: 12 13:26:06 Nats-Time-Stamp: 2023-10-16T12:54:19.409051084Z @@ -458,17 +600,10 @@ $ nats req '$JS.API.DIRECT.GET.KV_ORDERS.$KV.ORDERS.NEW.123' '' {......} ``` -As mirrors support subject filters these regional replicas can hold region specific keys. +As mirrors support subject filters these replicas can hold region specific keys. As this is a `Mirror` this stream does not listen on a subject and so the only way to get data into it is via the origin -bucket. - -Watchers will always run on the original stream. - -While it appears that there is significant overlap between this config and the source based one, only this strategy -creates RTT aware automatic nearest replica selection. Replicas can be added and removed without clients requiring any -knowledge of these replicas and clients will automatically use the nearest replica. During the life of a client the -replica used may even change as network conditions change. +bucket. We should also set the options to deny deletes and purges. #### API Design notes diff --git a/adr/images/0008-topologies.png b/adr/images/0008-topologies.png new file mode 100644 index 0000000000000000000000000000000000000000..44f523fa55956e759d03e9c1ab65796c31379860 GIT binary patch literal 70324 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 literal 0 HcmV?d00001