Поделиться через


Настройка параметров компонента Eureka Server for Spring в приложениях контейнеров Azure (предварительная версия)

Eureka Server for Spring — это механизм централизованного обнаружения служб для микрослужб. Используйте следующее руководство, чтобы узнать, как настроить компонент Eureka Server для Spring и управлять ими.

Показать

Сведения о отдельном компоненте можно просмотреть по имени с помощью show команды.

Перед выполнением следующей команды замените заполнители, окруженные значениями <> .

az containerapp env java-component eureka-server-for-spring show \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <JAVA_COMPONENT_NAME>

List

Вы можете перечислить все зарегистрированные компоненты Java с помощью list команды.

Перед выполнением следующей команды замените заполнители, окруженные значениями <> .

az containerapp env java-component list \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Unbind

Чтобы удалить привязку из приложения-контейнера, используйте --unbind этот параметр.

Перед выполнением следующей команды замените заполнители, окруженные значениями <> .

az containerapp update \
  --name <APP_NAME> \
  --unbind <JAVA_COMPONENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Список разрешенных конфигураций для сервера Eureka для Spring

Следующие сведения о поддерживаемых конфигурациях списка. Дополнительные сведения см. в Spring Cloud Eureka Server.

Примечание.

Отправьте запросы в службу поддержки для новых запросов функций.

Варианты конфигурации

Команда az containerapp update использует --configuration параметр для управления настройкой сервера Eureka для Spring. Вы можете одновременно использовать несколько параметров, если они разделены пробелом. Дополнительные сведения см. в документации spring Cloud Eureka Server .

Следующие параметры конфигурации доступны в свойстве eureka.server конфигурации.

Имя Описание: Default value
eureka.server.enable-self-preservation Если этот параметр включен, сервер отслеживает количество обновлений, которые он должен получать от сервера. В любое время число обновлений снижается ниже порогового процента, определенного eureka.server.renewal-percent-threshold. Значение по умолчанию задано true на исходном сервере Eureka, но в компоненте Java для сервера Eureka значение по умолчанию имеет falseзначение. См . ограничения компонента Eureka Server для Spring Java false
eureka.server.renewal-percent-threshold Минимальный процент обновлений, ожидаемых от клиентов в период, указанный eureka.server.update-threshold-update-update-interval-ms. Если продление опускается ниже порогового значения, срок действия отключается, если включена самосохранение eureka.server.enable-self-preservation. 0,85
eureka.server.renewal-threshold-update-interval-ms Интервал, с которым необходимо обновить пороговое значение, указанное в eureka.server.renewal-percent-threshold. 0
eureka.server.expected-client-renewal-interval-seconds Интервал, с которыми клиенты должны отправлять пульс. Значение по умолчанию — 30 секунд. Если клиенты отправляют пульс с другой частотой, скажем, каждые 15 секунд, этот параметр должен быть настроен соответствующим образом, в противном случае самосохранение не будет работать должным образом. 30
eureka.server.response-cache-auto-expiration-in-seconds Возвращает время, для которого полезные данные реестра должны храниться в кэше, если оно не является недействительным при событиях изменения. 180
eureka.server.response-cache-update-interval-ms Возвращает интервал времени, с помощью которого необходимо обновить кэш полезных данных клиента. 0
eureka.server.use-read-only-response-cache Com.netflix.eureka.registry.ResponseCache в настоящее время использует стратегию кэширования двух уровней для ответов. Кэш readWrite с политикой истечения срока действия и кэш чтения, который кэширует без истечения срока действия. true
eureka.server.disable-delta Проверяет, может ли разностная информация обслуживаться клиенту или нет. false
eureka.server.retention-time-in-m-s-in-delta-queue Получите время, для которого необходимо кэшировать разностные сведения для клиентов, чтобы получить значение, не пропуская его. 0
eureka.server.delta-retention-timer-interval-in-ms Получите интервал времени, с помощью которого задача очистки должна проснуться и проверка для сведений о разностных значениях с истекшим сроком действия. 0
eureka.server.eviction-interval-timer-in-ms Получите интервал времени, с которым срок действия задачи, срок действия которой истекает, должен проснуться и запуститься. 60 000
eureka.server.sync-when-timestamp-differs Проверяет, следует ли синхронизировать экземпляры, если метка времени отличается. true
eureka.server.rate-limiter-enabled Указывает, следует ли включить или отключить ограничение скорости. false
eureka.server.rate-limiter-burst-size Ограничение скорости, свойство алгоритма контейнера маркеров. 10
eureka.server.rate-limiter-registry-fetch-average-rate Ограничение скорости, свойство алгоритма контейнера маркеров. Указывает среднюю частоту принудительного запроса. 500
eureka.server.rate-limiter-privileged-clients Список сертифицированных клиентов. Это в дополнение к стандартным клиентам Java eureka. Н/П
eureka.server.rate-limiter-throttle-standard-clients Укажите, является ли ограничение скорости стандартными клиентами. Если задано значение false, то только клиенты, не являющиеся стандартными, будут ограничены. false
eureka.server.rate-limiter-full-fetch-average-rate Ограничение скорости, свойство алгоритма контейнера маркеров. Указывает среднюю частоту принудительного запроса. 100

Распространенные способы конфигурирования

  • Конфигурации, связанные с ведением журнала
    • logging.level.*
    • logging.group.*
    • Любые другие конфигурации в пространстве имен log.* должны быть запрещены, например написание файлов журналов с помощью logging.file запрета.

Вызов между приложениями

В этом примере показано, как писать код Java для вызова между приложениями, зарегистрированными в компоненте Eureka Server для Spring. Когда приложения-контейнеры привязаны к Eureka, они взаимодействуют друг с другом через сервер Eureka.

В этом примере создаются два приложения, вызывающий объект и вызывающий объект. Оба приложения взаимодействуют друг с другом с помощью компонента Eureka Server для Spring. Вызываемое приложение предоставляет конечную точку, вызываемую вызывающим приложением.

  1. Создайте вызываемое приложение. Включите клиент Eureka в приложении Spring Boot, добавив заметку @EnableDiscoveryClient в основной класс.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. Создайте конечную точку в вызываемом приложении вызываемого объекта.

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. Задайте имя вызываемого приложения в файле конфигурации приложения. Например, application.yml.

    spring.application.name=callee
    
  4. Создайте вызывающее приложение.

    Добавьте заметку @EnableDiscoveryClient , чтобы включить функциональность клиента Eureka. Кроме того, создайте WebClient.Builder боб с @LoadBalanced заметкой для выполнения вызовов с балансировкой нагрузки для других служб.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CallerApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CallerApplication.class, args);
    	}
    
    	@Bean
    	@LoadBalanced
    	public WebClient.Builder loadBalancedWebClientBuilder() {
    		return WebClient.builder();
    	}
    }
    
  5. Создайте контроллер в вызывающем приложении, которое использует WebClient.Builder для вызова вызываемого приложения с помощью его имени приложения, вызываемого абонента.

    @RestController
    public class CallerController { 
        @Autowired
        private WebClient.Builder webClientBuilder;
    
        @GetMapping("/call-callee")
        public Mono<String> callCallee() {
            return webClientBuilder.build()
                .get()
                .uri("http://callee/call")
                .retrieve()
                .bodyToMono(String.class);
        }
    }
    

Теперь у вас есть вызывающее и вызываемое приложение, которое взаимодействует друг с другом с помощью компонентов Eureka Server для Spring Java. Убедитесь, что оба приложения запущены и привязаны к серверу Eureka перед тестированием /call-callee конечной точки в вызывающем приложении.

Ограничения

  • Компонент Java для eureka Server поставляется с конфигурацией по умолчанию, eureka.server.enable-self-preservationдля параметра "Задано значение false". Эта конфигурация по умолчанию помогает избежать времени, когда экземпляры не удаляются после включения самосохранения. Если экземпляры удаляются слишком рано, некоторые запросы могут быть направлены на несуществующие экземпляры. Если вы хотите изменить этот параметр true, его можно перезаписать, задав собственные конфигурации в компоненте Java.

  • Сервер Eureka имеет только одну реплика и не поддерживает масштабирование, что делает одноранговую функцию сервера Eureka недоступной.

  • Панель мониторинга Eureka недоступна.

Следующие шаги