基于 Swoole 的 PHP 协程开发框架 EasySwoole Distributed

       ESD 是一个免费开源的,快速、简单的基于 Swoole4.3 最新特性的 PHP 协程开发框架。由 SwooleDistributed 与 EasySwoole 作者打造。ESD 可用于构建高性能的 Web 系统、API、中间件、基础服务等等。            功能特性预览:

  • 协程框架:基于 Swoole 4.3的原生协程框架,自带常驻内存以及 Swoole 其它功能的封装。

  • 多种混合协议通讯:HTTP 控制器与自定义路由 TCP、UDP、WEB_SOCKET 控制器

  • 组件化:组件分为核心组件和应用组件,所有应用组件都是非必须的,开发者可以自定义,按需使用。

  • 连接池:框架自带 Mysql/Redis/ampq 高效连接池,且实现所有连接断线重连。开发者不用关心连接,相应组件已经实现。

  • 切面编程:框架容器管理的所有对象,都可以使用 AOP。使用AOP 可以使用在不改变实例内部的情况下,对实例对象的行为进行控制。

  • 分布式与微服务:提供分布式与微服务的插件组织

  • 注解系统:框架提供大量可使用的注解,比如注解路由,注解事务,注解缓存,注解验证等。 框架均提供注解与非注解的使用方式。

  • Tracing 链路追踪:通过加载Tracing插件可以实现服务链路性能的监控,支持微服务

  • 灵活的注解功能

  • 全局的依赖注入容器

  • 基于 PSR-7 的 HTTP 消息实现

  • 事件管理器

  • 缓存

  • 协程、异步任务投递

  • 自定义用户进程

  • 协程和同步阻塞客户端无缝自动切换

  • 热更新自动 Reload

  • 强大的日志系统                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                组件化                                                                                                                                                                                                                                                                                                                 ESD从设计之初就实现了组件化模式,达到模块解耦和代码复用的效果。

    目前可用插件

    • console-plugin https://github.com/esd-projects/console-plugin 控制台插件
    • postgresql-plugin https://github.com/esd-projects/postgresql-plugin postgreSQL插件(由bearlord提供)
    • mqtt-plugin https://github.com/esd-projects/mqtt-plugin MQTT服务器、MQTT客户端、MQTT路由
    • redis-plugin https://github.com/esd-projects/redis-plugin redis插件
    • easyroute-plugin https://github.com/esd-projects/easyroute-plugin 最方便的注解路由插件
    • pack-plugin https://github.com/esd-projects/pack-plugin tcp,ws等自定义协议解析的pack插件
    • tracing-plugin https://github.com/esd-projects/tracing-plugin 链路监控插件
    • aop-plugin https://github.com/esd-projects/aop-plugin 提供AOP支持的插件
    • amqp-plugin https://github.com/esd-projects/amqp-plugin AMQP插件(由李丹阳提供)
    • mysql-plugin https://github.com/esd-projects/mysql-plugin mysql插件
    • annotations-scan-plugin https://github.com/esd-projects/annotations-scan-plugin 扫描注解插件
    • whoops-plugin https://github.com/esd-projects/whoops-plugin whoops插件,http调试用
    • session-plugin https://github.com/esd-projects/session-plugin session插件
    • cache-plugin https://github.com/esd-projects/cache-plugin cache插件,缓存
    • actuator-plugin https://github.com/esd-projects/actuator-plugin actuator插件提供健康检查等框架默认端点服务
    • security-plugin https://github.com/esd-projects/security-plugin 鉴权插件
    • saber-plugin https://github.com/esd-projects/saber-plugin http客户端插件,Saber
    • autoreload-plugin https://github.com/esd-projects/autoreload-plugin 自动reload插件,用于开发
    • validate-plugin https://github.com/esd-projects/validate-plugin 验证插件,提供数据的验证
    • uid-plugin https://github.com/esd-projects/uid-plugin uid插件,长连接用于绑定fd与uid的关系
    • topic-plugin https://github.com/esd-projects/topic-plugin 主题插件,长连接用于发送订阅主题,符合MQTT规范
    • scheduled-plugin https://github.com/esd-projects/scheduled-plugin 定时任务插件
    • phpunit-plugin https://github.com/esd-projects/phpunit-plugin 单元测试插件
    • blade-plugin https://github.com/esd-projects/blade-plugin blade渲染插件
    • csvreader-plugin https://github.com/esd-projects/csvreader-plugin 读取解析csv的插件
    • process-rpc-plugin https://github.com/esd-projects/process-rpc-plugin 进程通讯插件
    • saber-cloud-plugin https://github.com/esd-projects/saber-cloud-plugin 声明试Web客户端,提供微服务访问
    • circuitbreaker-plugin https://github.com/esd-projects/circuitbreaker-plugin 微服务的熔断器插件
    • consul-plugin-plugin https://github.com/esd-projects/consul-plugin consul插件,提供服务注册,选举

      Docker运行环境(由anythink提供                                基于 Swoole 的 PHP 协程开发框架 EasySwoole Distributed_第1张图片

      docker run -it --rm -p 8080:8080 -v $PWD:/data registry.cn-beijing.aliyuncs.com/anythink/esd:latest

      请在 ESD 根目录运行容器,否则修改$PWD为代码根路径(windows需要用%cd%替换$PWD),如果修改了端口请把8080 修改为自己使用的端口. 镜像启动后的目录即挂载到主机的代码目录,注意 Mac 系统无法使用 inotify 热加载功能。 容器启动后按照安装步骤,运行框架。

      性能

      4核8G SSD盘 腾讯云高IO型I2服务器压测,框架压测包含路由

      worker_num = 4

      swoole ab压测输出hello 平均 5.9QPS万

      ESD框架 ab压测输出hello 平均 3.6QPS万

      SD框架 ab压测输出hello 平均 1.3QPS万

      压测数据来自:A-Smile                                               基于 Swoole 的 PHP 协程开发框架 EasySwoole Distributed_第2张图片基于 Swoole 的 PHP 协程开发框架 EasySwoole Distributed_第3张图片                                                                                              链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5                                                                                                                                                                                            免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号486583931,点击链接

你可能感兴趣的:(基于 Swoole 的 PHP 协程开发框架 EasySwoole Distributed)