php微服務的資料一直比java少,不過java微服務的一些組件php也是能夠複用的,就拿配置中心這個組件舉例,來看看在php裏如何使用😀php
配置中心做爲微服務不可缺乏的關鍵組建,下面就在laravel中集成配置中心nacosjava
nacos是由阿里巴巴開發的微服務配置中心,參考:nacosmysql
下面用到了由做者寫的php的nacos客戶端php-nacos: github.com/neatlife/ph… 歡迎star,歡迎pr(求star, 求star, 求star)linux
可使用docker啓動laravel
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up
複製代碼
而後打開 本機ip:8848端口查看效果,nacos默認的登陸用戶名密碼都是 nacos git
而後點擊+號,新建配置,把laravel的.env文件內容複製進去,dataid通常是應用的名稱,通常能夠填應用名稱,獲取配置的時候會用到這個參數 github
先刪掉項目裏的.env文件,後面從配置中心獲取配置,刪掉後查看效果 sql
可使用composer一鍵下載:docker
composer require alibaba/nacos
複製代碼
編輯 /etc/environment 文件,核心內容以下shell
LARAVEL_NACOS_HOST=你的nacos配置中心地址和端口,好比http://127.0.0.1:8848
LARAVEL_ENV=app運行的環境,好比: dev, local等
LARAVEL_NACOS_DATAID=配置的dataid
LARAVEL_NACOS_GROUPID=配置的groupid
複製代碼
修改文件:/usr/lib/systemd/system/php-fpm.service 在[Service]節下添加:EnvironmentFile=/etc/environment
修改php-fpm配置文件,好比:/usr/local/php/etc/php-fpm.conf 在[www]節下添加:clear_env = no
而後從新加載php-fpm服務,命令以下:
systemctl daemon-reload
systemctl stop php-fpm
systemctl start php-fpm
複製代碼
在laravel項目裏把.env文件刪掉,而後修改bootstrap/app.php文件,在文件開頭添加獲取nacos配置中心配置文件的代碼,核心代碼以下
\alibaba\nacos\NacosConfig::setSnapshotPath(dirname(__DIR__) . "/nacos/config");
(new \Dotenv\Loader([], new \Dotenv\Environment\DotenvFactory(), true))->loadDirect(
\alibaba\nacos\failover\LocalConfigInfoProcessor::getSnapshot(
getenv("LARAVEL_ENV"),
getenv("LARAVEL_NACOS_DATAID"),
getenv("LARAVEL_NACOS_GROUPID"),
getenv("LARAVEL_NACOS_NAMESPACEID") ? : "",
)
);
複製代碼
完整代碼參考app.php
在laravel裏建立一個命令: artisan make:command NacosRefreshConfig 而後編輯剛剛建立的文件,在命令執行體裏獲取配置文件,核心代碼以下:
// load nacos config file
(new \Dotenv\Loader([], new \Dotenv\Environment\DotenvFactory(), true))->loadDirect(
\alibaba\nacos\Nacos::init(
getenv("LARAVEL_NACOS_HOST"),
getenv("LARAVEL_ENV"),
getenv("LARAVEL_NACOS_DATAID"),
getenv("LARAVEL_NACOS_GROUPID"),
getenv("LARAVEL_NACOS_NAMESPACEID") ? : "",
)->runOnce()
);
複製代碼
完整代碼參考NacosRefreshConfig.php
建立一個linux的cron執行上面的命令,好比每分鐘的第一秒獲取配置文件 1 */1 * * * php path/to/artisan nacos:refresh
爲了能夠立刻看到效果,能夠手動執行下這個命令
php artisan nacos:refresh
複製代碼
這個定時任務執行後,項目須要的配置文件就被拉取到 nacos目錄了,打開瀏覽器查看效果
能夠看到項目已經成功獲取到配置文件並開始正常運行了
微服務除了配置中心,另外很是重要的還有熔斷降級和鏈路追蹤
熔斷降級可使用istio來作,參考istio的熔斷
鏈路追蹤可使用SkyWalking或者pinpoint來作,固然也可使用istio也提供的鏈路追蹤功能,參考:分佈式追蹤
可使用nacos和mysql集成的docker保存配置,參考:standalone-mysql.yaml
能夠將laravel應用打成docker鏡像在kubernetes上運行,搭建kubernetes集羣能夠參考做者寫的另外一篇博客:安裝k8s集羣
完整案例代碼已上傳github:github.com/neatlife/la…
若是對微服務開發感興趣,可加做者微信探討,也可在github提pr,issue等