Обмен технологиями

Учебные заметки Grain Mall-22-Распределенные компоненты-SpringCloud-OpenFeign Test Удаленный вызов

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


О центре регистрации мы узнали в предыдущем разделе. Мы знаем, что прежде чем сервер A позвонит серверу B, он получит IP-адрес службы B от центра регистрации, а затем сервер A сделает запрос к службе B.

Так как же сервер А отправляет запрос сервису Б?

Это основной вопрос, который будет рассмотрен в этом разделе.

В этом проекте компонент OpenFeign используется для выполнения вызовов между службами. OpenFeign представляет собой инкапсуляцию HTTP-запросов.

1. Введение в OpenFeign

OpenFeign — декларативный HTTP-клиент, цель которого — упростить удаленные вызовы.

Feign предоставляет шаблон для HTTP-запросов. Написав простой интерфейс и вставив аннотации, вы можете определить параметры, формат, адрес и другую информацию HTTP-запроса.

Feign интегрирует Ribbon (балансировка нагрузки) и Hystrix (взлом сервисов), так что нам больше не нужно явно использовать эти два компонента.

SpringCloudFeign расширяет поддержку аннотаций SpringMVC на основе NetflixFeign. В рамках его реализации нам нужно только создать интерфейс и настроить его с помощью аннотаций, чтобы завершить привязку интерфейса к поставщику услуг. Упрощена разработка самоинкапсулированного клиента сервисного вызова SpringCloudRibbon.

2. Шаги по использованию OpenFeign

1. Описание сцены

Мы используем задачу на основе сценариев, чтобы научиться использовать OpenFeign, предполагая, что会员服务Звонить优惠券服务Интерфейс, который возвращает информацию о купоне участника, которую можно использовать.

Интерфейс этого купона выглядит следующим образом. Это интерфейс для тестирования и не имеет реальной бизнес-логики.
Вставьте сюда описание изображения

	@RequestMapping("member/list")
    public R list(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("慢100减80");

        return R.ok().put("page", Arrays.asList(couponEntity));
    }