Несколько дней назад я начал изучать решения по отказоустойчивости в микросервисах. В моей экосистеме есть несколько микросервисов, и теперь они связаны с поиском сервисов Eureka. Я использовал FeignClient для звонков от одного к другому. Когда я услышал и прочитал, что Hystrix находится на обслуживании, я подумал, могу ли я использовать Resilience4J в Feign вместо Hystrix. Ну, по крайней мере, не с уровня аннотаций прямо сейчас, как кажется. Я нашел отличный адаптер Feign.Builder для добавления функций отказоустойчивости resilience4j над FeignClient в качестве декоратора (https://github.com/resilience4j/resilience4j/tree/master/resilience4j-feign), поэтому я хотел его использовать.
Итак, я использовал это, сложил вместе функции и добавил элементы кодировщика, декодера и т. Д. По умолчанию в конструктор симуляций. Оказывается, я должен закончить свой код с помощью вызова .target, который создает мой клиентский прокси, и я не мог сделать это с помощью Eureka в хорошем смысле:
Первый конструктор, который принимает тип класса и URL-адрес, жестко запрограммирован, поэтому, если я добавлю запрос следующего сервера eureka в этот параметр, это будет просто жестко запрограммированный URL-адрес для одного из экземпляров, это не будет сбалансировано по нагрузке. Какое-то обходное решение может заключаться в том, что я создаю прототип или аналогичные краткосрочные bean-компоненты этого клиента и всегда получаю «следующий URL» для вызова. Это увеличивает нагрузку на использование клиентов в каждом классе, который я делаю. По крайней мере, так, как я это видел. Возможно, я мог бы добавить какой-то синглтон-компонент-помощник вокруг прототипирования, но, опять же, это не лучший дизайн, как я вижу.
Я подумал, может быть, я смогу создать EurekaTarget из интерфейса Target, но, конечно, ни один из методов не указывает на «конец жизненного цикла», даже метод apply. Я подумал, что, возможно, это одна из точек, которая вызывается перед вызовом службы, но я видел несколько обращений к ней, поэтому мне пришлось изменить URL-адрес для всех вызовов.
Вы знаете лучшее решение для этой миграции?