1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fagongzi-gateway

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
tutorial.md 8.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 10:28 9c7636b

Учебник

Если вы ранее мало работали с HTTP шлюзом и хотите развернуть его в своей компании или просто поиграться с ним, то поздравляем вас, вы пришли в правильное место! Этот учебник очень удобен для пользователя. Он направлен на помощь новичкам получить практический опыт без необходимости долгого поиска, вопросов и недоумений. Это было протестировано на среде MacOS. Если вы столкнетесь с какой-либо проблемой во время прохождения этого учебника, не стесняйтесь создать задачу или отправить мне электронное письмо на этот адрес brucewangno1@qq.com с темой "Проблемы с учебником шлюза".

Настройка ETCD

ETCD — это распределённое хранилище ключей-значений, необходимое для хранения конфигураций шлюза. Вам потребуется работающий сервер ETCD или кластер таких серверов. Следуйте указаниям на этой странице.

Настройка шлюза

Клонирование этого проекта

Под директорией $GOPATH/src/github.com/fagongzi, выполните команду

git clone https://github.com/fagongzi/gateway.git
```### Сборка этого проекта
Убедитесь, что ваша версия Go составляет **1.10** или выше. В противном случае произойдет ошибка.
В корневой директории этого проекта находится файл **Makefile**, который отвечает за генерацию исполняемых файлов и статического веб-интерфейса. В подкорневой директории этого проекта выполните команду  
```shell
make

для создания исполняемых файлов apiserver и proxy, находящихся в директории dist; выполните команду

make ui

для создания директории UI в dist, которая является веб-интерфейсом, требуемым для apiserver.## Размещение службы шлюза онлайн

Запуск исполняемых файлов

Теперь у вас есть запущенный ETCD или кластер ETCD контейнеров Docker. Под директорией dist, выполните следующие две команды в двух разных вкладках терминала (рекомендовано использование iTerm):

sudo ./proxy --addr=127.0.0.1:80 --addr-rpc=127.0.0.1:9091 --addr-store=etcd://127.0.0.1:2379 --namespace=test
./apiserver --addr=127.0.0.1:9091 --addr-store=etcd://127.0.0.1:2379 --discovery --namespace=test -ui=ui/dist

для запуска proxy и apiserver.

Подделка сервиса-backend

Запуск трех серверов

В директории cmd/backend находится файл backend.go. Это поддельный сервис-backend, который предоставляет множество простых API, таких как возврат имени хоста, IP-адреса и порта сервера. Откройте три вкладки терминала и выполните следующие команды в каждой из этих трёх вкладках соответственно.

go run backend.go --addr=localhost:9000
go run backend.go --addr=localhost:9001
go run backend.go --addr=localhost:9002

Теперь у вас есть три сервера, предоставляющих одинаковый сервис и позднее сформирующие кластер за счёт конфигураций в веб-интерфейсе.

Конфигурация шлюза

Существует два способа конфигурирования шлюза, который отвечает за такие вещи как переадресация трафика. Первый — через веб-интерфейс, второй — через GRPC.### Через веб-интерфейс Веб-интерфейс доступен по адресу http://localhost:9093/ui/index.html#/home. Пожалуйста, не пытайтесь получить доступ к http://localhost:9093. Вместо того чтобы открыть веб-интерфейс, вы получите

{"message":"Not Found"}

Новичковская ошибка. В будущем эта проблема может быть решена.#### Главная страница веб-интерфейса:

  1. Нажмите на "Кластер" в боковой панели и добавьте кластер. Давайте назовём его "Информация о серверах кластера". На данный момент единственным алгоритмом балансировки нагрузки, который можно выбрать, является "Округление до ближайшего".
  2. Нажмите на "Сервер" в боковой панели и добавьте три сервера, которые вы запустили. QPS означает количество запросов в секунду. Для нашего учебника достаточно 1000. /check используется механизмом проверки состояния.
  3. Нажмите на "API" в боковой панели и добавьте API.
    Стратегия повторной отправки заключается в том, чтобы после провала последней попытки отправить запрос кластеру заново через 10 миллисекунд.

Конфигурация завершена.

Postman

Скачивание Postman

Щелкните по ссылке, чтобы открыть страницу загрузки.

Создание HTTP GET запроса

Не забудьте добавить поле Host в разделе Headers. В противном случае это не будет работать.

Щелкните по кнопке "Отправить"

И вот вам результат:

Johns-MacBook-Pro.local
localhost:9002

Обратите внимание, что почти каждый раз при нажатии на Отправить адрес сервера меняется. Это происходит благодаря стратегии балансировки нагрузки "Округление до ближайшего".## Бонусный раунд

Стратегия маршрутизации

  1. Создайте еще три сервера с ip:port: "localhost:9003", "localhost:9004", "localhost:9005".
  2. Создайте кластер под названием "Информация о серверах кластера резервного варианта".
  3. Нажмите на "Маршрутизация" в боковой панели и добавьте маршрут. Наша Split стратегия маршрутизации перенаправляет 60% всех входящих API-запросов, предназначенных для кластера Информация о серверах кластера, на наш заранее указанный кластер Информация о серверах кластера резервного варианта. Если вы достаточно часто щелкнете по кнопке "Отправить", то заметите, что примерно 60% всех ваших HTTP GET-запросов направляются ко второму кластеру.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fagongzi-gateway.git
git@api.gitlife.ru:oschina-mirror/fagongzi-gateway.git
oschina-mirror
fagongzi-gateway
fagongzi-gateway
master