Tars driver for laravel.
Laravel集成微服务治理框架Tars
创建Tars项目目录结构(scripts、src、tars),Lumen项目放在src目录下
更新Composer依赖
composer require "luoxiaojun1992/laravel-tars:*"
或添加 requirement 到 composer.json
{
"require": {
"luoxiaojun1992/laravel-tars": "*"
}
}
添加ServiceProvider,编辑src/bootstrap/app.php
$app->register(\Lxj\Laravel\Tars\ServiceProvider::class);
初始化Laravel Tars
//如果使用http协议,则执行此行命令
php artisan vendor:publish --tag=tars.http
//如果使用tars协议,则执行此行命令
php artisan vendor:publish --tag=tars.tars
'registries' => [
[
'type' => 'kong',
'url' => 'http://kong:8001/upstreams/tars_mysql8/targets', //根据实际情况填写
]
]
'tarsregistry' => 'tars.tarsregistry.QueryObj@tcp -h 172.17.0.3 -p 17890' //根据实际情况填写,TarsConfig配置文件名称固定为'tars'
服务启动时会自动拉取配置,如果需要记录日志,可以使用类似Log::info('test log');
如果需要指定TarsLog记录的最低日志级别,修改配置文件src/config/tars.php
'log_level' => \Monolog\Logger::INFO
'trace' => [
'zipkin_url' => 'http://127.0.0.1:9411/api/v2/spans', //根据实际情况填写
'sample_rate' => 0, //采样频率,百分比小数,根据实际情况替换
],
Trace ID可以通过header声明(x-trace-id),如果为空默认随机生成,同一个Trace ID可以实现调用链追踪
$router->group(\['prefix' => '/Laravel/route'\], function () use ($router) {
$router->get('/test', function () {
\Illuminate\Support\Facades\Log::info('laravel tars test log');
return 'Laravel Tars Test Success';
});
});
在tars目录下编写tars接口描述文件,修改配置文件src/config/tars文件proto字段,新增tarsFiles
在scripts目录执行编译脚本生成接口代码
/bin/bash tars2php.sh
在src/app/Tars/impl目录下创建接口实现类,编写业务逻辑代码
修改src/config/tars.php文件services字段,替换接口和接口实现命名空间
如果使用http协议,请参考TARS-PHP-HTTP服务端与客户端开发
如果使用tars协议,请参考TARS-PHP-TCP服务端与客户端开发
php artisan tars:deploy
)curl 'http://{ip}:{port}/Laravel/route/{api_route}'
请参考 https://github.com/luoxiaojun1992/laravel-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/laravel-tars-demo"
def APP_NAME = "PHPTest"
def SERVER_NAME = "PHPHTTPServer"
}
stages {
stage('代码拉取与编译'){
steps {
echo "checkout from git"
git credentialsId:'2', url: 'https://gitee.com/lb002/laravel-tars-demo', branch: "${env.BRANCH_NAME}"
script {
dir("$PROJECT_ROOT/src") {
echo "Composer Install"
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 "php artisan 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":30,"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"
}
}
}
}
}
post {
success {
emailext (
subject: "[jenkins]构建通知:${env.JOB\_NAME} 分支: ${env.BRANCH_NAME} - Build# ${env.BUILD_NUMBER} 成功 !",
body: '${SCRIPT, template="groovy-html.template"}',
mimeType: 'text/html',
to: "luoxiaojun1992@sina.cn",
)
cleanWs()
}
failure {
emailext (
subject: "[jenkins]构建通知:${env.JOB\_NAME} 分支: ${env.BRANCH_NAME} - Build# ${env.BUILD_NUMBER} 失败 !",
body: '${SCRIPT, template="groovy-html.template"}',
mimeType: 'text/html',
to: "luoxiaojun1992@sina.cn",
)
cleanWs()
}
}
}
Original url: Access
Created at: 2019-02-13 09:57:59
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论