基于 Swoole Server 的企业级服务框架 EasySwoole | 软件推介

2018 年 3 月 28 日 开源中国 easySwoole


Apache-2.0

PHP

跨平台

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队列消费与订阅

基准测试


使用阿里云 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'



执行 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)


目前,EasySwoole 2.x 已正式发布:


  • https://www.oschina.net/news/94592/easyswoole-2-x-released


项目详情及源码地址获取:




推荐阅读

2017 年图灵奖得主出炉

使用 Python 代码轻松实现数据可视化

Java 10 正式发布!109 项新特性一览

NGINX 宣布支持 gRPC,可在 1.13.10 中使用

Spring【AOP模块】就是这么简单

点击“阅读原文”查看更多精彩内容

登录查看更多
0

相关内容

用户数据报协议(User Datagram Protocol)
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
67+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
机器学习相关资源(框架、库、软件)大列表
专知会员服务
39+阅读 · 2019年10月9日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
爱奇艺基于AI的移动端自动化测试框架的设计
前端之巅
18+阅读 · 2019年2月27日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
跨框架深度学习可视化框架 VisualDL | 软件推介
开源中国
3+阅读 · 2018年4月26日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
6+阅读 · 2020年4月14日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
3+阅读 · 2018年5月28日
Arxiv
5+阅读 · 2018年1月23日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关资讯
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
爱奇艺基于AI的移动端自动化测试框架的设计
前端之巅
18+阅读 · 2019年2月27日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
跨框架深度学习可视化框架 VisualDL | 软件推介
开源中国
3+阅读 · 2018年4月26日
基于 Storm 的实时数据处理方案
开源中国
4+阅读 · 2018年3月15日
大数据流处理平台的技术选型参考
架构文摘
4+阅读 · 2018年3月14日
相关论文
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
Arxiv
6+阅读 · 2020年4月14日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
3+阅读 · 2018年5月28日
Arxiv
5+阅读 · 2018年1月23日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
5+阅读 · 2015年9月14日
Top
微信扫码咨询专知VIP会员