EasySwoole 2.x 正式发布,企业级服务框架 - 开源中国社区
Float_left Icon_close
EasySwoole 2.x 正式发布,企业级服务框架
easySwoole 2018年03月26日

EasySwoole 2.x 正式发布,企业级服务框架

easySwoole easySwoole 发布于2018年03月26日 收藏 14 评论 26

【腾讯云】0基础建站 网站模板9元起! >>>  

EasySwoole

EasySwoole 是一款基于Swoole Server 开发的常驻内存型的分布式PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。EasySwoole 高度封装了 Swoole Server 而依旧维持 Swoole Server 原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务。

特性

  • 强大的 TCP/UDP Server 框架,多线程,EventLoop,事件驱动,异步,Worker进程组,Task异步任务,毫秒定时器,SSL/TLS隧道加密

  • EventLoop API,让用户可以直接操作底层的事件循环,将socket,stream,管道等Linux文件加入到事件循环中

  • 定时器、协程对象池、HTTP\SOCK控制器、分布式微服务、RPC支持

入门成本

相比传统的FPM框架来说,EasySwoole是有一点的入门成本的,许多设计理念及和环境均与传统的FPM不同, 对于长时间使用LAMP(LANP)技术的开发人员来说会有一段时间的适应期,而在众多的Swoole框架中,EasySwoole上手还是比较容易,根据简单的例子和文档几乎立即就能开启EasySwoole的探索之旅。

优势

  • 简单易用开发效率高

  • 兼容swoole 1.x与swoole 2.x

  • 并发百万TCP连接

  • TCP/UDP/UnixSock

  • 支持异步/同步/协程

  • 支持多进程/多线程

  • CPU亲和性/守护进程

常用功能与组件

  • HTTP控制器与自定义路由

  • TCP、UDP、WEB_SOCKET控制器

  • 多种混合协议通讯

  • 异步客户端与协程对象池

  • 异步进程、自定义进程、定时器

  • 集群分布式支持,例如集群节点通讯,服务发现,RPC

  • 全开放系统事件注册器与EventHook

  • Redis队列消费与订阅

项目主页
https://github.com/easy-swoole/easyswoole/

基准测试

使用阿里云 1核1G 未做任何内核优化的实例作为运行 easySwoole 的测试机器,同时内网环境下部署另一台未经任何优化的施压机,详细配置如下

配置 测试机 施压机
操作系统 CentOS 7.4 CentOS 7.4
vCPU 1 2
内存 1 GB 4 GB
PHP 7.2 ----
Swoole 1.9.21 ----

基准测试在默认的 Index 控制器输出 'Hello World'

<?php   
namespace App\HttpController;  
use EasySwoole\Core\Http\AbstractInterface\Controller; 
class Index extends Controller {      
  function index()  {          
      $this->response()->write('Hello World');      
  }  
}

执行 ab 测试,其中 172.18.95.34 为测试机器的内网IP,50万次请求测试结果如下

ab -c 100 -n 500000 http://172.18.95.34:9501/

This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.18.95.34 (be patient)
Completed 50000 requests
Completed 100000 requests
Completed 150000 requests
Completed 200000 requests
Completed 250000 requests
Completed 300000 requests
Completed 350000 requests
Completed 400000 requests
Completed 450000 requests
Completed 500000 requests
Finished 500000 requests


Server Software:        swoole-http-server
Server Hostname:        172.18.95.34
Server Port:            9501

Document Path:          /
Document Length:        63 bytes

Concurrency Level:      100
Time taken for tests:   41.405 seconds
Complete requests:      500000
Failed requests:        0
Non-2xx responses:      500000
Total transferred:      119000000 bytes
HTML transferred:       31500000 bytes
Requests per second:    12075.71 [#/sec] (mean) Time per request:       8.281 [ms] (mean)
Time per request:       0.083 [ms] (mean, across all concurrent requests)
Transfer rate:          2806.66 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.5      1       4
Processing:     2    7   2.4      7      66
Waiting:        1    6   2.4      6      66
Total:          3    8   2.4      8      67

Percentage of the requests served within a certain time (ms)
  50%      8
  66%      9
  75%      9
  80%      9
  90%     10
  95%     10
  98%     11
  99%     12
 100%     67 (longest request)
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:EasySwoole 2.x 正式发布,企业级服务框架
分享
评论(26)
精彩评论
4

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?
即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子
3
在我眼里,脱离了fpm的方式,我就直接上golang了。
2

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。
其实吧,php高效的开发速度,还是其他语言无法比拟的。而且对于一个企业来说,其实突然换一个语言,还是很有压力的
2
1
我也写过一个基于 Workerman 的 Web 开发框架,很适合做 API。
https://github.com/xpader/Navigation
最新评论
0
Добавьте страницу сериала в закладки, чтобы легко находить продолжение понравившегося кино. http://torrent-online.org/1112-tolko-silneyshie.html Добавьте эту страничку в закладки на ПК и следите за новинками кино. http://torrent-online.org/1492-koloniya.html
Заходите и смотрите или качайте лучшие фильмы и сериалы у нас на сайте <a href=http://torrent-online.org>кино онлайн смотреть</a>
0
支持
0
为啥关于php的会有那么多评论?
1
我也写过一个基于 Workerman 的 Web 开发框架,很适合做 API。
https://github.com/xpader/Navigation
0
golang 都是小朋友
0

引用来自“海淀游民”的评论

企业级是个什么标准?
目前好像还没有php的企业级开发标准
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?

引用来自“福嘞娃”的评论

即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子

引用来自“回去干活”的评论

那是你没开发过服务吧。你可能一直都在http的生命周期情况下。因为http是无状态,没有共享内存的。

引用来自“福嘞娃”的评论

你说的这些与golang有个鸟关系吗?请把你脱离了FPM就换golang的理由阐述一遍
技术渣渣说的话 golang 去吧
0
很好用,已使用半年 好评
0
很好用 正在用
0
������ 不知道作者会不会提供一个Windows下的开发环境。
让简单继续下去。。。。
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。
支持
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?

引用来自“福嘞娃”的评论

即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子

引用来自“回去干活”的评论

那是你没开发过服务吧。你可能一直都在http的生命周期情况下。因为http是无状态,没有共享内存的。
你说的这些与golang有个鸟关系吗?请把你脱离了FPM就换golang的理由阐述一遍
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?

引用来自“福嘞娃”的评论

即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子
那是你没开发过服务吧。你可能一直都在http的生命周期情况下。因为http是无状态,没有共享内存的。
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。
我记得很早之前你鼓吹的可是C++,现在怎么换成Go了呢?哈哈.
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?

引用来自“福嘞娃”的评论

即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子
说得好,基于Swoole开发的PHP程序本质上就是一个跑在PHP-CLI下的服务.
要说区别,那也是PHP-CLI和PHP-FPM的区别.
Swoole本质就是一套供PHP使用的异步协程API,仍然是PHP生态圈.
而Golang,则完全是不同生态的另一门静态编译型语言,跟PHP差别太大.
0
swoole的框架这个是第二个吗?
swoft的文档,看着真是捉急,完全不知道从哪儿下手
4

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang

引用来自“Minho”的评论

和井底之蛙有什么关系吗?
即使用上了swoole,开发速度与开发习惯与FPM并没什么太大的区别,说什么脱离了FPM就换golang 纯属就是扯犊子
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。

引用来自“冰力”的评论

@回去干活 井底之蛙,动不动就golang
和井底之蛙有什么关系吗?
0
swoole大法好
0

引用来自“回去干活”的评论

在我眼里,脱离了fpm的方式,我就直接上golang了。
@回去干活 井底之蛙,动不动就golang
顶部