flink icon indicating copy to clipboard operation
flink copied to clipboard

[FLINK-28870][Connector/Pulsar] Improve the Pulsar source performance when meeting small data source

Open syhily opened this issue 1 year ago • 1 comments

What is the purpose of the change

When using Pulsar Source to consume data, if the data rate is small, e.g. 2 msg/s, there will be long periods of time when no messages are consumed.

This is caused by the default PulsarSourceOptions.PULSAR_MAX_FETCH_TIME and PulsarSourceOptions.PULSAR_MAX_FETCH_RECORDS options. Pulsar Source will try to pull messages until any conditions exceed. Such as fetch until 100 messages or fetch 10 seconds.

We have to add a new fetch time option for Pulsar Source. We would consider there is no message on the current topic if this fetch time exceeds. This would make sure the source would stop fetching messages when the 100ms exceed. Avoid hanging on small message income rates.

Brief change log

  • Add new PulsarSourceOptions.PULSAR_DEFAULT_FETCH_TIME option.
  • Change the polling timeout to PulsarSourceOptions.PULSAR_DEFAULT_FETCH_TIME.

Verifying this change

This change is already covered by existing tests, such as PulsarOrderedPartitionSplitReaderTest, PulsarUnorderedPartitionSplitReaderTest.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): (no)
  • The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
  • The serializers: (no)
  • The runtime per-record code paths (performance sensitive): (no)
  • Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
  • The S3 file system connector: (no)

Documentation

  • Does this pull request introduce a new feature? (no)
  • If yes, how is the feature documented? (not applicable)

syhily avatar Aug 08 '22 12:08 syhily

CI report:

  • 8d50b670c568b8856a5e5cc2b31f2a70b4038585 Azure: FAILURE
Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

flinkbot avatar Aug 08 '22 14:08 flinkbot