优雅的PHP异步协程框架,支持服务化调用,支持统一配置中心,适用于API、Http Server、Rpc Server、构建微服务、中间件。适用于高并发,io密集型场景
Clone or download
fucongcong Merge pull request #34 from fucongcong/dev
[新增]增加nginx服务
Latest commit b0fe7e9 Jul 26, 2018

README.md

Group-Co

Build Status Code Climate

为什么写这个框架?

  • 利用协程特性以同步方式来编写异步代码,增强可读性。
  • 将swoole的异步特性与传统框架的MVC相结合。
  • 可以用作api也可以用作http server,rpc server.
  • 目前实现了以Zookeeper、Redis、Mysql为注册中心的服务化治理.

如何使用,与传统框架的区别?

  • 框架基本使用与传统框架基本一致,路由,控制器,服务层,数据层。
  • 在异步调用的地方需要以yield关键词来触发协程切换

生产环境使用

  • GroupCo框架目前已经全线用于我们团队,日均处理请求百万次,基础服务调用耗时平均约为0.1ms

特性

  • 全异步协程调度,支持高并发
  • 服务发现,客户端缓存、心跳检测、服务监听
  • 统一配置中心
  • 异步TCP,HTTP客户端
  • 异步日志
  • 异步文件读写
  • 异步Mysql
  • 异步Mysql事务处理
  • 异步Redis
  • 支持Mysql连接池,Redis连接池
  • SOA服务化调用,内部封装完整的RPC通信,服务端采用异步Task处理后合并数据并返回。
  • 异步TCP客户端支持并行、串行调用
  • 支持EOF结束符协议、自定义网络通信协议,支持json化、php序列化包体,支持gzip。
  • Twig、Doctrine支持视图、服务数据层
  • 单元测试覆盖

文档总览

案例Demo与最佳实践(即将更新)

BUG反馈

如果你在使用过程中遇到安全或者框架层面使用bug,请提issue。

理想的架构模型

与Go的协程的区别

基于Swoole的异步与php的Generator实现的异步协程,而go语言是内置协程,这是本质上的区别。swoole2.0以上版本开始支持内置协程,在触发io时会触发协程调度,不过还未稳定,但是重新定义了PHP,使得PHP可以支持更大的并发,做更多的事情。