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
Отсканируйте код, чтобы следовать за сюрпризом!