Aias00 opened a new issue, #7924:
URL: https://github.com/apache/shenyu/issues/7924

   ## Goal
   
   Support multiple developers running instances of the same service without 
maintaining a complete duplicate set of selectors/rules for each developer.
   
   Example: a request carrying an operator-defined developer identity should 
prefer developer A's user-service instance when A overrides that service, while 
order-service continues through the configured shared/default pool. The 
behavior for an absent or unhealthy personal instance must be explicit and 
observable.
   
   ## Reuse and boundaries
   
   - The user scenario is described in #6238; that issue is a question rather 
than an implementation/acceptance tracker.
   - Master `87c22dde7` propagates discovered upstream labels (#7847); reuse 
this model and the existing load-balancing/discovery path.
   - PR #6317 already implements generic Divide gray routing. Coordinate/reuse 
that engine rather than creating a competing gray load balancer or duplicating 
its configuration fields.
   
   The new deliverable is a developer-profile workflow and a clearly defined 
per-service isolation/fallback policy on top of these capabilities.
   
   ## MVP scope
   
   - Define one profile convention: an operator-controlled request identity 
source, a discovery label key and the services a profile overrides. The request 
may select only configured profiles/registered upstreams, not an arbitrary 
upstream address.
   - Configure the policy once per service/namespace. Developers should not 
copy every selector and rule merely to add their own instance.
   - For overridden services, select healthy matching upstreams and retain the 
configured balancing policy within that subset.
   - Define fallback explicitly: shared/default pool versus strict no-match 
failure. Specify whether other developer-labelled instances are eligible; do 
not silently cross profiles.
   - Services not overridden by the profile retain ordinary configured routing.
   - Expose a diagnostic reason for profile match, shared fallback and strict 
miss. Keep diagnostics bounded and avoid unbounded per-developer metric labels.
   - Start with documented REST/configuration operations and a runnable 
example. Coordinate an optional Dashboard flow using the same contract.
   
   ## Acceptance criteria
   
   - [ ] A/B/shared user-service instances coexist; requests for A and B reach 
their intended instances.
   - [ ] An unrelated service follows the normal shared routing policy without 
a per-developer duplicate configuration.
   - [ ] Missing, unhealthy, removed and restarted personal instances follow 
the declared fallback/strict policy.
   - [ ] Same URI with different developer identities cannot reuse an 
incompatible path-only match or target result.
   - [ ] Namespace isolation and permitted identity sources/values are enforced.
   - [ ] Discovery label updates become effective without restarting the 
gateway; stale targets are not retained.
   - [ ] Retries/failover and circuit-breaker probes respect the selected 
profile/fallback policy rather than leaking into another profile.
   - [ ] Unlabelled legacy deployments keep existing behavior; the feature is 
opt-in and has a documented rollback path.
   
   Profile lifetime/automatic expiry and a full self-service UI can be 
follow-up work once the routing contract is agreed. This proposal does not 
replace the generic gray-release PR or the backend service registration 
protocol.
   


-- 
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]

Reply via email to