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

OSCHINA-MIRROR/muofeng-pipy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 8.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 16:29 d315c42

Пипи

Пипи — это лёгкий, высокопроизводительный, стабильный программируемый сетевой прокси. Ядро Пипи разработано на C++, а для сетевого ввода-вывода используется библиотека ASIO.

Исполняемый файл Пипи весит около 5 Мбайт, а основанный на Alpine образ — около 10 Мбайт. Для работы требуется около 10 Мбайт оперативной памяти, поэтому Пипи хорошо подходит для sidecar proxy.

В Пипи встроен QuickJS в качестве расширения для скриптов, что позволяет использовать JavaScript для быстрого расширения логики и функций. Механизм «детерминированной сборки мусора» (GC) QuickJS дополнительно обеспечивает надёжность и детерминированность Пипи, избегая неопределённости, которая может возникнуть из-за GC во многих скриптовых языках.

Пипи использует модульную и цепную архитектуру обработки, где сетевые данные обрабатываются последовательно через модули. Эта простая архитектура делает Пипи простым и надёжным на базовом уровне, одновременно предоставляя динамическое управление потоками и баланс между простотой и гибкостью. Используя механизм REUSE_PORT (поддерживаемый новыми версиями Linux и BSD), Пипи может работать в многопроцессном режиме, делая его пригодным не только для режима sidecar, но и для обработки больших объёмов трафика.

Совместимость

При разработке Пипи учитывалась совместимость, и он может поддерживать различные операционные системы и архитектуры процессоров. Тестированные платформы и архитектуры включают:

  • CentOS 7;
  • Alpine;
  • Ubuntu 18/20;
  • FreeBSD 12/13;
  • macOS M1 (не поддерживает REUSE_PORT);
  • macOS x86 (не поддерживает REUSE_PORT).

Для производственной среды рекомендуется использовать CentOS 7 или FreeBSD.

Компиляция и сборка

Чтобы собрать Пипи из исходного кода, необходимо выполнить следующие шаги:

  1. Удостовериться, что установлены Clang 5.0+ и CMake 3.0+.
  2. Запустить команду сборки:
./build.sh

Результатом компиляции будет один исполняемый файл bin/pipy, который можно запустить с помощью команды bin/pipy -h для получения дополнительной информации.

Чтобы создать Docker-образ Пипи, выполните следующую команду:

cd pipy
sudo docker build --squash --rm -t pipy .

Обратите внимание, что параметр --squash можно использовать для создания более компактного образа.

Быстрый старт

Инструкции по установке и использованию Пипи включают:

  • Установка на X86 RPM:
yum -y install http://repo.flomesh.cn/pipy/pipy-latest.el7_pl.x86_64.rpm
  • Просмотр списка модулей и параметров:
$ pipy --list-modules
$ pipy --help-modules
  • Запуск с использованием конфигурационного файла:
$ pipy test/001-echo/pipy.cfg --watch-config-file

На Linux или BSD системах можно запустить несколько экземпляров Пипи для прослушивания одного порта, при этом ядро автоматически распределит нагрузку между процессами. Это значительно увеличивает пропускную способность. Кроме того, структура без общего доступа между процессами позволяет избежать сложности и неопределённости, связанных с многопроцессорной и многопоточной обработкой, обеспечивая высокую производительность при расширении пропускной способности без увеличения сложности.

Пример запуска двух экземпляров Пипи:

$ pipy test/001-echo/pipy.cfg --reuse-port &
$ pipy test/001-echo/pipy.cfg --reuse-port &

Использование Docker

Docker-образ Пипи распознаёт следующие переменные окружения:

  • PIPY_CONFIG_FILE= определяет местоположение конфигурационного файла Пипи.
  • PIPY_SPAWN=n определяет количество одновременно работающих экземпляров Пипи; n — это число экземпляров минус один. Например, чтобы запустить два экземпляра Пипи, установите PIPY_SPAWN равным 1.

Запуск Пипи в Docker:

docker run -it --rm -e PIPY_CONFIG_FILE=/etc/pipy/test/001-echo/pipy.cfg flomesh/pipy:latest
docker run -it --rm -e PIPY_CONFIG_FILE=/etc/pipy/test/011-serve-static/pipy.cfg -e PIPY_SPAWN=1 -p 8000:6000 flomesh/pipy:latest

Если Пипи используется как sidecar-прокси, он поддерживает «прозрачный прокси». Для этого необходимо добавить NET_ADMIN при запуске.

docker run -it --rm -e PIPY_CONFIG_FILE=/etc/pipy/test/001-echo/pipy.cfg --cap-add NET_ADMIN flomesh/pipy:latest

Запуск на k8s

Мы предоставляем CRD и Operator для запуска Пипи на k8s. Если вам нужно запустить Пипи через CRD/Operator, вы можете использовать этот код в качестве примера.

Шаги для запуска на k8s:

  1. Клонировать проект:
git clone https://github.com/flomesh-io/pipy-operator
cd pipy-operator
kubectl apply -f etc/cert-manager-v1.1.0.yaml
kubectl apply -f artifact/pipy-operator.yaml
  1. Применить конфигурацию:
kubectl apply -f config/samples/standalone/001-echo.yaml
kubectl apply -f config/samples/ingress/001-routing.yaml
kubectl apply -f config/samples/sidecar/007-deployment-pipy.yaml

Документация

Документация доступна в каталоге docs:

  • Обзор (overview.md);
  • Конфигурация (configuration.md).

Авторские права и лицензия

Подробные сведения доступны в следующих файлах:

  • Авторские права (COPYRIGHT);
  • Лицензия (LICENCE).

Контакты

По вопросам безопасности, пожалуйста, обращайтесь по электронной почте security@flomesh.io. По юридическим вопросам — legal@flomesh.io, по коммерческим и рыночным вопросам — sales@flomesh.io. Другие вопросы можно задать по адресу pipy@flomesh.io.

Любые другие вопросы можно обсудить, создав issue на GitHub: https://github.com/flomesh-io/pipy/issues.

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

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

1
https://api.gitlife.ru/oschina-mirror/muofeng-pipy.git
git@api.gitlife.ru:oschina-mirror/muofeng-pipy.git
oschina-mirror
muofeng-pipy
muofeng-pipy
main