JeremyXin opened a new pull request, #12140:
URL: https://github.com/apache/seatunnel/pull/12140
…d metrics
<!--
Thank you for contributing to SeaTunnel! Please make sure that your code
changes
are covered with tests. And in case of new features or big changes
remember to adjust the documentation.
Feel free to ping committers for the review!
## Contribution Checklist
- Make sure that the pull request corresponds to a [GITHUB
issue](https://github.com/apache/seatunnel/issues).
- Name the pull request in the form "[Feature] [component] Title of the
pull request", where *Feature* can be replaced by `Hotfix`, `Bug`, etc.
- Minor fixes should be named following this pattern: `[hotfix] [docs] Fix
typo in README.md doc`.
-->
### Purpose of this pull request
<!-- Describe the purpose of this pull request. For example: This pull
request adds checkstyle plugin.-->
### Purpose
This PR implements Phase 1 advisory autoscaling for the Zeta engine.
Phase 1 only evaluates autoscaling signals and publishes recommendations. It
does not create or remove workers, drain workers, invoke actuators, rebuild
execution graphs, or change running-job parallelism.
### What Changed
- Added Zeta autoscaler configuration, disabled by default.
- Added autoscaling domain models for snapshots, evaluations,
recommendations, metric states, slot modes, and scaling actions.
- Added hierarchical Phase 1 policy based on:
- scheduler resource shortages
- worker CPU utilization
- worker JVM memory utilization
- fixed-slot utilization as auxiliary context only
- Added stabilization and recommendation fencing with `masterEpoch` and
`generation`.
- Integrated the autoscaler loop with Active Master lifecycle in
`CoordinatorService`.
- Added worker metrics reporting and ResourceManager-side sample/shortage
tracking.
- Added Hazelcast operations and serialization hooks for autoscaler data
exchange.
- Added read-only REST APIs:
- `/autoscaler/status`
- `/autoscaler/metrics`
- `/autoscaler/history`
- Added Prometheus/OpenMetrics exports for autoscaler state, inputs, and
recommendations.
- Added English and Chinese docs for autoscaling config, REST APIs, and
telemetry.
- Added unit tests for config parsing, policy, stabilization, fencing, state
store, sample store, signal collection, and
serialization hooks.
### Safety
- Autoscaling is disabled by default.
- All recommendations are advisory-only.
- Scale-in is exposed only as diagnostic recommendation state.
- No worker capacity mutation or running job rescaling is performed in Phase
1
### Does this PR introduce _any_ user-facing change?
<!--
Note that it means *any* user-facing change including all aspects such as
the documentation fix.
If yes, please clarify the previous behavior and the change this PR proposes
- provide the console output, description and/or an example to show the
behavior difference if possible.
If possible, please also clarify if this is a user-facing change compared to
the released SeaTunnel versions or within the unreleased branches such as dev.
If no, write 'No'.
If you are adding/modifying connector documents, please follow our new
specifications: https://github.com/apache/seatunnel/issues/4544.
-->
Yes.
- Adds optional Zeta engine Phase 1 autoscaling configuration under
`seatunnel.engine.autoscaler`, disabled by default.
- Adds user-facing autoscaler settings for enablement, evaluation interval,
metric freshness, stabilization windows, CPU/JVM
memory thresholds, fixed-slot thresholds, worker bounds, scale step, and
history size.
- Adds read-only autoscaler REST APIs:
- `/autoscaler/status`
- `/autoscaler/metrics`
- `/autoscaler/history`
- Adds Prometheus/OpenMetrics autoscaler metrics for autoscaler state, input
signals, recommendation output, worker sample status, and stabilization windows.
- Adds English and Chinese documentation for the new configuration, REST
APIs, and telemetry.
Existing scheduling behavior is unchanged unless autoscaling is explicitly
enabled.
### How was this patch tested?
<!--
If tests were added, say they were added here. Please make sure to add some
test cases that check the changes thoroughly including negative and positive
cases if possible.
If it was tested in a way different from regular unit tests, please clarify
how you tested step by step, ideally copy and paste-able, so that other
reviewers can test and check, and descendants can verify in the future.
If tests were not added, please describe why they were not added and/or why
it was difficult to add.
If you are adding E2E test cases, maybe refer to
https://github.com/apache/seatunnel/blob/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-cdc-mysql-e2e/src/test/resources/mysqlcdc_to_mysql.conf,
here is a good example.
-->
### Check list
* [ ] If any new Jar binary package adding in your PR, please add License
Notice according
[New License
Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/developer/new-license.md)
* [ ] If necessary, please update the documentation to describe the new
feature. https://github.com/apache/seatunnel/tree/dev/docs
* [ ] If necessary, please update `incompatible-changes.md` to describe the
incompatibility caused by this PR.
* [ ] If you are contributing the connector code, please check that the
following files are updated:
1. Update
[plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties)
and add new connector information in it
2. Update the pom file of
[seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml)
3. Add ci label in
[label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml)
4. Add e2e testcase in
[seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/)
5. Update connector
[plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]