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

我要开发同款
匿名用户2019年06月14日
72阅读

技术信息

开源地址
https://github.com/esd-projects/esd-server
授权协议
Apache-2.0

作品详情

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

功能特性预览:

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

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

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

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

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

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

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

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

灵活的注解功能

全局的依赖注入容器

基于PSR-7的HTTP消息实现

事件管理器

缓存

协程、异步任务投递

自定义用户进程

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

热更新自动Reload

强大的日志系统

组件化

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

目前可用插件cosole-plugi https://github.com/esd-projects/cosole-plugi 控制台插件postgresql-plugi https://github.com/esd-projects/postgresql-plugi postgreSQL插件(由bearlord提供)mqtt-plugi https://github.com/esd-projects/mqtt-plugi MQTT服务器、MQTT客户端、MQTT路由redis-plugi https://github.com/esd-projects/redis-plugi redis插件easyroute-plugi https://github.com/esd-projects/easyroute-plugi 最方便的注解路由插件pack-plugi https://github.com/esd-projects/pack-plugi tcp,ws等自定义协议解析的pack插件tracig-plugi https://github.com/esd-projects/tracig-plugi 链路监控插件aop-plugi https://github.com/esd-projects/aop-plugi 提供AOP支持的插件amqp-plugi https://github.com/esd-projects/amqp-plugi AMQP插件(由李丹阳提供)mysql-plugi https://github.com/esd-projects/mysql-plugi mysql插件aotatios-sca-plugi https://github.com/esd-projects/aotatios-sca-plugi 扫描注解插件whoops-plugi https://github.com/esd-projects/whoops-plugi whoops插件,http调试用sessio-plugi https://github.com/esd-projects/sessio-plugi sessio插件cache-plugi https://github.com/esd-projects/cache-plugi cache插件,缓存actuator-plugi https://github.com/esd-projects/actuator-plugi actuator插件提供健康检查等框架默认端点服务security-plugi https://github.com/esd-projects/security-plugi 鉴权插件saber-plugi https://github.com/esd-projects/saber-plugi http客户端插件,Saberautoreload-plugi https://github.com/esd-projects/autoreload-plugi 自动reload插件,用于开发validate-plugi https://github.com/esd-projects/validate-plugi 验证插件,提供数据的验证uid-plugi https://github.com/esd-projects/uid-plugi uid插件,长连接用于绑定fd与uid的关系topic-plugi https://github.com/esd-projects/topic-plugi 主题插件,长连接用于发送订阅主题,符合MQTT规范scheduled-plugi https://github.com/esd-projects/scheduled-plugi 定时任务插件phpuit-plugi https://github.com/esd-projects/phpuit-plugi 单元测试插件blade-plugi https://github.com/esd-projects/blade-plugi blade渲染插件csvreader-plugi https://github.com/esd-projects/csvreader-plugi 读取解析csv的插件process-rpc-plugi https://github.com/esd-projects/process-rpc-plugi 进程通讯插件saber-cloud-plugi https://github.com/esd-projects/saber-cloud-plugi 声明试Web客户端,提供微服务访问circuitbreaker-plugi https://github.com/esd-projects/circuitbreaker-plugi 微服务的熔断器插件cosul-plugi-plugi https://github.com/esd-projects/cosul-plugi cosul插件,提供服务注册,选举Docker运行环境(由aythik提供)➜dockerru-it--rm-p8080:8080-v$PWD:/dataregistry.c-beijig.aliyucs.com/aythik/esd:latest___________________|____/___||_\|_\_____||_(_)_________|_|\___\||||||_)||||'_\|__||'_`_\/_\||______)||_|||_<||_||||||_|||||||__/|_____|____/|____/|_|\_\\__,_|_||_|\__|_|_||_||_|\___|ESDframeworkRutimeEvirometversio1.5authorbyaythikroot@f41132062911:/data#

dockerru-it--rm-p8080:8080-v$PWD:/dataregistry.c-beijig.aliyucs.com/aythik/esd:latest

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

性能

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

worker_um=4

swooleab压测输出hello平均5.9QPS万

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

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

压测数据来自:A-Smile

功能介绍

ESD 是一个免费开源的,快速、简单的基于 Swoole4.3 最新特性的 PHP 协程开发框架。由 SwooleDistributed 与 EasySwoole 作者打造。ESD 可用于构建高...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论