后端微服务【免费下载链接】hyperf A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.项目地址https://gitcode.com/gh_mirrors/hy/hyperf点击查看免费下载Hyperf 是一个面向高性能与灵活性的协程框架其核心价值之一在于生态中大量经过协程化改造、可在常驻内存协程环境下安全使用的组件库。本文基于仓库官方文档 docs/en/awesome-components.md 的组件清单逐一解读路由、事件、日志、命令、数据库、服务治理等领域的官方组件与社区组件并结合 hyperf/hyperf 仓库源码佐证其协程安全设计同时完整给出组件提交流程与 Hyperf 组件适配指南。读完本文你将能够快速为业务场景挑选合适的协程组件并掌握将第三方库或自研组件适配进 Hyperf 生态的标准路径。一、为什么要有一份协程安全组件清单在传统 PHP-FPM 架构下引入第三方库通常只需通过 Composer 直接安装即可。但在 Hyperf 这类常驻内存 协程的架构下应用的生命周期与执行模式发生了根本变化进程常驻意味着静态变量、全局状态会被复用协程并发则意味着阻塞式 IO 调用会拖垮整个 Worker 进程。因此并非所有 Library 都能在 Hyperf 中直接使用只有经过协程化处理例如将阻塞 IO 替换为协程调度、隔离协程上下文的组件才是安全的。官方文档 docs/en/awesome-components.md 开篇即明确所有官方提供的组件库均已协程化处理可安全地在 Hyperf 或其他协程框架中使用基于 Hyperf 的开放性与可扩展性社区可以开发或适配各类组件使 Hyperf 拥有无限可能。这份页面收录了两类内容Hyperf 兼容的协程组件由 Hyperf 官方提供或社区适配、已验证可在协程下安全使用的组件常用的协程安全库可直接在协程环境中放心引入的常用类库。它是开发者快速选型的官方索引也是社区生态的入口页。二、组件全景按领域分类的官方与社区组件清单以下完整继承原文档的组件清单并按原文档分类组织。对于仓库内已收录的官方组件同时给出对应的仓库源码路径便于深入阅读实现。1. 路由Route组件说明nikic/fastroute常用的高性能路由组件lazychanger/urlrewrite基于 PSR-7、采用与 nikic/fastroute 相同路由规则的 URL 重写工具路由是 Web 应用的入口分发层。Hyperf 的 HTTP 服务基于 http-server 实现其路由分发对性能敏感选用经过验证的高性能路由组件是保证服务吞吐的基础。2. 事件Event组件说明hyperf/eventHyperf 官方提供的基于 PSR-14 的事件管理器在仓库中对应 src/event。其 composer.json 声明了对psr/event-dispatcher: ^1.0的依赖并以Hyperf\Event\ConfigProvider作为组件配置入口ConfigProvider.php 将 PSR 标准的ListenerProviderInterface与EventDispatcherInterface绑定到 Hyperf 的工厂实现从而让事件系统无缝融入依赖注入容器。3. 日志Log组件说明hyperf/loggerHyperf 官方提供的基于 PSR-3 的日志管理器对应仓库 src/logger。其 composer.json 依赖monolog/monolog: ^3.1与psr/log: ^2.0 || ^3.0说明它是在 Monolog 之上、以 PSR-3 标准接口对外提供协程安全的日志能力。4. 命令行Command组件说明hyperf/commandHyperf 官方提供的基于 symfony/console 扩展并支持注解的命令管理组件symfony/consoleSymfony 提供的独立命令管理组件对应仓库 src/command。其 composer.json 声明依赖symfony/console: ^6.0 || ^7.0同时依赖hyperf/di注解支持与psr/event-dispatcher监听器支持从依赖关系即可确认Hyperf 命令组件 Symfony Console 的协程化 注解式命令声明能力。5. 数据库Database组件说明hyperf/database基于 Hyperf fork 的 Eloquent 数据库 ORM可复用于其他框架hyperf/model-cache基于 hyperf/database 的模型自动缓存组件Hyperf 官方提供对应仓库 src/database 与 src/model-cache。database/composer.json 显示其依赖hyperf/engine: ^2.0底层协程引擎、nesbot/carbon、psr/event-dispatcher等并建议搭配hyperf/paginator进行结果集分页——这是 ORM 组件可独立复用到其他框架的依赖设计。6. 依赖注入容器Dependency Injection Container组件说明hyperf/diHyperf 官方提供的依赖注入容器支持注解与 AOP对应仓库 src/di。di/composer.json 的依赖揭示了其实现底座nikic/php-parser: ^5.6注解扫描解析、hyperf/code-parser代码解析、php-di/phpdoc-readerPHPDoc 读取、symfony/finder扫描路径遍历。DI 是 Hyperf 注解机制与 AOP 的基石几乎所有官方组件都通过 ConfigProvider 机制向容器注册依赖如前述 hyperf/event 的依赖注册方式。7. 服务端Server组件说明hyperf/http-serverHyperf 官方提供的 HTTP 服务端hyperf/grpc-serverHyperf 官方提供的 gRPC 服务端hyperf/websocket-serverHyperf 官方提供的 WebSocket 服务端hyperf/rpc-serverHyperf 官方提供的抽象 RPC 服务端对应仓库 src/http-server、src/grpc-server、src/websocket-server、src/rpc-server。这一组组件覆盖了 Hyperf 对外提供服务的全部协议形态HTTP、gRPC、WebSocket 以及面向自定义协议的抽象 RPC。8. 客户端Client组件说明hyperf/consulHyperf 官方提供的 Consul 协程客户端hyperf/elasticsearchHyperf 官方提供的 Elasticsearch 协程客户端hyperf/grpc-clientHyperf 官方提供的 gRPC 协程客户端hyperf/rpc-clientHyperf 官方提供的抽象 RPC 协程客户端hyperf/guzzleHyperf 官方提供的 Guzzle HTTP 协程客户端hyperf/redisHyperf 官方提供的 Redis 协程客户端hyperf/websocket-clientHyperf 官方提供的 WebSocket 协程客户端hyperf/cacheHyperf 官方提供的基于 PSR-16 的缓存协程客户端friendsofhyperf/http-client基于 Hyperf 的 Guzzle HTTP 协程客户端friendsofhyperf/openai-client基于 Hyperf 的 OpenAI 协程客户端以 src/guzzle 为例可以直观看到协程化在源码层面的落地方式ClientFactory.php 在Coroutine::inCoroutine()为真时自动为 Guzzle 装配CoroutineHandlerCoroutineHandler.php 的类注释明确写道Http handler that uses Swoole/Swow Coroutine as a transport layer即用协程作为传输层PoolHandler.php 进一步继承协程 Handler 并接入连接池能力对应suggest中的hyperf/pool。从源码结构看Hyperf 官方客户端组件的协程化普遍采用检测当前是否处于协程环境 → 切换协程 Handler / 复用连接池的策略这正是它们能在协程下安全使用的原因。9. 测试Testing组件说明hyperf/testingHyperf 官方单元测试组件friendsofhyperf/pest-plugin-hyperf专为 Hyperf 设计的 Pest 插件为 Pest 提供协程环境支持对应仓库 src/testing。其 composer.json 依赖phpunit/phpunit: ^11.0并在bin段提供co-phpunit可执行文件这是面向协程环境的 PHPUnit 入口同时依赖hyperf/http-server、hyperf/http-message以便在测试中直接发起协程化 HTTP 请求。10. 消息队列Message Queue组件说明hyperf/amqpHyperf 官方提供的 AMQP 协程组件hyperf/async-queueHyperf 官方提供的基于 Redis 的异步队列组件对应仓库 src/amqp 与 src/async-queue。AMQP 覆盖 RabbitMQ 等标准消息协议async-queue 则利用 Redis 实现轻量异步任务二者分别面向不同的消息投递场景。11. 配置中心Configuration Center组件说明hyperf/config-apolloHyperf 官方提供的 Apollo 配置中心组件hyperf/config-aliyun-acmHyperf 官方提供的阿里云 ACM 应用配置服务组件对应仓库 src/config-apollo 与 src/config-aliyun-acm。配置中心组件负责将远程配置动态同步进 Hyperf 的 config 体系实现配置热更新。12. 服务治理Service Governance组件说明hyperf/json-rpcHyperf 官方提供的 JSON-RPC 协议组件hyperf/rate-limitHyperf 官方提供的基于令牌桶算法的限流器组件hyperf/load-balancerHyperf 官方提供的负载均衡组件hyperf/service-governanceHyperf 官方提供的服务治理组件hyperf/tracerHyperf 官方提供的 OpenTracing 组件hyperf/circuit-breakerHyperf 官方提供的服务熔断组件friendsofhyperf/sentry基于 Hyperf 的 Sentry 组件对应仓库 src/json-rpc、src/rate-limit、src/load-balancer、src/service-governance、src/tracer、src/circuit-breaker。这组组件构成了一套完整的微服务治理栈限流、负载均衡、服务注册发现、链路追踪与熔断降级配合 服务注册 文档即可搭建生产级微服务。13. 注解配置Annotation Configuration组件说明hyperf-helper/dependency使用注解快速配置依赖并支持依赖优先级14. DTO组件说明fatbit/form-request-param基于 DTO 的强类型请求参数校验表单校验与自动注入组件15. 开发与调试Development and Debugging组件说明firstphp/wsdebug通过 WebSocket 实时观测异常错误的开发调试组件qbhy/hyperf-multi-env支持类似 Laravel 的多环境配置文件功能例如APP_ENVtesting时加载.env.testing覆盖默认.envqiutuleng/hyperf-dump-server基于 Symfony 的 Var-Dump Server 组件提供dump函数将程序中的变量或数据打印到另一个命令行窗口learv in/hyperf-tinker基于 PsySH 提供交互式 Hyperf Shell 容器friendsofhyperf/telescope适配 Hyperf 的调试工具社区组件覆盖了从环境配置、变量调试到交互式 Shell、全链路调试面板的完整开发体验是官方组件之外的重要补充。三、如何向 Hyperf 提交你自己的组件官方文档给出了明确的提交路径确保你开发的组件已适配 Hyperf直接向hyperf/hyperf项目的master分支发送Pull RequestPR 的内容即修改当前页面(en/awesome-components.md)把你的组件以符合上表格式的条目加入对应分类。也就是说awesome-components 清单是一个开放共建的索引页任何社区成员都可以通过 PR 将自己验证过的协程组件收录进来帮助更多人快速选型。四、如何将组件适配到 Hyperf官方为组件开发者提供了专门的开发指南 Hyperf 组件开发指南其核心思路如下。4.1 先理解为什么需要适配正如指南前言所述在 PHP-FPM 架构下需要某个能力时直接通过 Composer 引入对应库即可但在 Hyperf 下常驻内存与协程两大特性导致应用的生命周期与运行模式发生变化因此并非所有 Library 都能直接使用。阅读指南前需要通读 协程 与 依赖注入 章节这是组件开发的基础。4.2 推荐的双项目开发结构官方推荐的开发环境由两个项目组成// 安装骨架项目并配置 composer create-project hyperf/hyperf-skeleton // 克隆 hyperf 组件库项目将 hyperf 替换为你的 GitHub ID即克隆你 fork 的项目 git clone gitgithub.com:hyperf/hyperf.git目录结构如下. ├── hyperf │ ├── bin │ └── src └── hyperf-skeleton ├── app ├── bin ├──config ├── runtime ├── test └── vendor4.3 通过 path 仓库建立软链接在hyperf-skeleton的composer.json中加入repositories配置使 Composer 以path形式直接加载hyperf目录下的组件源码{ repositories: { hyperf: { type: path, url: ../hyperf/src/* } } }随后删除锁文件与 vendor 目录并重新更新依赖cd hyperf-skeleton rm -rf composer.lock rm -rf vendor composer update完成后hyperf-skeleton/vendor/hyperf下的所有项目目录都会通过软链接指向hyperf目录可用ls -l验证cd vendor/hyperf/ ls -l看到如下连接关系即表示软链接建立成功cache - ../../../hyperf/src/cache command - ../../../hyperf/src/command config - ../../../hyperf/src/config contract - ../../../hyperf/src/contract database - ../../../hyperf/src/database db-connection - ../../../hyperf/src/db-connection devtool - ../../../hyperf/src/devtool di - ../../../hyperf/src/di dispatcher - ../../../hyperf/src/dispatcher event - ../../../hyperf/src/event exception-handler - ../../../hyperf/src/exception-handler framework - ../../../hyperf/src/framework guzzle - ../../../hyperf/src/guzzle http-message - ../../../hyperf/src/http-message http-server - ../../../hyperf/src/http-server logger - ../../../hyperf/src/logger memory - ../../../hyperf/src/memory paginator - ../../../hyperf/src/paginator pool - ../../../hyperf/src/pool process - ../../../hyperf/src/process redis - ../../../hyperf/src/redis server - ../../../hyperf/src/server testing - ../../../hyperf/src/testing support - ../../../hyperf/src/support4.4 修改、验证并提交 PR建立软链接后即可直接在 IDE 中修改vendor/hyperf下的文件实际修改的是hyperf项目源码完成适配与本地验证后将hyperf项目中的改动commit最后向主干提交Pull Request (PR)。这套工作流让组件开发者既能实时调试、又能以最小成本将改动贡献回上游。五、从清单到落地基于源码的选型建议结合仓库源码可以总结出几条务实的选型经验官方组件优先清单中hyperf/*前缀的组件在本仓库 src 目录均有对应实现且通过 ConfigProvider 机制与 DI 容器深度集成参考 hyperf/event 的 ConfigProvider开箱即用关注协程化实现挑选社区组件时可重点确认其是否检测协程环境并切换协程 Handler。以 hyperf/guzzle 为参照——它在Coroutine::inCoroutine()为真时自动装配协程传输层这是判断协程安全的典型特征按场景组合治理组件微服务场景可组合 json-rpc、load-balancer、rate-limit、circuit-breaker 与 tracer 形成完整闭环开发调试组件补位多环境配置hyperf-multi-env、变量调试hyperf-dump-server、交互式 Shellhyperf-tinker与调试面板telescope可以显著提升本地开发效率。结语awesome-components 清单是 Hyperf 生态的选型入口它既收录了官方协程化组件也接纳社区贡献的经过验证的协程安全库。借助仓库内对应的源码实现src 目录下的各组件与 组件开发指南 提供的适配工作流开发者既可以快速为业务挑选合适组件也可以将自研组件贡献回生态共同扩展 Hyperf 的能力边界。赞分享后端微服务【免费下载链接】hyperf A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.项目地址https://gitcode.com/gh_mirrors/hy/hyperf点击查看免费下载相关推荐Hyperf 协程组件生态全指南Awesome Components 组件清单、提交流程与适配实践Hyperf 协程组件生态全指南Awesome Components 组件清单、提交流程与适配实践 Hyperf 之所以能成为一套可用于微服务与中间件场景的协后端Web框架微服务RPC框架异步编程Hyperf 协程组件生态全景指南Awesome Components 收录清单与组件开发适配实践Hyperf 协程组件生态全景指南Awesome Components 收录清单与组件开发适配实践 Hyperf 官方将所有组件库完成了协程化处理使其可以在后端Web框架微服务RPC框架异步编程如何快速掌握Detect-It-Easy文件安全检测工具的完整指南如何快速掌握Detect It Easy文件安全检测工具的完整指南 在数字安全日益重要的今天面对未知文件时 文件安全检测工具 成为保护系统安全的第一道防线后端Web框架微服务RPC框架异步编程上一篇Windows系统优化神器5分钟快速掌握Chris Titus Tech WinUtil完整使用指南下一篇从理论到实践10个Awesome JMeter性能测试最佳实践与案例解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?