You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ ab -c 32 -n 10000 http://127.0.0.1:9501/
Requests per second: 5340.80 [#/sec] (mean)
Time per request: 5.992 [ms] (mean)
Time per request: 0.187 [ms] (mean, across all concurrent requests)
Transfer rate: 928.38 [Kbytes/sec] received
2.2 版本
设置 2 个多路复用的连接
$ ab -c 32 -n 10000 -k http://127.0.0.1:9501/
Requests per second: 9101.44 [#/sec] (mean)
Time per request: 3.516 [ms] (mean)
Time per request: 0.110 [ms] (mean, across all concurrent requests)
Transfer rate: 1626.53 [Kbytes/sec] received
Confirm 模式投递
2.1 版本
连接池内最大数量设置为 10
$ ab -c 32 -n 5000 -k http://127.0.0.1:9501/
Requests per second: 797.73 [#/sec] (mean)
Time per request: 40.114 [ms] (mean)
Time per request: 1.254 [ms] (mean, across all concurrent requests)
Transfer rate: 142.56 [Kbytes/sec] received
2.2 版本
设置 2 个多路复用的连接
$ ab -c 32 -n 5000 -k http://127.0.0.1:9501/
Requests per second: 1595.94 [#/sec] (mean)
Time per request: 20.051 [ms] (mean)
Time per request: 0.627 [ms] (mean, across all concurrent requests)
Transfer rate: 285.21 [Kbytes/sec] received
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hyperf 2.2 版本发布!
前言
首先感谢所有 Hyperf 的支持者,从发布至今两年的时间里,我们坚持每周发布一个小版本,截止至今已经发布了超过 106 个版本,这是 Hyperf 团队传达对用户坚持和负责任精神最直接的一种方式,我们用行动来说明一切,往后我们仍将一如既往地继续保持 Hyperf 的迭代与维护。
同时我们也很荣幸看到越来越多的公司选择了 Hyperf 作为公司项目的框架来使用,并反哺了很多的 Pull Request 和 Bugfixs 给 Hyperf,当前 Hyperf 的 Contributors 已超 200 人,感谢大家一起共造了生态的繁荣,我们必定不负众望!
Thanks ALL
在持续迭代的过程中,我们又产生了一些新的思路。我们对这些思路进行迭代、验证,并最终沉淀到了 2.2 版本中,今天很荣幸向大家公布,Hyperf 2.2 版本发布!
主要功能迭代
DI 底层实现重构
在 2.0-2.1 版本时,为了实现 AOP 作用于非 DI 管理的对象(如
new
关键词实例化的对象时),底层实现采用了BetterReflection
组件来实现相关功能,带来新的编程体验的同时,也还是存在一些此前未攻克的问题,如下:BetterReflection
尚未支持 PHP 8 (截止发版时)在新的版本里,我们弃用了
BetterReflection
的应用,采用了子进程扫描的方式
来解决此前的问题,以上这些痛点,我们全部解决了~用正向的角度来描述这个功能的变更:
Inject
注解注入的适用场景,但可惜仍有一种情况下无效(父类private
属性注入时失效,与此前版本表现一致),我们会继续努力攻克该场景的实现PHP 8
及Attributes
原生注解特性简而言之,DI 组件作为 Hyperf 的核心组件之一,现在已经达到了一个全新的阶段,创新与实用值满格~
支持 PHP 8
Hyperf 2.2 各组件已经适配
PHP 8
,注解亦兼容PHP 8
的Attributes
原生注解特性。需要注意的是,同一区域同时使用
注解(Annotations)
和原生注解(Attributes)
,底层将 忽略注解(Annotations) (即使注解不同)需要注意的是,框架虽然已经支持
PHP8
,但是升级时仍需要自行确认业务代码和依赖的第三方组件是否满足 PHP 8 不兼容变更 。可重复注解
在之前版本中,同一区域相同
Annotation
无法重复使用:此前,重复使用相同注解只能通过注解嵌套方式实现:
在 2.2 中,我们实现了可重复注解:
当用户自定义的注解需要可重复时,将注解的父类更改为
Hyperf\Di\Annotation\AbstractMultipleAnnotation
即可,具体可参考框架Middleware
注解的实现。配置中心完全重构
在此前的版本,配置中心的实现是由各个零散的组件自行实现的,各组件的实现参差不一,都有一些细节实现的区别,各组件间的代码重合度也是非常高的,在 2.2 版本,我们 完全重构 了相关组件,增加了
hyperf/config-center
组件,该组件将作为配置中心的统一接入层和抽象层,通过结合其他配置中心的 Driver 组件来实现相关储存引擎的能力驱动,如hyperf/config-center
+hyperf/config-apollo
组件结合使用的方式来实现对 Apollo 配置中心的使用,其他驱动只需更换对应的驱动即可。这样的改造使我们极大的减少了驱动的代码量,现在简单几行代码几个类就能完成一个新的驱动的接入了。在升级使用时,注意相关配置文件的变更,新版本将由
config/autoload/config_center.php
配置文件来管控所有相关信息,初次创建该文件可通过运行php bin/hyperf.php vendor:publish hyperf/config-center
命令生成。服务治理组件重构
在此前的版本,
hyperf/service-governance
组件跟配置中心所面临的问题也是一致的,我们在此版本也做了与配置中心类似的改变,比如通过hyperf/service-governance
+hyperf/service-governance-nacos
组件来实现 nacos 作为服务中心的使用。在升级使用时,注意相关配置文件的变更,新版本将由
config/autoload/services.php
配置文件来管控所有相关信息,内部结构有一定的改变,初次创建该文件可通过运行php bin/hyperf.php vendor:publish hyperf/service-governance
命令生成。Nacos 组件完全重构
我们对 Nacos 组件做了 完全的重构,使该组件的代码实现、结构分层和 API 更加的合理,并对原来整合在一个组件内的配置中心逻辑、服务中心逻辑和客户端代码进行了拆分,如上面两个主要迭代功能介绍所示。
具体使用到 Nacos 组件的一定要重新阅读新的文档,并根据新的文档指示来使用。
AMQP 组件连接机制重构
我们发现使用 AMQP 组件的用户非常的多,而作为一个消息队列组件,其性能速度对系统的削峰效果和消息投递/消费速度影响是非常大的,我们通过
协程通道(Channel)
实现了一个多路复用的机制,使该组件的消息投递性能提升了将近一倍!在性能提升的同时,还使得客户端与服务端间的连接稳定性得到了提升。该组件升级后会直接切换为新的连接机制,无需做任何调整。
以下是抽取压测对比中的关键信息:
非 Confirm 模式投递
2.1 版本
$ ab -c 32 -n 10000 http://127.0.0.1:9501/ Requests per second: 5340.80 [#/sec] (mean) Time per request: 5.992 [ms] (mean) Time per request: 0.187 [ms] (mean, across all concurrent requests) Transfer rate: 928.38 [Kbytes/sec] received
2.2 版本
$ ab -c 32 -n 10000 -k http://127.0.0.1:9501/ Requests per second: 9101.44 [#/sec] (mean) Time per request: 3.516 [ms] (mean) Time per request: 0.110 [ms] (mean, across all concurrent requests) Transfer rate: 1626.53 [Kbytes/sec] received
Confirm 模式投递
2.1 版本
$ ab -c 32 -n 5000 -k http://127.0.0.1:9501/ Requests per second: 797.73 [#/sec] (mean) Time per request: 40.114 [ms] (mean) Time per request: 1.254 [ms] (mean, across all concurrent requests) Transfer rate: 142.56 [Kbytes/sec] received
2.2 版本
$ ab -c 32 -n 5000 -k http://127.0.0.1:9501/ Requests per second: 1595.94 [#/sec] (mean) Time per request: 20.051 [ms] (mean) Time per request: 0.627 [ms] (mean, across all concurrent requests) Transfer rate: 285.21 [Kbytes/sec] received
3 个 Incubator 组件毕业进入主库
自从采用 Incubator 机制来孵化组件后,产生了大量的新组件,很荣幸在 2.2 版本时,有 3 个 Incubator 组件毕业进入主库,这也意味着这些组件进入了生产可用阶段~
以下为各个毕业的组件及其简介
hyperf/dag
该组件是一个轻量级有向无环图 (Directed Acyclic Graph) 任务编排库,通过该组件可以很轻松的完成任务的编排和运行。
hyperf/rpc-multiplex
该组件是一个实现多路复用的 RPC 协议连接组件,通过使用该库可以得到性能更高和连接更稳定的 RPC 功能;
hyperf/rpn
该组件是一个 逆波兰表示法 的实现组件,
RPN
是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。通过该组件可以完成 逆波兰表达式 的解析。依赖升级
friendsofphp/php-cs-fixer
为^3.0
;psr/container
为^1.0|^2.0
;egulias/email-validator
为^3.0
;markrogoyski/math-php
为^2.0
;league/flysystem
为^1.0|^2.0
;依赖项已更改
domnikl/statsd
废弃,不再维护。作者建议改用slickdeals/statsd
包;即将弃用 API
Hyperf\Utils\Resource
将在v2.3
中被弃用,请改用Hyperf\Utils\ResourceGenerator
;变更明细
LengthAwarePaginator::toArray()
的返回值更改为与Paginator::toArray()
的一致;kafka
删除了broker
和bootstrap_server
,请使用brokers
和bootstrap_servers
代替;AMQP
的消费者标签更改为空字符串;Fork Process
策略替换BetterReflection
策略;hyperf/database
使用gen:model
时移除了roave/better-reflection
;LazyLoader
中移除了roave/better-reflection
;roave/better-reflection
;promphp/prometheus_client_php
代替endclothing/prometheus_client_php
;Hyperf\CircuitBreaker\CircuitBreakerInterface
为支持PHP8
;CircuitBreaker::inc*Counter()
到CircuitBreaker::incr*Counter()
;AbstractHandler::switch()
方法的类型提示;PHP8
中将@Middlewares({@Middleware(FooMiddleware::class)})
的书写风格更改为#[Middlewares(FooMiddleware::class)]
;nacos
组件,一定要重读文档;config_apollo.php
配置,请改用config_center.php
;config_etcd.php
配置,请改用config_center.php
;kafka
中删除了brokers
和update_brokers
配置;zookeeper.php
配置,请改用config_center.php
;nacos
为config-nacos
和service-governance-nacos
;nacos-sdk
组件名为nacos
;AbstractDriver
并将重复的代码并合到抽象类中PipeMessageInterface
以统一配置获取进程的消息结构更多
升级指南
我们提供了详尽的升级指南,请查阅官方文档 - 2.2 升级指南
官网及交流
Github 👈👈👈👈👈 点 Star 支持我们
Gitee 码云 👈👈👈👈👈 点 Star 支持我们
Hyperf 官网
Hyperf 文档
Hyperf 交流群: 862099724(已满)
Hyperf 交流 2 群: 811414891(已满)
Hyperf 交流 3 群: 589051831
钉钉群 一群: 34538367(已满)
钉钉群 二群: 34488757
Beta Was this translation helpful? Give feedback.
All reactions