From 22f64455e0b54f54aa8e39fbf4cb9a3be44ab564 Mon Sep 17 00:00:00 2001 From: stair Date: Fri, 13 Oct 2023 10:59:30 -0400 Subject: [PATCH] Added doc for leases and the lease lifecycle. --- docs/images/lease-shard-sync.png | Bin 0 -> 102543 bytes docs/images/lease-taking.png | Bin 0 -> 35671 bytes docs/images/leases-and-mutations.png | Bin 0 -> 27775 bytes docs/leases-and-lease-lifecycle.md | 154 ++++++++++++++++++++++++ docs/plantuml/lease-shard-sync.puml | 63 ++++++++++ docs/plantuml/lease-taking.puml | 33 +++++ docs/plantuml/leases-and-mutations.puml | 35 ++++++ 7 files changed, 285 insertions(+) create mode 100644 docs/images/lease-shard-sync.png create mode 100644 docs/images/lease-taking.png create mode 100644 docs/images/leases-and-mutations.png create mode 100644 docs/leases-and-lease-lifecycle.md create mode 100644 docs/plantuml/lease-shard-sync.puml create mode 100644 docs/plantuml/lease-taking.puml create mode 100644 docs/plantuml/leases-and-mutations.puml diff --git a/docs/images/lease-shard-sync.png b/docs/images/lease-shard-sync.png new file mode 100644 index 0000000000000000000000000000000000000000..af30496e144a63573c3fcb01f76ca3a4bd76686f GIT binary patch literal 102543 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 literal 0 HcmV?d00001 diff --git a/docs/leases-and-lease-lifecycle.md b/docs/leases-and-lease-lifecycle.md new file mode 100644 index 00000000..18a7642a --- /dev/null +++ b/docs/leases-and-lease-lifecycle.md @@ -0,0 +1,154 @@ +# Leases and Lease Lifecycle + +Leases are created in, and leveraged by, KCL to manage a stream's shards. +This document should help provide insights into the lease lifecycle. + +**Nota bene (N.B.):** while actual shard ids are formatted like `shardId-000000000042`, this document uses `shardId[_-]42` for concision. + +## Leases + +In KCL, a lease provides a temporal assignment between one Kinesis shard and an assigned worker. +Leases are persistent for the duration of shard processing (detailed later). +However, lease assignment is transient -- leases may be "stolen" by other workers in the same KCL application. + +## Lease Table + +To persist metadata about lease state (e.g., last read checkpoint, current assigned worker), KCL creates a lease table in [DynamoDB][dynamodb]. +Each KCL application will have its own distinct lease table that transcludes the application name. +More information, including schema, is provided at [KCL LeaseTable][kcl-leasetable]. + +## Lease Assignment + +The "life" of a lease closely mirrors the duration that a shard is being processed. + +![Activity diagram of KCL shard-to-lease assignments. +shard-0 (lease-0) is unmodified. +shard-1 (lease-1) is split into shard-4 (lease-4) and shard-5 (lease-5). +shard-2 (lease-2) and shard-3 (lease-3) are merged into shard-6 (lease-6). +](images/leases-and-mutations.png) + +Specifically, leases are unique to the shard and are not recycled for stream mutations (i.e., split, merge). +Shards created by stream mutations will generate a new lease. + +It should be noted that the number of tracked leases may exceed the number of shards. +Per the diagram (above), this can occur when there are stream mutations propagating through KCL. +For example, a 10-shard stream that is split on every shard may temporarily have up-to 30 leases: 10 original + 20 children. + +N.B. Leases are uniquely identified by their `leaseKey` which looks vastly different than `lease_X`. +For details on the `leaseKey` format, please see [KCL LeaseTable][kcl-leasetable]. + +## Lease Lifecycle + +Leases follow a relatively simple, progressive state machine: +`DISCOVERY -> CREATION -> PROCESSING -> SHARD_END -> DELETION` + +Excluding `SHARD_END`, these phases are illustrative of KCL logic and are not explicitly codified. + +1. `DISCOVERY`: KCL [shard-syncing](#lease-syncing) identifies new shards. +Discovered shards may result from: + * First time starting KCL with an empty lease table. + * Stream mutations (i.e., split, merge) that create child shards. + * In multi-stream mode, dynamic discovery of a new stream. +1. `CREATION`: Leases are created 1:1 for each discovered shard, and initialized at the configured initial position. + * Leases are only created if they are eligible for processing. + For example, child shards will not have leases created until its parent(s) have reached `SHARD_END`. +1. `PROCESSING`: Leases are processed, and continually updated with new checkpoints. + * In general, leases spend the majority of their life in this state. +1. `SHARD_END`: The associated shard is `SHARD_END` and all records have been processed by KCL for the shard. +1. `DELETION`: Since there are no more records to process, KCL will delete the lease from the lease table. + * Deletion will only be triggered after all parents of a child shard have converged to `SHARD_END`. + Convergence is required to preserve ordering of records between parent-child relationships. + * Deletion is configurable yet recommended to minimize I/O of lease table scans. + +### Lease Syncing + +Lease syncing is a complex responsibility owned by the "leader" host in a KCL application. +By invoking the [ListShards API][list-shards], KCL will identify the shards for the configured stream(s). +This process is scheduled at a configurable interval so KCL can self-identify new shards introduced via stream mutations. + +![Abridged sequence diagram of the Shard Sync process. +Listed participants are the Scheduler, LeaseCoordinator, PeriodicShardSyncManager, ShardSyncTask, +Lease Table (DDB), LeaseRefresher, LeaseSynchronizer, HierarchicalShardSyncer, and ShardDetector. +](images/lease-shard-sync.png) + +For convenience, links to code: +* `Scheduler`: [implementation][scheduler] +* `LeaseCoordinator`: [interface][lease-coordinator], [implementation][lease-coordinator-impl] +* `PeriodicShardSyncManager`: [implementation][periodic-shard-sync-manager] +* `ShardSyncTask`: [interface][consumer-task], [implementation][consumer-task-impl] +* `LeaseRefresher`: [interface][lease-refresher], [implementation][lease-refresher-impl] +* `LeaseSynchronizer`: [implementation][non-empty-lease-table-synchronizer] +* `HierarchicalShardSyner`: [implementation][hierarchical-shard-syncer] +* `ShardDetector`: [interface][shard-detector], [implementation][shard-detector-impl] + +Lease creation is a deterministic process. +Assume a stream has the following shard hierarchy: +

+Shard structure (each level depicts a stream segment):
+  0 1 2 3 4   5    - shards till epoch 102
+  \ / \ / |   |
+   6   7  4   5    - shards from epoch 103 - 205
+   \  /   |  / \
+     8    4 9  10  - shards from epoch 206+ (still open)
+
+ +Then [NonEmptyLeaseTableSynchronizer][non-empty-lease-table-synchronizer] +would create leases dependent on the configured initial position. +Assuming leases `(4, 5, 7)` already exist, the leases created for an initial position would be: +* `LATEST` creates `(6)` to resolve the gap on-par with epochs 103-205 which is required to eventually reach `LATEST` +* `TRIM_HORIZON` creates `(0, 1)` to resolve the gap starting from the `TRIM_HORIZON` +* `AT_TIMESTAMP(epoch=200)` creates `(0, 1)` to resolve the gap leading into epoch 200 + +## Lease Balancing + +KCL will, at a cadence configured by `leaseDuration` and `epsilonMillis`, attempt to "balance" leases across workers. +Lease balancing is done to protect against stagnation if a worker stops updating the lease table (e.g., host failure). +This operation is naive and only attempts to equally distribute leases across the available hosts; +shards are not guaranteed to be equal in their `put` workloads, and balancing is blind to this I/O skew. + +![Sequence diagram of the KCL Lease Taking workflow. +Participants include the LeaseCoordinator, LeaseTaker, LeaseRefresher, and Lease Table (DDB). +LeaseRefresher is leveraged to acquire the leases from the lease table. +LeaseTaker identifies which leases are eligible for taking/stealing. +All taken/stolen leases are passed through LeaseRefresher to update the lease table. +](images/lease-taking.png) + +For convenience, links to code: +* `LeaseCoordinator`: [interface][lease-coordinator], [implementation][lease-coordinator-impl] +* `LeaseTaker`: [interface][lease-taker], [implementation][lease-taker-impl] +* `LeaseRefresher`: [interface][lease-refresher], [implementation][lease-refresher-impl] + +Leases are stolen if-and-only-if there were zero expired leases and the looking-to-steal-worker desires more leases. +Stolen leases are randomly selected from whichever worker has the most leases. +The number of leases to steal on each loop is configured via `maxLeasesToStealAtOneTime`. + +Customers should consider the following trade-offs when configuring the lease-taking cadence: +1. `LeaseRefresher` invokes a DDB `scan` against the lease table which has a cost proportional to the number of leases. +1. Frequent balancing may cause high lease turn-over which incurs DDB `write` costs, and potentially redundant work for stolen leases. +1. High `maxLeasesToStealAtOneTime` may cause churn. + * For example, worker `B` steals multiple leases from worker `A` creating a numerical imbalance. + In the next loop, worker `C` may steal leases from worker `B`. +1. Low `maxLeasesToStealAtOneTime` may increase the time to fully (re)assign leases after an impactful event (e.g., deployment, host failure). + +# Additional Reading + +Informative articles that are recommended (in no particular order): +* https://aws.amazon.com/blogs/big-data/processing-amazon-dynamodb-streams-using-the-amazon-kinesis-client-library/ + +[consumer-task]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ConsumerTask.java +[consumer-task-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTask.java +[dynamodb]: https://aws.amazon.com/dynamodb/ +[hierarchical-shard-syncer]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/HierarchicalShardSyncer.java +[kcl-leasetable]: https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html#shared-throughput-kcl-consumers-leasetable +[lease-coordinator]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCoordinator.java +[lease-coordinator-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseCoordinator.java +[lease-refresher]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseRefresher.java +[lease-refresher-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseRefresher.java +[lease-taker]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseTaker.java +[lease-taker-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseTaker.java +[list-shards]: https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html +[non-empty-lease-table-synchronizer]: https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/HierarchicalShardSyncer.java#L857-L910 +[periodic-shard-sync-manager]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManager.java +[scheduler]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java +[shard-detector]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java +[shard-detector-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisShardDetector.java diff --git a/docs/plantuml/lease-shard-sync.puml b/docs/plantuml/lease-shard-sync.puml new file mode 100644 index 00000000..3954301d --- /dev/null +++ b/docs/plantuml/lease-shard-sync.puml @@ -0,0 +1,63 @@ +@startuml +'https://plantuml.com/sequence-diagram + +autonumber + +title KCL Shard Syncing (Abridged) + +participant Scheduler as S +participant LeaseCoordinator as LC +participant PeriodShardSyncManager as PSS +participant ShardSyncTask as SST +participant "Lease Table (DDB)" as DDB +participant LeaseRefresher as LR +participant LeaseSynchronizer as LS +participant HierarchicalShardSyncer as HSS +participant ShardDetector as SD + +alt on initialization + S->S: create PeriodicShardSyncManager(\n ..., leaseRefresher, leasesRecoveryAuditorExecutionFrequencyMillis, ...) + S->LC: initialize() + opt if lease table does not exist + LC->DDB: create lease table + end + S->PSS: start() + PSS->PSS: schedule self every\n leasesRecoveryAuditorExecutionFrequencyMillis +end + +loop every leasesRecoveryAuditorExecutionFrequencyMillis + opt if worker is not leader + PSS->PSS: go back to sleep + end + + PSS->PSS: runShardSync() + opt if not required to sync shards + PSS->PSS: go back to sleep + end + + PSS->SST: call() + SST->HSS: checkAndCreateLeasesForNewShards(\n shardDetector, initialPosition, ...) + opt if lease table is empty + HSS->HSS: getShardListAtInitialPosition(shardDetector, initialPosition) + HSS->SD: listShardsWithFilter(initialPositionFilter) + else lease table is non-empty + HSS->HSS: getShardList(shardDetector) + HSS->SD: listShards(...) + note over SD + ShardDetector invokes the Kinesis ListShards API. + end note + end + HSS->HSS: checkAndCreateLeaseForNewShards(\n shardDetector, leaseRefresher, initialPosition, ...) + HSS->LR: listLeases() + LR->DDB: scan(:streamName=streamName) + DDB->LR: leases from table + LR->HSS: leases from table + HSS->LS: determine leases to create + LS->HSS: leases that are eligible for processing + loop every lease to create + HSS->LR: createLeaseIfNotExists(lease) + LR->DDB: putItem(lease) + end +end + +@enduml diff --git a/docs/plantuml/lease-taking.puml b/docs/plantuml/lease-taking.puml new file mode 100644 index 00000000..01cbff21 --- /dev/null +++ b/docs/plantuml/lease-taking.puml @@ -0,0 +1,33 @@ +@startuml +'https://plantuml.com/sequence-diagram + +autonumber + +title KCL Lease Taking + +participant LeaseCoordinator as LC +participant LeaseTaker as LT +participant LeaseRefresher as LR +participant "Lease Table (DDB)" as DDB + +loop every 2*(leaseDurationMillis + epsilonMillis) + LC->LT: takeLeases() + LT->LT: updateAllLeases() + LT->LR: listLeases() + LR->DDB: scan(:streamName=streamName) + DDB->LR: leases from table + LR->LT: leases from table + LT->LT: evict from memory any lease not returned from table + LT->LT: getExpiredLeases() + note over LT + Leases are "expired" if their last scan time exceeds the max lease duration. + end note + LT->LT: calculate lease count per host + LT->LT: chooseLeasesToSteal() + loop for each lease to take/steal + LT->LR: takeLease(lease, worker) + LR->DDB: updateItem(lease) + end +end + +@enduml \ No newline at end of file diff --git a/docs/plantuml/leases-and-mutations.puml b/docs/plantuml/leases-and-mutations.puml new file mode 100644 index 00000000..d865fa6b --- /dev/null +++ b/docs/plantuml/leases-and-mutations.puml @@ -0,0 +1,35 @@ +@startuml +'https://plantuml.com/activity-diagram-legacy + +title KCL Shard<->Lease Assignments + +[*] --> ShardNoOp +[*] --> ShardSplit +[*] --> ShardMerge +ShardNoOp --> [*] +ShardSplit --> [*] +ShardMerge --> [*] + +state ShardNoOp { + shard_0 : lease_0 +} + +state ShardSplit { + shard_1 : lease_1 + shard_4 : lease_4 + shard_5 : lease_5 + + shard_1 --> shard_4 : split + shard_1 --> shard_5 : split +} + +state ShardMerge { + shard_2 : lease_2 + shard_3 : lease_3 + shard_6 : lease_6 + + shard_2 --> shard_6 : merge + shard_3 --> shard_6 : merge +} + +@enduml \ No newline at end of file