maplesnow / nacos-laravel-client
阿里巴巴nacos配置中心Laravel客户端
Requires
- ext-json: *
- ext-protobuf: *
- google/protobuf: ^3.17
- guzzlehttp/guzzle: ^6.3
- illuminate/console: ^5.7
- illuminate/support: ^5.7
- monolog/monolog: ^1.24|^2.0
Requires (Dev)
- phpunit/phpunit: ^7.5|^8.0
This package is auto-updated.
Last update: 2025-03-27 15:07:05 UTC
README
功能
- 客户端服务注册
- 支持多模式配置和语言包下发
- 服务间负载均衡
- 集成supervisor守护进程
- 配置兜底
composer 安装
-
laravel项目
composer.json
添加composer
安装事件"scripts": { "post-install-cmd":[ "@php artisan vendor:publish --provider=\"MapleSnow\\LaraNacos\\Providers\\ServiceProvider\"" ] }
-
安装composer依赖
composer install alibaba/nacos
如果没有出现
@php artisan vendor:publish --provider="MapleSnow\LaraNacos\Providers\ServiceProvider" Publishing complete.
, 请手动执行php artisan vendor:publish --provider="MapleSnow\LaraNacos\Providers\ServiceProvider"
配置
配置系统环境变量
# 客户端服务端口(默认80) SERVER_PORT=1215 # nacos服务地址 LARAVEL_NACOS_HOST=192.168.37.13 # nacos服务端口 LARAVEL_NACOS_PORT=32664 # nacos分组ID LARAVEL_NACOS_GROUPID=DEFAULT_GROUP LARAVEL_NACOS_DATAID=service-name # nacos租户ID(默认public) LARAVEL_NACOS_TENANT=85dece02-efa2-4817-997e-6ceeb048dd3b
示例说明-配置管理
简单项目
管理项目包含的所有配置
同时管理语言包和配置
可同时管理项目中配置和语言包
-
在nacos上添加配置,配置添加
_config
后缀,语言包添加_lang
后缀 -
运行脚本监听配置
# 监听nacos服务配置变化 php artisan nacos:refresh --type=config # 监听nacos服务语言包变化 php artisan nacos:refresh --type=lang
公共配置管理
如果工程是微服务架构,由多个服务构成,同时共用一些基础系统配置
-
在nacos上添加公共配置或公共语言包。
默认使用
php-common_
作为前缀,可通过系统环境变量LARAVEL_NACOS_PHP_COMMON_PREFIX
自定义前缀 -
去除原nacos中写入公共基础配置(若项目中有和公共配置相同的Key值,项目中优先级更高,既可以重写公共配置项)
-
执行
同时管理语言包和配置
步骤1和步骤2
运行脚本监听配置
# 监听nacos公共配置变化 php artisan nacos:refresh --listen-comnon --type=config # 监听nacos公共语言包变化 php artisan nacos:refresh --listen-common --type=lang
配置兜底
业务服务的配置通过有3种途径,可以尽最大可能保证项目正常启动和运行。
- 第一优先级:从nacos配置中心获取
- 第二优先级:从本地配置快照获取
- 第三优先级:从本地默认配置获取
默认的本地配置文件目录为 nacos/config/${NAMESPACE_ID}/${GROUP_ID}/${DATA_ID}
默认的快照配置文件目录为 nacos/snapshot/${NAMESPACE_ID}/${GROUP_ID}/${DATA_ID}
项目示例-服务注册
服务注册
php artisan nacos:register:instance
服务持续心跳发送
php artisan nacos:beat:instance
其他服务管理命令
# 获取实例详情 php artisan nacos:get:instance # 实例更新 php artisan nacos:update:instance # 实例删除 php artisan nacos:delete:instance
项目示例-服务间负载均衡
通过LARAVEL_NACOS_DATAID
查询nacos上服务节点,按轮询策略获取
# 测试用例
vendor/bin/phpunit vendor/maplesnow/nacos-laravel-client/tests/LoadBalanceTest.php
Supervisor守护配置监听和心跳发送
依赖安装后会在composer.json 同级目录下会生成supervisord/nacos.conf
配置文件, 其中包含三个进程: 配置监听(config-refresh)、语言包监听(lang-refresh)、心跳监听(service-beat)
supervisorctl update
supervisorctl start nacos:*