ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
© 2022, Amazon Web Services, Inc. or its affiliates.
One sink to rule them all
Introducing the new Async Sink
Danny Cranmer
Sr. Software Development Engineer, AWS
Steffen Hausmann
Principal Streaming Architect, AWS
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
Apache Flink’s connector ecosystem
2
Amazon Kinesis
Data Streams
Elasticsearch
RabbitMQ
Google PubSub
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
How to build a high quality connector
Buffering Send batch
requests
Retry failed
requests
Checkpointing Rate limiting and
Backpressure
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
Async Sink internals
internal buffer
endpoint
message request entries
batch request
response
requeue
failed requests
checkpoint
sink to
AsyncSinkWriter
request entries -> batch request
ElementConverter
message -> request entry
AsyncSinkWriter
response -> failed requests
AsyncSink
WriterStateSerializer
4
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
How the Async Sink manages throughput
6
endpoint
sink subtask3
sink subtask2
sink subtask1
1. Limit the number of in-flight request entries
2. If a batch request was successful, increase
the limit by a constant factor
3. If a batch request failed, cut the limit in half
Additive Increase/Multiplicative Decrease
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
© 2022, Amazon Web Services, Inc. or its affiliates.
Let’s go build!
7
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
Async Sink configuration
endpoint
message request entries
batch request
sink to
maxRecordSizeInBytes
8
maxInFlightRequests
maxBatchSize
maxBatchSizeInBytes
maxBufferedRequests
maxTimeInBufferMs
internal buffer
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
Current limitations
At least
once
Ordering Thread pool
management
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
What’s Next?
FLIP-242
Configurable
Rate Limiting
FLIP-252
Amazon DynamoDB
Sink
Wider
Community
Adoption
ONE SINK TO RULE THEM ALL: INTRODUCING THE NEW ASYNC SINK
© 2022, Amazon Web Services, Inc. or its affiliates.
Thank you!
© 2022, Amazon Web Services, Inc. or its affiliates.
Danny Cranmer Steffen Hausmann

One sink to rule them all: Introducing the new Async Sink

  • 1.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. One sink to rule them all Introducing the new Async Sink Danny Cranmer Sr. Software Development Engineer, AWS Steffen Hausmann Principal Streaming Architect, AWS
  • 2.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. Apache Flink’s connector ecosystem 2 Amazon Kinesis Data Streams Elasticsearch RabbitMQ Google PubSub
  • 3.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. How to build a high quality connector Buffering Send batch requests Retry failed requests Checkpointing Rate limiting and Backpressure
  • 4.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. Async Sink internals internal buffer endpoint message request entries batch request response requeue failed requests checkpoint sink to AsyncSinkWriter request entries -> batch request ElementConverter message -> request entry AsyncSinkWriter response -> failed requests AsyncSink WriterStateSerializer 4
  • 5.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. How the Async Sink manages throughput 6 endpoint sink subtask3 sink subtask2 sink subtask1 1. Limit the number of in-flight request entries 2. If a batch request was successful, increase the limit by a constant factor 3. If a batch request failed, cut the limit in half Additive Increase/Multiplicative Decrease
  • 6.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. Let’s go build! 7
  • 7.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. Async Sink configuration endpoint message request entries batch request sink to maxRecordSizeInBytes 8 maxInFlightRequests maxBatchSize maxBatchSizeInBytes maxBufferedRequests maxTimeInBufferMs internal buffer
  • 8.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. Current limitations At least once Ordering Thread pool management
  • 9.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. What’s Next? FLIP-242 Configurable Rate Limiting FLIP-252 Amazon DynamoDB Sink Wider Community Adoption
  • 10.
    ONE SINK TORULE THEM ALL: INTRODUCING THE NEW ASYNC SINK © 2022, Amazon Web Services, Inc. or its affiliates. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. Danny Cranmer Steffen Hausmann