当前位置: 首页 > 后端技术 > PHP

imi-nacos初步完成——imi框架微服务配置中心开发进度20220730

时间:2023-03-29 20:41:11 PHP

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作者介绍雨润(张润宇),Swoole开发组成员,php-src内核贡献者,TDengine贡献者,2021中国开源代码榜Top100进展说明(20220709)雨润在imi直播活动中四周年之际,为大家介绍了下一步的发展规划。其中,明确指出imi开发团队要大力发展微服务生态,为PHP微服务贡献力量。第一步是访问imi的配置中心。目前已经实现了imi-config-center配置中心组件的抽象。并且在Nacos的基础上,开发了imi-nacos来实现配置中心组件。所有这些都已编写并通过了自动化集成测试。一些测试用例是imi开发团队对imi相关开发的基本要求。它们正在开发中,可能会随时修改。请不要在生产环境中使用它们!(不过也欢迎大家早点尝试,给点建议)在开发imi-nacos的时候,由于现有的PHPNacos组件存在各种问题,我自己开发了一个:nacos-php在开发nacos-php的过程中发现了一些问题Nacos的文档(其实可能是设计和规范的问题),帮他们完善了文档:https://github.com/nacos-grou...配置中心的好处我们一般会把一些配置放它在一个特殊的配置文件中,并且通常将它与代码一起分发和部署。当需要修改配置时,需要重新走一遍发布流程,非常繁琐和不方便。这个时候配置中心的作用就体现出来了。我们从配置中心获取配置,而不是硬编码到项目中,可以在不中断服务的情况下灵活实现配置发布。imi配置中心组件用于监控工作进程模式。每个进程监控自己,适合Swoole环境。进程模式由专门的进程监控并通知其他进程。适用于Swoole、Workerman环境。配置中心的压力更小。php-fpm模式比较特殊,就是文件缓存逻辑。如果在一定时间后请求配置中心获取数据,实时性会受到一定影响。监听方式的客户端轮询客户端周期性地请求配置中心,对配置中心的服务器端压力很大,但是最常见。服务端推送(长轮询)如果配置中心支持服务端推送(长轮询),推荐使用这种方式,配置中心服务端压力较小。使用imi-nacos安装composer需要imiphp/imi-nacos指令配置@app.beans:['ConfigCenter'=>[//'mode'=>\Imi\ConfigCenter\Enum\Mode::WORKER,//work进程模式'mode'=>\Imi\ConfigCenter\Enum\Mode::PROCESS,//进程模式'configs'=>['nacos'=>['driver'=>\Imi\Nacos\Config\NacosConfigDriver::class,//客户端连接配置'client'=>['host'=>'127.0.0.1',//主机名'port'=>8848,//端口号'prefix'=>'/',//prefix'username'=>'nacos',//用户名'password'=>'nacos',//密码'timeout'=>60000,//网络请求超时时间,单位:毫秒'ssl'=>false,//是否使用ssl(https)请求'authorizationBearer'=>false,//是否使用请求头Authorization:Bearer{accessToken}方式传递Token,老版本Nacos需要设置为true],//监听配置'listener'=>['timeout'=>30000,//配置监听长轮询超时时间,单位:毫秒'failedWaitTime'=>3000,//失败后等待重试时间,单位:毫秒'savePath'=>Imi::getRuntimePath('config-cache'),//配置保存路径,默认为空不填保存到文件php-请务必设置fpm模式!'fileCacheTime'=>30,//文件缓存时间,默认为0时,不受缓存影响,该配置只影响拉取操作。请务必将php-fpm模式设置为大于0的值!'pollingInterval'=>10000,//客户端轮询间隔,单位:毫秒],//配置项'configs'=>['nacos'=>['key'=>'imi-nacos-key1','group'=>'imi',],],],],],]获取配置\Imi\Config::get('nacos');//写入imi-nacos-key1对应的配置/**@var\Imi\ConfigCenter\ConfigCenter$configCenter*/$configCenter=App::getBean('ConfigCenter');$name='imi-nacos-key1';$group='imi';$type='json';$value=json_encode(['imi'=>'niubi']);$configCenter->getDriver('nacos')->push($name,$value,['组'=>$组,'类型'=>$类型,]);近期,开发计划将继续维护和迭代imi的核心功能,开发更多imi配置中心(Apollo、etcd、Zookeeper、Consul)的具体实现。如果你对开源和imi项目感兴趣,不妨来一起开发。你只需要开发一个被认可的imi组件或者一个基于imi的开源项目,就可以成为imi开发团队的一员。