Клиент Eureka работает и общается друг с другом даже после того, как я остановил зарегистрированный сервер. Как? - PullRequest
0 голосов
/ 29 августа 2018

Я создал сервер Eureka и зарегистрировал на нем двух клиентов. Клиенты общаются друг с другом гладко.

После этого я остановил сервер Eureka, но оба моих клиента общаются друг с другом без сбоев. Как это возможно? Я использую следующий код в своем первом клиенте для связи со вторым клиентом.

ServiceInstance instance = loadbalancerclient.choose(secondService);
URI uri=URI.create(String.format("http://%s:%s"+"/test",instance.getHost(),instance.getPort()));
ResponseEntity<String> result = restTemplate.getForEntity(uri.toString(),String.class);

Поскольку вместо жесткого кодирования любого URL-адреса я использую зарегистрированное имя второго клиента на сервере Eureka, я не ожидал, что он будет работать, когда сервер не работает. Кто-нибудь может объяснить мне, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Eureka не обрабатывает связь между двумя серверами, только регистрация. Это означает, что служба использует Eureka только для выяснения адреса другой службы. После этого связь осуществляется напрямую между двумя службами, без эврики.

Если Eureka не работает, клиент использует кэшированную копию адреса удаленной службы, что хорошо для устойчивости и временных сбоев сети.

Если немного подумать, почему бы не сработать? Если Eureka не работает, это не означает, что удаленная служба также не работает или ее физический адрес изменился.

0 голосов
/ 29 августа 2018

Из Eureka документация :

Выборка реестра

Клиенты Eureka извлекают информацию о реестре с сервера и кеширует это локально. После этого клиенты используют эту информацию для найти другие услуги. Эта информация периодически обновляется (каждый 30 секунд), получая дельта-обновления между последним циклом выборки и текущий. Дельта-информация хранится дольше (около 3 мин) на сервере, следовательно, дельта-выборки могут возвращать то же самое снова случаи. Клиент Eureka автоматически обрабатывает дубликаты информация.

Получив дельты, клиент Eureka сверяет информацию с сервером путем сравнения количества экземпляров, возвращаемых сервер и если информация по какой-либо причине не совпадает, вся информация реестра извлекается снова. Эврика сервер кеширует сжатая полезная нагрузка дельт, весь реестр, а также за приложение, а также несжатая информация того же. Полезная нагрузка также поддерживает оба формата JSON / XML. Эврика клиент получает информация в сжатом формате JSON с использованием клиента Apache jersey.

...