进度说明(20220902)imi-zookeeper目前实现了配置中心的功能,因为imi-config-center抽象了接口,所以用起来和imi-nacos、imi-etcd非常相似。同时开始了imi的微服务注册中心接入工作,首先接入的注册中心是Nacos。目前服务已经注册到Nacos,接下来的工作就是通过注册中心调用服务。在实现imi-zookeeper时,使用了两个扩展,分别是php-zookeeper和swoole-zookeeper。测试过程中,发现了一些扩展的问题,进行了一波修复。其中swoole-zookeeper的PR已经合并:https://github.com/swoole/ext...php-zookeeper的PR截至发稿还没有合并:https://github.com/php-zookee...在开发开源项目时,使用了其他开源项目,发现问题帮助解决。这才是真正的开源。我个人和imi都欢迎大家参与开源,只有共同建设,项目才能发展得越来越好。雨润在imi四周年直播活动中介绍了接下来的发展规划。其中,明确指出imi开发团队要大力发展微服务生态,为PHP微服务贡献力量。第一步是访问imi的配置中心。目前已经实现了imi-config-center配置中心组件的抽象。实现并发布了v2.1.0-beta版本:imi-nacosimi-etcdimi-zookeeper已经编写完成并通过自动化集成测试,部分测试用例是imi开发团队对imi相关开发的基本需求。imi-zookeeper的使用安装Swoole用户请安装swoole-zookeeper扩展。非Swoole用户请安装php-zookeeper扩展。composerrequireimiphp/imi-zookeeper:~2.1.0使用指令配置@app.beans:['ConfigCenter'=>[//'mode'=>\Imi\ConfigCenter\Enum\Mode::WORKER,//worker进程模式'mode'=>\Imi\ConfigCenter\Enum\Mode::PROCESS,//进程模式'configs'=>['zookeeper'=>['driver'=>\Imi\ZooKeeper\Config\SwooleZooKeeperConfigDriver::class,//Swoole驱动//'driver'=>\Imi\ZooKeeper\Config\ZooKeeperConfigDriver::class,//非Swoole驱动//客户端连接配置'client'=>['host'=>env('IMI_ZOOKEEPER_HOST','127.0.0.1:2181'),//主机名:端口'timeout'=>10,//网络请求超时时间,单位:秒],//监听配置'listener'=>['timeout'=>30000,//配置监听长轮询超时时间,单位:毫秒'failedWaitTime'=>3000,//失败后等待重试时间,单位:毫秒'savePath'=>Imi::getRuntimePath('config-cache'),//配置保存路径,默认为空不保存到文件php-fpm模式,请务必设置!'fileCacheTime'=>30,//文件缓存时间,默认为0时,不受缓存影响,该配置只影响拉取操作。请务必将php-fpm模式设置为大于0的值!'pollingInterval'=>10000,//客户端轮询间隔,单位:毫秒],//配置项'configs'=>['zookeeper'=>['key'=>'imi-zooKeeper-key1','type'=>'json',//配置内容类型],],],],],]获取配置\Imi\Config::get('zookeeper');//写入对应imi-zooKeeper-key1的config/**@var\Imi\ConfigCenter\ConfigCenter$configCenter*/$configCenter=App::getBean('ConfigCenter');$name='imi-zooKeeper-key1';$value=json_encode(['imi'=>'niubi']);$configCenter->getDriver('zookeeper')->push($name,$value);配置中心的好处我们通常会把一些配置放在专门的配置文件中,通常会带有代码分发和部署。当需要修改配置时,需要重新走一遍发布流程,非常繁琐和不方便。这个时候配置中心的作用就体现出来了。我们从配置中心获取配置,而不是硬编码到项目中,可以在不中断服务的情况下灵活实现配置发布。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版本内置了两种分布式长连接服务解决方案。imi框架目前稳定运行于:文旅电商平台、物联网收费云平台、停车云平台、支付微服务、短信微服务、钱包微服务、卡牌游戏服务器、数据迁移服务(虎扑)等项目。imi第一个版本于2018年6月21日发布,项目地址Github:https://github.com/imiphp/imiGitee:https://gitee.com/yurunsoft/IMI官网:https://www.imiphp.com/Document:https://doc.imiphp.com/v2.1/获得InfoQ推荐:https://mp.weixin.qq.com/s/oB...码云GVP项目:https://gitee.com/yurunsoft/IMI开发团队成员于润(张润玉),1994年植树节出生,无锡人。Swoole开发团队成员,php-src内核贡献者,TDengine贡献者,2021年中国开源代码榜单前100。开源项目包括但不限于:imi、PaySDK、YurunHttp、Guzzle-Swoole、YurunOAuthLogin、ChineseUtil等.Github:https://github.com/YurunsoftNHZEX,主要贡献:代码优化,bug修复,测试优化,PHP8.1兼容Github:https://github.com/NHZEX陈锋,1993年出生,狮子座,宣城人.imi框架开发团队成员,开源作者。开源项目包括但不限于:fcup、mjs、大学字体图标库、fcphp、fcblog等主要贡献:imi的早期用户,imi1.0和2.0官网页面的作者Github:https://github.com/lovefcEno,99生于成都,全栈程序员(主后端),医学生(本科护理专业),二战硕士在读。PHP、NodeJs等常用编程语言,imi框架开发团队成员。热衷于用代码创造世界,只爱PHP的护士小哥,大学期间主导开发了20多个以PHP为后台为主的WEB项目,有丰富的码农经验,也善于接受国内和国外的软件毕业设计。主要贡献:文档编写,bug修复Github:https://github.com/Gumo666清轩Chris,1996年,广东人,n年半PHP实习生,喜欢唱歌\跳舞\RAP\PHP,imi框架开发组成员喜欢用爱心参与开源发电,imi框架开发团队成员,EasySwoole社区贡献者主要贡献:imi-etcd作者Github:https://github.com/ChrisLeeAr...
