Лучшие практики Apache APISIX (3): обнаружение сервисов Nacos, изучение сценариев практического применения
Лучшие практики Apache APISIX (3): обнаружение сервисов Nacos, изучение сценариев практического применения

В микросервисной архитектуре для реализации регистрации и обнаружения служб мы обычно вводим компонент центра регистрации. АПИСИКС Он обеспечивает функцию получения экземпляров сервисов из центра регистрации, что позволяет обеспечить эффективное обнаружение сервисов и динамическую балансировку нагрузки, тем самым повышая гибкость и надежность системы. В настоящее время механизмы обнаружения сервисов, поддерживаемые APISIX, включают Consul, Nacos, Eureka, Etcd и т. д.

01. Фон

В микросервисной архитектуре стека технологий Java многие компании выбирают Nacos в качестве центра обнаружения и настройки сервисов, а Spring Cloud Gateway — в качестве шлюза API микросервисов. Однако поскольку требования предприятий к производительности и гибкости шлюза API продолжают расти, все больше и больше предприятий начинают рассматривать Apache APISIX в качестве альтернативы. В этой статье будет показано, как использовать Apache APISIX для замены Spring Cloud Gateway в качестве шлюза API микросервисов в стеке технологий Java.

02. План

APISIX + Nacos может централизовать в каждом микросервисном узле различные элементы управления, не имеющие никакого отношения к бизнесу в APISIX, для унифицированного управления, то есть возможности реализовать прокси и маршрутизацию интерфейсных сервисов через APISIX. После регистрации каждого микросервиса в Nacos APISIX может получить список сервисов с помощью функции обнаружения сервисов Nacos и найти соответствующий адрес сервиса для реализации динамического проксирования.

Цель

Заменить пружину Cloud Gateway, а затем выполните маршрутизацию в APISIX и, наконец, сможете передать /api/<Служитьимя> Доступ к микросервисам, зарегистрированным в Nacos

Подготовительные условия

Kubernetes (APISIX и Nacos созданы в среде k8s)

APISIX

APISIX-Ingress

04. Практическое занятие

1. Измените файл config.yaml конфигурации APISIX и добавьте следующее содержимое в конфигурацию верхнего уровня, которая используется для обнаружения микросервисов, зарегистрированных в Nacos. После внесения изменений необходимо периодически перезапускать модули APISIX.

Язык кода:javascript
копировать
discovery:
  nacos:
    host:
      - "http://nacos.test:8848"  # Служить адрес Накоса
    prefix: "/nacos/v1/"
    fetch_interval: 30   # необязательный, Получить временной интервал списка экземпляров Служить, По умолчанию 30 секунд.
    weight: 100          # необязательный, Значение веса по умолчанию полученного экземпляра Служить, По умолчанию 100

2. Создайте маршрут и восходящий поток. Мы используем API администратора для его реализации. Конечно, его также можно создать прямо на панели управления. Если вам интересно, вы можете войти в панель управления после создания, чтобы увидеть конкретную конфигурацию. Вы также можете настроить его позже через белый экран.

Язык кода:javascript
копировать
curl http://<apisix-admin>:9180/apisix/admin/routes \
  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \
  -X POST -i -d '
{
  "uri": "/api/*", # правила маршрутизации
  "host": "test.example.com",
  "name": "my-test-route",
  "upstream": {
    "service_name": "my-service",# микро Служитьимясказать    "type": "roundrobin",
    "discovery_type": "nacos",
    "discovery_args": {
      "namespace_id": "public"  # Micro Служить существование пространства имен Nacos
    }
  }
}'

После успешного создания содержимое возвращается. Код состояния — 201, статус — Создано, а идентификатор — это идентификатор правила маршрутизации, который является уникальным.

Язык кода:javascript
копировать
HTTP/1.1 201 Created
Date: Sat, 4 May 2024 8:11:25 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Server: APISIX/3.9.1
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: *
Access-Control-Max-Age: 3600
X-API-VERSION: v3
{"key":"/apisix/routes/00000000000000000483","value":{"host":"test.example.com","update_time":1714784004,"upstream":{"type":"roundrobin","service_name":"my-service","scheme":"http","hash_on":"vars","discovery_type":"nacos","pass_host":"pass","discovery_args":{"namespace_id":"public"}},"priority":0,"status":1,"create_time":1714784004,"name":"my-test-route","uri":"/api/*","id":"00000000000000000483"}}

3. Мы можем запросить конкретную информацию о маршрутизации через идентификатор правила маршрутизации.

Язык кода:javascript
копировать
curl http://<apisix-admin>:9180/apisix/admin/routes/00000000000000000483  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

Возврат содержимого:

Язык кода:javascript
копировать
{
    "value": {
        "name": "my-test-route",
        "update_time": 1714784004,
        "upstream": {
            "scheme": "http",
            "service_name": "my-service",
            "type": "roundrobin",
            "hash_on": "vars",
            "discovery_type": "nacos",
            "pass_host": "pass",
            "discovery_args": {
                "namespace_id": "public"
            }
        },
        "host": "test.example.com",
        "id": "00000000000000000483",
        "create_time": 1714784004,
        "status": 1,
        "uri": "/api/*",
        "priority": 0
    },
    "createdIndex": 484,
    "modifiedIndex": 484,
    "key": "/apisix/routes/00000000000000000483"
}

‍4. После настройки мы можем получить доступ к микросервисам, зарегистрированным в Nacos, через APISIX-Ingress.

05. Расширение знаний

Если это служба обратного прокси-сервера k8s, вы можете обратиться к следующему случаю.

Язык кода:javascript
копировать
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: nginx-route
  namespace: gray # Заполните пространство имён вашего микро Служить здесь
spec:
  http:
  - name: nginx-route
    match:
      hosts:
      - "test.example.com" # Введите здесь свое доменное имя
      paths:
      - "/api/*"
    backends:
    - serviceName: nginx-v1 # Введите сюда название вашего микро Служить
      servicePort: 80 # Введите здесь порт Служить вашего микро-Служить.

06. Резюме

Конфигурация маршрутизации APISIX проще и может быть настроена через API администратора или панель управления. Общее ощущение более дружелюбное, чем управление конфигурацией Spring Cloud Gateway. Конечно, на этом общий доступ не является проблемой. Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение для обсуждения, спасибо!

Справочная документация:

https://nacos.io/zh-cn/blog/apisix/

https://apisix.apache.org/zh/docs/apisix/discovery/nacos/

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose