进度阐明(20220820)
此次颁布的 imi-etcd 是由社区奉献的,作者是 @青玄Chris,现已正式成为 imi 开发组成员!
imi-etcd 实现了配置核心的性能,因为 imi-config-center 形象出了接口,所以应用上和 imi-nacos 十分相似。
宇润在 imi 周围年直播流动中,向大家介绍了下一步的开发计划。
其中,明确指出了 imi 开发组要大力发展微服务生态,为 PHP 微服务添砖加瓦。
第一步,是为 imi 接入配置核心。
目前曾经实现了 imi-config-center 配置核心组件的抽象化。
实现并公布了 v2.1.0-beta
版本:
- imi-nacos
- imi-etcd
都已编写并通过了自动化集成测试,有测试用例是 imi 开发组对 imi 相干开发的根本要求
imi-etcd 的应用
装置
composer require imiphp/imi-etcd:~2.1.0
应用阐明
配置
@app.beans
:
[ 'ConfigCenter' => [ // 'mode' => \Imi\ConfigCenter\Enum\Mode::WORKER, // 工作过程模式 'mode' => \Imi\ConfigCenter\Enum\Mode::PROCESS, // 过程模式 'configs' => [ 'etcd' => [ 'driver' => \Imi\Etcd\Config\EtcdConfigDriver::class, // 客户端连贯配置 'client' => [ 'scheme' => env('IMI_ETCD_SCHEME', 'http'), // http or https 'host' => env('IMI_ETCD_HOST', '127.0.0.1'), // 主机名 'port' => env('IMI_ETCD_PORT', 2379), // 端口号 'timeout' => env('IMI_ETCD_TIMEOUT', 6000), // 网络申请超时工夫,单位:毫秒 'ssl' => env('IMI_ETCD_SSL', false), // 是否应用 ssl(https) 申请 'version' => env('IMI_ETCD_VERSION', 'v3'), /** * v3 v3alpha v3beta v2 * etcd v3.2以及之前版本只应用[CLIENT-URL]/v3alpha/*。 * etcd v3.3应用[CLIENT-URL]/v3beta/*放弃[CLIENT-URL]/v3alpha/*应用。 * etcd v3.4应用[CLIENT-URL]/v3/*放弃[CLIENT-URL]/v3beta/*应用。 * [CLIENT-URL]/v3alpha/*被摈弃应用。 * etcd v3.5以及最新版本只应用[CLIENT-URL]/v3/*。 * [CLIENT-URL]/v3beta/*被摈弃应用。 */ 'pretty' => env('IMI_ETCD_PRETTY', true), 'sslCert' => '', 'sslKey' => '' ] ], ], ],]
获取配置
\Imi\Config::get('etcd'); // 对应 imi-etcd-key1
写入配置
/** @var \Imi\ConfigCenter\ConfigCenter $configCenter */$configCenter = App::getBean('ConfigCenter');$name = 'imi-etcd-key1';$value = json_encode(['imi' => 'niubi']);$options = [];$configCenter->getDriver('etcd')->push($name, $value);$configCenter->getDriver('etcd')->push($name, $value, $options);
配置核心的益处
咱们通常会把一些配置放到专门的配置文件里,个别会随着代码散发和部署。
在须要批改配置的时候,须要从新走发版流程,显得十分轻便和不不便。
这时候,配置核心的作用就体现了。
咱们从配置核心拿配置,而不是写死在我的项目里,能够比拟灵便地实现不中断服务的配置公布。
imi 配置核心组件设计
监听模式
工作过程模式
每个过程本人监听,实用于 Swoole 环境。
过程模式
由一个专门的过程监听,并告诉到其它过程。实用于 Swoole、Workerman 环境。
对配置核心压力更小。
php-fpm 模式比拟非凡,是走的文件缓存逻辑。超过肯定工夫才去申请配置核心,获取数据,实时性有肯定影响。
监听形式
客户端轮询
客户端定时申请配置核心,对配置核心服务端压力较大,然而最为通用。
服务端推送(长轮询)
如果配置核心反对服务端推送(长轮询),倡议用这个形式,对配置核心服务端压力较小。
近期开发计划
- 持续保护迭代 imi 外围性能万年不变
- 开发更多 imi 配置核心的具体实现(Apollo、Zookeeper、Consul)
如果你对开源和 imi 我的项目感兴趣,无妨一起来开发。
只需开发一个受认可的 imi 组件或基于 imi 的开源我的项目,即可成为 imi 开发组成员之一。
imi 介绍
imi 是一款反对长连贯微服务分布式的 PHP 开发框架,它能够运行在 PHP-FPM、Swoole、Workerman、RoadRunner 等多种容器环境下。
imi 领有丰盛的性能组件,v2.1 版本内置了 2 个分布式长连贯服务的解决方案。
imi 框架当初曾经稳固运行在:文旅电商平台、物联网充电云平台、停车云平台、领取微服务、短信微服务、钱包微服务、卡牌游戏服务端、数据迁徙服务(虎扑)等我的项目中。
imi 第一个版本公布于 2018 年 6 月 21 日
我的项目地址
- Github:https://github.com/imiphp/imi
- Gitee:https://gitee.com/yurunsoft/IMI
- 官网:https://www.imiphp.com/
- 文档:https://doc.imiphp.com/v2.1/
取得过的荣誉
- InfoQ 举荐:https://mp.weixin.qq.com/s/oB...
- 码云 GVP 我的项目:https://gitee.com/yurunsoft/IMI
开发组成员
宇润(张润宇),94年植树节生,无锡人。Swoole 开发组成员、php-src 内核贡献者、TDengine 贡献者、2021 中国开源码力榜前百名。
开源我的项目包含但不限于:imi、PaySDK、YurunHttp、Guzzle-Swoole、YurunOAuthLogin、ChineseUtil 等
Github:https://github.com/Yurunsoft
NHZEX,次要奉献:代码优化、bug修复、测试优化、PHP 8.1 兼容
Github:https://github.com/NHZEX
封尘,93年,狮子座,宣城人。imi 框架开发组成员,开源作者。
开源我的项目包含但不限于:fcup、mjs、university font icon library、fcphp、fcblog 等
次要奉献:imi 晚期用户,imi 1.0、2.0 官网页面作者
Github:https://github.com/lovefc
阿诺Eno,99年出世,成都人,全栈程序员(主后端),医学生(本科护理学业余),硕士二战考生。
罕用编程语言PHP、NodeJs等,imi 框架开发组成员。
一名热衷于用代码发明世界的护士小哥,独爱PHP,大学期间主导过20多个次要以PHP为后端的WEB我的项目的开发,具备丰盛的码农教训,也善于接国内外软件毕业设计。
次要奉献:文档编写、bug 修复
Github:https://github.com/Gumo666
青玄Chris,96年,广东人,时长n年半的PHP练习生,喜爱唱\跳\RAP\PHP , imi 框架开发组成员
喜爱参加开源用爱发电,imi 框架开发组成员 ,EasySwoole社区贡献者
次要奉献:imi-etcd 作者
Github:https://github.com/ChrisLeeAr...