热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于php:imizookeeper-正式发布imi-框架微服务配置中心开发进度-20220902

imi-zookeeper目前实现了配置核心的性能,因为imi-config-center形象出了接口,所以应用上和imi-nacos、imi-etcd十分相似。

进度阐明(20220902)

imi-zookeeper 目前实现了配置核心的性能,因为 imi-config-center 形象出了接口,所以应用上和 imi-nacos、imi-etcd 十分相似。

与此同时,曾经开始了为 imi 接入微服务注册核心的工作,首个接入的注册核心是 Nacos。

目前曾经实现了向 Nacos 注册服务,接下来的工作是实现通过注册核心调用服务。

在实现 imi-zookeeper 的时候,应用到了 2 个扩大,别离是 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-nacos
  • imi-etcd
  • imi-zookeeper

都已编写并通过了自动化集成测试,有测试用例是 imi 开发组对 imi 相干开发的根本要求

imi-zookeeper 的应用

装置

  • Swoole 用户请装置 swoole-zookeeper 扩大。
  • 非 Swoole 用户请装置 php-zookeeper 扩大。

composer require imiphp/imi-zookeeper:~2.1.0

应用阐明

配置

@app.beans

[
    'ConfigCenter' => [
        // 'mode'    => \Imi\ConfigCenter\Enum\Mode::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时不受缓存影响,此配置只影响 pull 操作。php-fpm 模式请肯定要设置为大于0的值!
                    'pollingInterval' => 10000, // 客户端轮询间隔时间,单位:毫秒
                ],
                // 配置项
                'configs' => [
                    'zookeeper' => [
                        'key'   => 'imi-zooKeeper-key1',
                        'type'  => 'json', // 配置内容类型
                    ],
                ],
            ],
        ],
    ],
]
获取配置
\Imi\Config::get('zookeeper'); // 对应 imi-zooKeeper-key1
写入配置
/** @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 版本内置了 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…



推荐阅读
  • 如何在Windows上使用Gitee创建远程仓库
    本文详细记录了在Windows系统上使用Gitee创建远程仓库的步骤,帮助解决无法注册GitHub的问题。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 本文介绍了如何在GitHub上设置多个SSH Key,以解决原有Key失效的问题,并确保不同项目使用不同的私钥进行安全访问。 ... [详细]
  • com.hazelcast.config.MapConfig.isStatisticsEnabled()方法的使用及代码示例 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
author-avatar
快乐每一天Everyone
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有