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

OSCHINA-MIRROR/lb002-yii2-tars

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 8.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 10:03 3410668

Yii2 Tars Driver

中文版

描述

Tars driver for yii2.

Интеграция микросервисной системы управления Tars в Yii2.

Функционал

  • Поддержка упаковки сервисов.
  • Поддержка разработки на Yii2.
  • Поддержка TarsConfig.
  • Поддержка TarsLog.
  • Поддержка регистрации и отключения через шлюз.
  • Поддержка событий начала запроса (tarsRequesting) и окончания запроса (tarsRequested).
  • Поддержка вывода echo.
  • Поддержка протоколов http и tars.

Ограничения

  • Из-за ограничений, связанных с дизайном фреймворка, не поддерживает сопрограммы.

Зависимости среды

  1. Yii2.
  2. Tars-PHP.

Установка

  1. Создайте проект. Создайте структуру каталогов проекта Tars (scripts, src, tars), поместите проект Yii2 в каталог src.

  2. Установите пакет Yii2 Tars.

    • Обновите Composer-зависимости:

      composer require "luoxiaojun1992/yii2-tars:*"

    или добавьте требование в composer.json:

    {
        "require": {
            "luoxiaojun1992/yiii2-tars": "*"
        }
    }

    Инициализируйте Yii2 Tars:

    ./yii tars/publish
  3. Измените файл конфигурации src/config/params.php в поле tars proto, замените appName, serverName и objName.

  4. Если используется протокол http и требуется автоматическая регистрация в шлюзе (в настоящее время поддерживается только Kong), измените файл конфигурации src/config/params.php в поле registries:

    'registries' => [
         [
             'type' => 'kong',
             'url' => 'http://kong:8001/upstreams/tars_mysql8/targets' //заполните в соответствии с фактической ситуацией
         ]
    ]
  5. Конфигурация центра (TarsConfig) и службы журнала (TarsLog).

    При запуске сервиса автоматически извлекается конфигурация. Для ведения журнала можно использовать код, подобный Yii::info('test log');.

    Если необходимо указать минимальный уровень журнала TarsLog, измените файл конфигурации src/config/params.php в поле log_level:

    'log_level' => ['info']

    Для указания частоты записи TarsLog измените файл конфигурации src/config/params.php в поле log_interval:

    'log_interval' => 1000
  6. Если используется протокол http, напишите код в соответствии со способом фреймворка. Нет особых требований к маршрутизации.

  7. Если используется протокол tars, создайте файл описания интерфейса в каталоге tars и измените файл конфигурации src/config/params.php в поле proto, добавив tarsFiles.

    Выполните скрипт компиляции в каталоге scripts для генерации кода интерфейса:

    /bin/bash tars2php.sh

    В каталоге src/tars/impl создайте класс реализации интерфейса и напишите бизнес-логику.

    Измените файл конфигурации src/config/params.php в поле services, заменив пространство имён интерфейса и пространства имён реализации.

  8. Настройте среду разработки Tars-PHP.

    Если используется протокол http, обратитесь к TARS-PHP-HTTP服务端与客户端开发.

    Если используется протокол tars, обратитесь к TARS-PHP-TCP服务端与客户端开发

  9. Упакуйте проект в среде разработки Tars-PHP (выполните ./yii tars/deploy в каталоге src).

  10. Опубликуйте проект на панели управления Tars, обратитесь к TARS-PHP-TCP服务端与客户端开发, протестируйте curl 'http://{ip}:{port}/{api_route}'.

Пример использования

См. https://github.com/luoxiaojun1992/yii2-tars-demo.

Интеграция и развёртывание

Пример конфигурации Jenkins Pipeline (измените в соответствии с реальной ситуацией):

pipeline {
    agent {
        node {
            label 'phpenv'
        }
    }
    parameters { 
        string(defaultValue: 'upload_from_jenkins', name: 'TAG_DESC', description: '发布版本描述' )
        string(defaultValue: 'master', name: 'BRANCH_NAME', description: 'git分支,如:develop,master  默认: master')
    }
    environment {
        def JENKINS_HOME = "/root/jenkins"
        def PROJECT_ROOT = "$JENKINS_HOME/workspace/yii2-tars-demo"
        def APP_NAME = "PHPTest"
        def SERVER_NAME = "Yii2Tars"
    }
    stages {
        stage('代码拉取与编译'){
            steps {
                echo "checkout from git"
                git credentialsId:'2', url: 'https://gitee.com/lb002/yii2-tars-demo', branch: "${env.BRANCH_NAME}"
                script {
                    dir("$PROJECT_ROOT/src") {
                        echo "Composer Install"
                        sh "composer clearcache"
                        sh "composer install -vvv"
                    }
                }
            }
        }
        stage('单元测试') {
            steps {
                script {
                    dir("$PROJECT_ROOT/src") {
                        echo "phpunit 测试"
                        //sh "vendor/bin/phpunit tests/"
                        echo "valgrind 测试"
                    }
                }
            }
        }
        stage('覆盖率测试') {
            steps {
                echo "LCOV 覆盖率测试"
            }
        }
        stage('打包与发布') {
            steps {
                script {
                    dir("$PROJECT_ROOT/src") {
                        echo "打包"
                        sh "./yii tars/deploy"

echo "Публикация" sh "ls *.tar.gz > tmp.log" echo "Загрузка build пакета" def packageDeploy = sh(script: "head -n 1 tmp.log", returnStdout: true).trim() sh "curl -H 'Host:172.18.0.3:3000' -F 'suse=@./${packageDeploy}' -F 'application=${APP_NAME}' -F 'module_name=${SERVER_NAME}' -F 'comment=${env.TAG_DESC}' http://172.18.0.3:3000/pages/server/api/upload_patch_package > curl.log" echo "Публикация build пакета" def packageVer = sh(script: "jq '.data.id' curl.log", returnStdout: true).trim() def postJson = '{"serial":true,"items":[{"server_id":"35","command":"patch_tars","parameters":{"patch_id":' + packageVer + ',"bak_flag":false,"update_text":"${env.TAG_DESC}"}}]}' echo postJson sh "curl -H 'Host:172.18.0.3:3000' -H 'Content-Type:application/json' -X POST --data '${postJson}' http://172.18.0.3:3000/pages/server/api/add_task" }


Jenkins процесс развёртывания

![Jenkins Pipeline](./docs/jenkins-pipeline.png)

### Интеграция PHP фреймворка с TARS
[Как интегрировать TARS в PHP фреймворк](./docs/integration.md)

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

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

1
https://api.gitlife.ru/oschina-mirror/lb002-yii2-tars.git
git@api.gitlife.ru:oschina-mirror/lb002-yii2-tars.git
oschina-mirror
lb002-yii2-tars
lb002-yii2-tars
master