1. Описание
Основной концепцией шлюза является конфигурация маршрутизации и правила маршрутизации.В качестве точки входа для всего трафика запросов, чтобы обеспечить высокую надежность и высокую доступность в реальной производственной среде, необходимо максимально избегать перезапуска, поэтому очень необходимо для реализации динамической маршрутизации; эта статья в основном знакомитSpring Cloud Gateway
идея реализации, иNacos
Объясните источник данных
PS:оSpring Cloud Zuul
О динамической маршрутизации см. в статье "Как сделать динамическую маршрутизацию Spring Cloud Zuul? Интеграция реализации Nacos проста》
2. Основные моменты реализации
Для реализации динамической маршрутизации нужно лишь обратить внимание на следующие 4 пункта
- Когда шлюз запустится,
动态路由
как загрузить данные -
静态路由
и动态路由
Что бы ни превалировало, ps:静态路由
Относится к конфигурации маршрута, записанной в файле конфигурации. - монитор
动态路由
изменения источника данных - Что происходит при изменении данных
通知gateway
обновить маршрут
В-третьих, конкретная реализация
Spring Cloud Gateway
Информация о маршрутизации, загруженная из Китая, отвечает за следующие классы соответственно.
- PropertiesRouteDefinitionLocator: прочитать информацию о маршрутизации (например, YML, свойства и т. д.) из файла конфигурации.
- RouteDefinitionRepository: чтение информации о маршрутизации из хранилища (например, из памяти, центра конфигурации, Redis, MySQL и т. д.).
- DiscoveryClientRouteDefinitionLocator: чтение информации о маршрутизации из реестра (например, Nacos, Eurka, Zookeeper и т. д.).
Мы можем настроитьRouteDefinitionRepository
Класс реализации для достижения цели динамической маршрутизации
3.1 Реализация загрузки данных для динамической маршрутизации
СоздаватьNacos
изRouteDefinitionRepository
Класс реализации
Класс NacosRouteDefinitionRepositoryМожет просматривать:NacosRouteDefinitionRepository.java
переписать
getRouteDefinitions
Метод реализует чтение маршрутной информации
Настройка прослушивателя NACOS прослушивает настройку маршрутизации
Изменения маршрутизации нужно только перейти к
ApplicationEventPublisher
нажать одинRefreshRoutesEvent
Событие мгновенное, шлюз автоматически прослушивает событие и вызываетgetRouteDefinitions
способ обновления информации о маршрутизации
3.2. Создайте класс конфигурации
Класс DynamicRouteConfigМожет просматривать:DynamicRouteConfig.java
3.3. ДобавитьNacos
конфигурация маршрутизации
Новые элементы конфигурации:
- Идентификатор данных: scg-routes
- Группа: SCG_GATEWAY
- Содержание конфигурации:
[
{
"id": "csdn",
"predicates": [{
"name": "Path",
"args": {
"pattern": "/csdn/**"
}
}],
"uri": "https://www.csdn.net/",
"filters": []
},
{
"id": "github",
"predicates": [{
"name": "Path",
"args": {
"pattern": "/github/**"
}
}],
"uri": "http://github.com/",
"filters": []
}
]
Добавьте два маршрутных данных
4. Тест
Запустите шлюз через/actuator/gateway/routes
Конечные точки просматривают текущую информацию о маршрутизации
можно увидеть
Nacos
Две сведения о маршрутизации, настроенные в
См. полный код Spring Cloud Gateway.
git ee.com/ Эти два дня по 2000/м…
Рекомендуемое чтение
- Трудно устранить проблемы с журналом? Трассировка ссылок распределенного журнала, чтобы помочь вам
- zuul интегрирует новейшие компоненты Sentinel для управления потоком данных
- Как сделать динамическую маршрутизацию Spring Cloud Zuul? Интеграция реализации Nacos проста
- Как разработчики Spring Cloud разрешают конфликты служб и скремблирование экземпляров?
- Как выполнять распределенные транзакции в сценариях синхронизации Spring Cloud? попробуй Сеата
- Как выполнять распределенные транзакции в асинхронных сценариях Spring Cloud? попробуйте RocketMQ
Отсканируйте код, чтобы следовать за сюрпризом!