All Products
Search
Document Center

Microservices Engine:High availability for MSE Microservices Registry

Last Updated:May 15, 2026

The high availability features of MSE Microservices Registry help you build more resilient applications. These best practices are categorized by scope: instance high availability, service discovery high availability, and configuration management high availability. This topic uses the Professional Edition of MSE Microservices Registry as an example.

Recommended versions

  • spring-cloud-alibaba: 2.2.6.RELEASE or later.

  • Dubbo: 2.7.12 or later.

  • spring-boot: 2.3.x or earlier. We do not recommend using 2.4.x versions due to compatibility issues.

High availability for Microservices Registry instances

  • High-availability architecture

    No service is 100% available. For high reliability and data security, deploy your instance with at least three nodes. If a node fails, traffic is rerouted to another node within seconds, and the faulty node is automatically removed from the cluster.

    The Professional Edition of Microservices Registry is built on the Nacos 2.0 architecture. This design enhances disaster recovery capabilities and reduces reliance on underlying infrastructure for high availability. For more information, see Instance edition selection.

  • Multi-zone deployment

    Each MSE region contains multiple zones. Applications in different zones within the same region experience low network latency (under 3 ms) while benefiting from fault isolation. A multi-zone instance deploys physical servers across different zones. If a failure occurs in Zone A, traffic is quickly redirected to Zone B. This process is seamless and requires no changes to your application code. Simply configure the node count, and MSE automatically handles the deployment across multiple zones.

    Figure 1. MSE three-node active-active architectureMSE三节点同城双活架构图

    Figure 2. Multi-tiered disaster recovery architecture多级容灾架构

Service discovery high availability

In service discovery, consumers and providers have distinct high availability features: consumers offer Push-through protection, while providers support disaster recovery.

Consumers

A consumer subscribes to a list of provider instances from the registry. When the registry undergoes changes, such as scaling or upgrades, or encounters unexpected events, such as a zone-wide network outage or power failure, subscriptions can fail, impacting consumer availability.

Configure empty list protection on the consumer side to prevent it from receiving an empty instance list during an outage.服务调用方推空保护

  • Without empty list protection: If a consumer receives an empty list, your service is interrupted and reports an error.

  • With empty list protection: If a consumer receives an empty list, the protection mechanism activates, discards the update, and helps maintain service availability.

Configuration

Note

This feature is only supported in nacos-java-client 1.4.1 and later. For compatible Spring Cloud and Dubbo versions, see Recommended versions.

  • Spring Cloud applications

    Add the following property to your configuration:

    spring.cloud.nacos.discovery.namingPushEmptyProtection=true
  • Dubbo applications

    Add the following parameter to the registry.url:

    namingPushEmptyProtection=true

Persistent caching

When empty list protection is enabled, the cache directory may be lost if the application's container restarts. To prevent this, make the cache directory persistent, for example, by mounting a volume.

The cache directory is located at: ${user.home}/nacos/naming/${namespaceId}.

Providers

The disaster recovery feature for providers helps prevent cascading failures in your cluster during traffic surges.

Note

Providers registered using nacos-java-client 2.x versions do not support the provider-side disaster recovery feature.

  • Without disaster recovery

    When a sudden increase in consumer requests pushes providers to high utilization, some may fail:无容灾保护

    1. The registry removes the failed node and redirects all of its traffic to the remaining nodes.

    2. The load on the remaining provider nodes increases, making them more likely to fail as well.

    3. Eventually, all provider nodes may fail, causing a complete service outage.

  • With disaster recovery

    When a sudden increase in consumer requests pushes providers to high utilization, some may fail:开启容灾保护

    1. The registry marks the failed node as unhealthy.

    2. If the percentage of unhealthy nodes exceeds the protection threshold, disaster recovery activates. The registry then returns all registered nodes (both healthy and unhealthy) to consumers.

    3. This strategy prevents a complete service outage by distributing traffic across all registered nodes, even if some are unhealthy.

Enable disaster recovery

  • Supported instance types

    • Persistent instances: Fully supported.

    • Non-persistent instances:

      • nacos-java-client 1.x: By default, unhealthy instances are removed after 30 seconds. A removed instance is not counted toward the protection threshold, preventing the disaster recovery policy from activating.

      • nacos-java-client 2.x: Not supported. Instances are taken offline immediately after the persistent connection is lost, so the disaster recovery policy cannot be triggered.

  • Configure by using the command line

    • Update the threshold for a specific service

      curl -X PUT "${nacos.address}/nacos/v1/ns/service?namespaceId=public&serviceName=my-provider&protectThreshold=0.6"
      • ${nacos.address}: The address of the Microservices Registry.

      • namespaceId: The namespace ID. Default value: public.

      • serviceName: The service name for a Spring Cloud application or the interface name for a Dubbo application.

    • Query the threshold configuration

      curl -X GET "${nacos.address}/nacos/v1/ns/service?namespaceId=public&serviceName=my-provider"
    • Response

      {"namespaceId":"public","groupName":"DEFAULT_GROUP","name":"my-provider","protectThreshold":0.7,"metadata":{},"selector":{"type":"none"},"clusters":[]}

Microservices Governance high availability configuration

Improve application availability further by using Microservices Governance features such as graceful startup and shutdown, outlier instance removal, and service degradation.

Configuration management high availability

The high availability of configuration management relies on two main aspects: the client-side cache and backup directories, and the multi-layered throttling capabilities of the configuration center.

Note

The following high availability capabilities for configuration management are enabled by default in the Professional Edition of Microservices Registry. No action is required.

配置管理

  • Client

    • Cache directory: Each time the client retrieves data from the configuration center, it saves the latest configuration to a local cache directory. If the server becomes unavailable, the client falls back to this local cache.

    • Backup directory: If the server is unavailable, you can manually update files in the local backup directory. The client prioritizes loading from this directory, simulating a server-pushed configuration update.

  • Configuration Center

    In addition to high availability at the infrastructure level, the configuration center service implements multi-dimensional rate limiting to enhance stability. This includes limits on the maximum connections per node and connections per client IP. It also includes rate limiting for configuration publications per second and per minute, and provides fine-grained throttling for individual configurations. These measures help mitigate the risk of server downtime caused by abnormal traffic.