Hyperf 发布 v2.1 版本,企业级的 PHP 微服务云原生协程框架

更新内容

经过几个月的开发调试和内部线上试用,终于在今天发布了 V2.1 版本,它并没有增加一些跨时代的功能,但却是为了 V3.0 版本的到来打好了基础。

本周主要 提升了部分组件的依赖版本,提升了最低PHP版本(>=7.3),并增加了对 Swow 驱动的适配。发布于 2.1.0 版。

如需更新到 v2.1.0 版本,只需要将 Hyperf 相关组件的依赖版本改为 2.1.* 即可,详情请见 更新指南

警告:所有的代码变动已在更新内容中注明,除了根据更新指南更新外,仍需仔细阅读 更新内容,以免出现遗漏

直接访问 官网 hyperf.io 或 文档 hyperf.wiki 查看更新内容

依赖升级

  • 升级 php 版本到 >=7.3
  • 升级组件 phpunit/phpunit 版本到 ^9.0
  • 升级组件 guzzlehttp/guzzle 版本到 ^6.0|^7.0
  • 升级组件 vlucas/phpdotenv 版本到 ^5.0
  • 升级组件 endclothing/prometheus_client_php 版本到 ^1.0
  • 升级组件 twig/twig 版本到 ^3.0
  • 升级组件 jcchavezs/zipkin-opentracing 版本到 ^0.2.0
  • 升级组件 doctrine/dbal 版本到 ^3.0
  • 升级组件 league/flysystem 版本到 ^1.0|^2.0

移除

  • 移除 Hyperf\Amqp\Builder 已弃用的成员变量 $name
  • 移除 Hyperf\Amqp\Message\ConsumerMessageInterface 已弃用的方法 consume()
  • 移除 Hyperf\AsyncQueue\Driver\Driver 已弃用的成员变量 $running
  • 移除 Hyperf\HttpServer\CoreMiddleware 已弃用的方法 parseParameters()
  • 移除 Hyperf\Utils\Coordinator\Constants 已弃用的常量 ON_WORKER_STARTON_WORKER_EXIT
  • 移除 Hyperf\Utils\Coordinator 已弃用的方法 get()
  • 移除配置文件 rate-limit.php, 请使用 rate_limit.php
  • 移除无用的类 Hyperf\Resource\Response\ResponseEmitter
  • 将组件 hyperf/paginatorhyperf/database 依赖中移除。
  • 移除 Hyperf\Utils\Coroutine\Concurrent 中的方法 stats()

变更

  • 方法 Hyperf\Utils\Coroutine::parentId 返回父协程的协程 ID

    • 如果在主协程中,则会返回 0。
    • 如果在非协程环境中使用,则会抛出 RunningInNonCoroutineException 异常。
    • 如果协程环境已被销毁,则会抛出 CoroutineDestroyedException 异常。
  • Hyperf\Guzzle\CoroutineHandler

    • 删除了 execute() 方法。
    • 方法 initHeaders() 将会返回初始化好的 Header 列表, 而不是直接将 $headers 赋值到客户端中。
    • 删除了 checkStatusCode() 方法。
  • #2720 不再在方法 PDOStatement::bindValue() 中设置 data_type,已避免字符串索引中使用整形时,导致索引无法被命中的问题。

  • #2871StreamInterface 中获取数据时,使用 (string) $body 而不是 $body->getContents(),因为方法 getContents() 只会返回剩余的数据,而非全部数据。

  • #2909 允许设置重复的中间件。

  • #2935 修改了 Exception Formatter 的默认规则。

  • #2979 命令行 gen:model 不再自动将 decimal 格式转化为 float

弃用

  • Hyperf\AsyncQueue\Signal\DriverStopHandler 将会在 v2.2 版本中弃用, 请使用 Hyperf\Process\Handler\ProcessStopHandler 代替。
  • Hyperf\Server\SwooleEvent 将会在 v3.0 版本中弃用, 请使用 Hyperf\Server\Event 代替。

新增

  • #2659 #2663 新增了 Swow 驱动支持。
  • #2671 新增监听器 Hyperf\AsyncQueue\Listener\QueueHandleListener,用来记录异步队列的运行日志。
  • #2923 新增类 Hyperf\Utils\Waiter,可以用来等待一个协程结束。
  • #3001 新增方法 Hyperf\Database\Model\Collection::columns(),类似于 array_column
  • #3002Json::decodeJson::encode 新增参数 $depth$flags

修复

  • #2741 修复自定义进程无法在 Swow 驱动下使用的问题。

优化

  • #3009 优化了 prometheus,使其支持 httpshttp 协议。

关于 Hyperf

Hyperf 是基于 Swoole 4.5+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换可复用 的。

框架组件库除了常见的协程版的 MySQL 客户端Redis 客户端,还为您准备了协程版的 Eloquent ORMWebSocket 服务端及客户端JSON RPC 服务端及客户端GRPC 服务端及客户端OpenTracing(Zipkin, Jaeger) 客户端Guzzle HTTP 客户端Elasticsearch 客户端Consul、Nacos 服务中心ETCD 客户端AMQP 组件Nats 组件Apollo、ETCD、Zookeeper、Nacos 和阿里云 ACM 的配置中心基于令牌桶算法的限流器通用连接池熔断器Swagger 文档生成Swoole TrackerBlade、Smarty、Twig、Plates 和 ThinkTemplate 视图引擎Snowflake 全局ID生成器Prometheus 服务监控 等组件,省去了自己实现对应协程版本的麻烦。

Hyperf 还提供了 基于 PSR-11 的依赖注入容器注解AOP 面向切面编程基于 PSR-15 的中间件自定义进程基于 PSR-14 的事件管理器Redis/RabbitMQ 消息队列自动模型缓存基于 PSR-16 的缓存Crontab 秒级定时任务Sessioni18n 国际化Validation 表单验证 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。

框架初衷

尽管现在基于 PHP 语言开发的框架处于一个百花争鸣的时代,但仍旧未能看到一个优雅的设计与超高性能的共存的完美框架,亦没有看到一个真正为 PHP 微服务铺路的框架,此为 Hyperf 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。

设计理念

Hyperspeed + Flexibility = Hyperf,从名字上我们就将 超高速灵活性 作为 Hyperf 的基因。

  • 对于超高速,我们基于 Swoole 协程并在框架设计上进行大量的优化以确保超高性能的输出。
  • 对于灵活性,我们基于 Hyperf 强大的依赖注入组件,组件均基于 PSR 标准 的契约和由 Hyperf 定义的契约实现,达到框架内的绝大部分的组件或类都是可替换的。

基于以上的特点,Hyperf 将存在丰富的可能性,如实现 单体 Web 服务,API 服务,网关服务,分布式中间件,微服务架构,游戏服务器,物联网(IOT)等。

文档齐全

我们投入了大量的时间用于文档的建设以提供高质量的文档体验,以解决各种因为文档缺失所带来的问题,文档上也提供了大量的示例,对新手同样友好。
Hyperf 官方开发文档

生产可用

我们为组件进行了大量的单元测试以保证逻辑的正确,目前存在 1660 个单测共 5116 个断言条件,Hyperf 是一款经历过严酷的生产环境考验的一个项目,目前已有很多的大型互联网企业都已将 Hyperf 部署到了自己的生产环境上并稳定运行。

官网及交流

Github 👈👈👈👈👈 点 Star 支持我们
Gitee 码云 👈👈👈👈👈 点 Star 支持我们
Hyperf 官网
Hyperf 文档

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/124830/hyperf-2-1-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。