# nepxion/discovery

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nepxion-discovery).**

5,758 stars · 1,417 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/Nepxion/Discovery
- Homepage: http://www.nepxion.com
- awesome-repositories: https://awesome-repositories.com/repository/nepxion-discovery.md

## Topics

`apollo` `blue-green-deployment` `cloud-native` `consul` `etcd` `eureka` `gray-release` `hystrix` `jaeger` `nacos` `opentelemetry` `opentracing` `redis` `sentinel` `skywalking` `spring-cloud` `spring-cloud-alibaba` `spring-cloud-gateway` `zookeeper` `zuul`

## Description

Discovery is a traffic orchestration library for Spring Cloud microservices that manages blue-green and canary releases through metadata-based routing, circuit breaking, and environment isolation. It provides a centralized framework for distributing routing rules and governance policies dynamically via a remote configuration center, enabling runtime updates without service restarts.

The project distinguishes itself through multi-dimensional traffic control, routing requests based on metadata tags attached to service instances for fine-grained traffic management without code changes. It supports environment and group isolation to enforce deployment boundaries, multi-dimensional failover strategies across environments, regions, zones, versions, or IPs, and plugin-based circuit breaker integration that activates based on service metadata conditions. Traffic dyeing and trace injection capabilities inject release and circuit-breaking metadata into distributed traces for correlation with observability systems.

Additional capabilities include dynamic gateway route management through an API, database and message queue traffic routing for blue-green deployments, graceful service shutdown to prevent traffic loss, and release strategy modeling for automated testing. The library also provides instance blacklisting, service registration limits, and rate limiting based on metadata, along with distributed tracing integration with Jaeger, SkyWalking, or Zipkin and metrics exposure for Prometheus and Spring Boot Admin.

Documentation covers installation, configuration, and usage patterns for integrating the library into Spring Cloud applications.

## Tags

### Networking & Communication

- [Spring Cloud Microservice Orchestrations](https://awesome-repositories.com/f/networking-communication/dynamic-service-discovery/spring-cloud-service-registries/spring-cloud-microservice-orchestrations.md) — A library for managing blue-green and canary releases, routing, circuit breaking, and traffic isolation in Spring Cloud microservices.
- [Spring Cloud Traffic Routing](https://awesome-repositories.com/f/networking-communication/dynamic-service-discovery/spring-cloud-service-registries/spring-cloud-microservice-orchestrations/spring-cloud-traffic-routing.md) — Routes requests between microservice instances based on version, region, header, or metadata tags.
- [Metadata-Driven Routing](https://awesome-repositories.com/f/networking-communication/metadata-driven-routing.md) — Routes requests based on metadata tags attached to service instances for fine-grained traffic control.
- [Metadata-Based](https://awesome-repositories.com/f/networking-communication/traffic-routers/metadata-based.md) — Routes requests between service instances based on version, region, header, or metadata tags for fine-grained traffic control.
- [Canary Allocation Routing](https://awesome-repositories.com/f/networking-communication/traffic-routing/canary-allocation-routing.md) — Distributes a percentage of traffic to a canary version and the rest to the stable version. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Weighted Traffic Splitting](https://awesome-repositories.com/f/networking-communication/traffic-shaping/scaling/traffic-distribution/weighted-traffic-splitting.md) — Distributes incoming requests across multiple service versions according to configurable weight percentages. ([source](https://nepxion.github.io/Discovery/docs/discovery-doc/))
- [Header-Based Routing](https://awesome-repositories.com/f/networking-communication/request-header-configuration/header-filters/header-based-routing.md) — Directs requests to different service versions based on HTTP header values for granular traffic control. ([source](https://nepxion.github.io/Discovery/docs/discovery-doc/))
- [Conditional Routing](https://awesome-repositories.com/f/networking-communication/traffic-routing/conditional-routing.md) — Drives traffic routing decisions using headers, parameters, cookies, or domain names. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Dynamic Route Management](https://awesome-repositories.com/f/networking-communication/traffic-routing/node-aware-routing/gateway-routing/dynamic-route-management.md) — Provides an API for live gateway route reconfiguration without restarting services.
- [Zone-Aware Routing](https://awesome-repositories.com/f/networking-communication/traffic-routing/zone-aware-routing.md) — Routes requests to services in the same availability zone to reduce latency and improve resilience. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Zone-Based Traffic Isolations](https://awesome-repositories.com/f/networking-communication/traffic-routing/zone-aware-routing/zone-based-traffic-isolations.md) — Restricts service calls to instances in the same availability zone for affinity-based routing. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))

### DevOps & Infrastructure

- [Spring Cloud Canary Controllers](https://awesome-repositories.com/f/devops-infrastructure/deployment-updates/canary-deployment-controllers/spring-cloud-canary-controllers.md) — Routes a percentage of traffic to new service versions for gradual rollout testing in Spring Cloud applications.
- [Traffic Tagging](https://awesome-repositories.com/f/devops-infrastructure/traffic-tagging.md) — Tags service instances with metadata for traffic routing and release management. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Zero-Downtime Deployments](https://awesome-repositories.com/f/devops-infrastructure/zero-downtime-deployments.md) — Switches traffic between two identical environments to enable zero-downtime releases and quick rollbacks. ([source](https://nepxion.github.io/Discovery/docs/discovery-doc/))
- [Graceful Shutdowns](https://awesome-repositories.com/f/devops-infrastructure/graceful-shutdowns.md) — Removes a service instance from the load balancer before stopping it to ensure no traffic loss. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Availability Zone Awareness](https://awesome-repositories.com/f/devops-infrastructure/high-availability-request-routing/availability-zone-awareness.md) — Redirects requests to a service in another availability zone when the preferred zone is unavailable. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Metadata-Based](https://awesome-repositories.com/f/devops-infrastructure/rate-limiting/circuit-breaking/metadata-based.md) — Applies rate limits and circuit breakers based on service metadata such as group, version, or region.
- [Regional Routing](https://awesome-repositories.com/f/devops-infrastructure/regional-routing.md) — Routes requests to services in a specific region for multi-datacenter or multi-active deployments. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Regional Failover](https://awesome-repositories.com/f/devops-infrastructure/regional-routing/regional-failover.md) — Redirects requests to a service in another region when the preferred region is unavailable. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Service Instance Failover](https://awesome-repositories.com/f/devops-infrastructure/regional-routing/regional-failover/service-instance-failover.md) — Redirects requests to alternative instances or environments when the preferred target is unavailable.
- [Version-Based Failovers](https://awesome-repositories.com/f/devops-infrastructure/version-upgrades/dependency-versioning/version-based-filtering/version-based-failovers.md) — Redirects requests to another service version when the preferred version is unavailable. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))

### Security & Cryptography

- [Environment Isolation](https://awesome-repositories.com/f/security-cryptography/environment-isolation.md) — Restricts service calls to instances within the same environment or logical group to enforce deployment boundaries.
- [Group-Based Service Isolations](https://awesome-repositories.com/f/security-cryptography/account-management/traffic-isolation/group-based-service-isolations.md) — Restricts service calls to instances within the same logical group to enforce environment isolation. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Service Environment Isolations](https://awesome-repositories.com/f/security-cryptography/account-management/traffic-isolation/service-environment-isolations.md) — Restricts service calls to instances in the same environment, such as testing or production. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))

### Software Engineering & Architecture

- [Rule Distribution Endpoints](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/automation-and-templating-frameworks/rule-package-distributions/rule-distribution-endpoints.md) — Distributes routing and governance rules dynamically through a remote configuration center for runtime updates.
- [Entity Routing Versioning](https://awesome-repositories.com/f/software-engineering-architecture/configuration-versioning/entity-routing-versioning.md) — Controls which version of a microservice receives a request based on configurable rules and metadata. ([source](https://nepxion.github.io/Discovery/docs/discovery-doc/))
- [Instance Metadata Tagging](https://awesome-repositories.com/f/software-engineering-architecture/cross-application-orchestration/application-instance-routing/instance-metadata-tagging.md) — Tags instances with metadata from Git, startup parameters, or configuration files for routing decisions.
- [Rate Limiting and Circuit Breaking](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/circuit-breaking-states/rate-limiting-and-circuit-breaking.md) — Applies rate limiting and circuit breaking based on service metadata like group, version, or region. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Metadata-Based](https://awesome-repositories.com/f/software-engineering-architecture/circuit-breakers/metadata-based.md) — Applies rate limiting and circuit breaking based on service group, version, region, or other metadata tags.
- [Plugin-Based](https://awesome-repositories.com/f/software-engineering-architecture/circuit-breakers/plugin-based.md) — Integrates circuit breaker and rate limiting logic as pluggable modules activated by service metadata.
- [Multi-Dimensional](https://awesome-repositories.com/f/software-engineering-architecture/failover-strategies/multi-dimensional.md) — Implements configurable failover across multiple dimensions like environment, region, zone, version, and IP.
- [Remote Routing Rule Subscriptions](https://awesome-repositories.com/f/software-engineering-architecture/rule-configuration-engines/remote-rule-loaders/remote-routing-rule-subscriptions.md) — Subscribes to and applies routing rules from a remote configuration center in real time. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [SpEL Expression Parsers](https://awesome-repositories.com/f/software-engineering-architecture/stacks/expression-parsing/spel-expression-parsers.md) — Uses Spring Expression Language to define dynamic conditions for traffic routing. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))

### Data & Databases

- [Database and Queue](https://awesome-repositories.com/f/data-databases/read-replicas/traffic-routing/database-and-queue.md) — Routes database and message queue traffic to different instances for blue-green releases. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))

### Programming Languages & Runtimes

- [Service Environment Isolators](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/language-runtimes/ruby-environments/environment-isolation/service-environment-isolators.md) — Restricts service calls to instances in the same environment, group, or zone for affinity-based routing.

### System Administration & Monitoring

- [Distributed Tracing](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/distributed-tracing-execution-analysis/distributed-tracing.md) — Injects release and circuit-breaker metadata into traces for monitoring with Jaeger, SkyWalking, or Zipkin. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Traffic Dyeing and Trace Injection](https://awesome-repositories.com/f/system-administration-monitoring/observability-tracing/trace-context-injection/traffic-dyeing-and-trace-injection.md) — Injects release and circuit-breaking metadata into distributed traces for observability correlation.

### Web Development

- [Dynamic Routing](https://awesome-repositories.com/f/web-development/dynamic-routing.md) — Adds, modifies, deletes, and queries gateway routes at runtime without restarting the server. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
- [Spring Cloud Gateway Route Managers](https://awesome-repositories.com/f/web-development/dynamic-routing/spring-cloud-gateway-route-managers.md) — Adds, modifies, and queries dynamic routes in the gateway without restarting the service for Spring Cloud.
- [Service Environment Failovers](https://awesome-repositories.com/f/web-development/url-routing/redirection-rules/geographic-redirection/url-redirections/environment/service-environment-failovers.md) — Redirects requests to a service in another environment when the preferred environment is unavailable. ([source](https://cdn.jsdelivr.net/gh/nepxion/discovery@6.x.x/README.md))
