内容简介:php微服务的资料一直比java少,不过java微服务的一些组件php也是可以复用的,就拿配置中心这个组件举例,来看看在php里如何使用:grinning:配置中心作为微服务不可缺少的关键组建,下面就在laravel中集成配置中心nacosnacos是由阿里巴巴开发的微服务配置中心,参考:
php微服务的资料一直比 java 少,不过java微服务的一些组件 php 也是可以复用的,就拿配置中心这个组件举例,来看看在php里如何使用:grinning:
配置中心作为微服务不可缺少的关键组建,下面就在 laravel 中集成配置中心nacos
nacos是由阿里巴巴开发的微服务配置中心,参考: nacos
下面用到了由作者写的php的nacos客户端php-nacos: github.com/neatlife/ph… 欢迎star,欢迎pr(求star, 求star, 求star)
启动nacos配置中心
可以使用 docker 启动
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
然后点击+号,新建配置,把laravel的.env文件内容复制进去,dataid一般是应用的名称,一般可以填应用名称,获取配置的时候会用到这个参数
先删掉项目里的.env文件,后面从配置中心获取配置,删掉后查看效果
项目报500了,这个是预期内的效果
下载php-nacos客户端
可以使用composer一键下载:
composer require alibaba/nacos 复制代码
将nacos配置中心的配置写入环境变量
编辑 /etc/environment 文件,核心内容如下
LARAVEL_NACOS_HOST=你的nacos配置中心地址和端口,比如http://127.0.0.1:8848 LARAVEL_ENV=app运行的环境,比如: dev, local等 LARAVEL_NACOS_DATAID=配置的dataid LARAVEL_NACOS_GROUPID=配置的groupid 复制代码
将环境变量传递给php-fpm
修改文件:/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 复制代码
使用nacos配置中心的配置替代laravel的.env文件
在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等
以上所述就是小编给大家介绍的《php微服务,在laravel中集成nacos配置中心》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
互联网+秋叶课堂:我的网课创业
秋叶 / 北京:机械工业出版社 / 2016-3-1 / 39.0
在线教育被很多人视为 “互联网+”创业热潮中的下一个风口,越来越多的老师和创业者选择在线教育创业。本书作者秋叶老师2013年双11正式带一帮小伙伴开始在线教育创业,在短短两年内“从0到1”,累计做到了超500万元的销售业绩,成为国内Office领域在线教育运营最成功的团队之一。在这本书中秋叶老师结合自己的实战经历,向各位完整剖析了两年创业的真实复盘思考,是一本值得在线教育创业同行入手的必读书。 ......一起来看看 《互联网+秋叶课堂:我的网课创业》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
HSV CMYK 转换工具
HSV CMYK互换工具