SwooleDistributed 是swoole分布式系统的实现,他提供了一套基于swoole扩展的分布式通讯框架。
结构图:
SwooleDistributed 不仅提供了分布式搭建的必要设施,还提供了4大组件帮助你提高编写代码的效率,你既可以部署成单机模式也可以搭配dispatch模块构建集群系统。
有别于传统的MVC架构,SwooleDistributed 主要应对的是rpc服务或者是通讯服务,也就是说MVC中的View模块是没有实际意义的,所以在SwooleDistributed 中仅存在Model和Controller,另外为了方便开发我们额外添加了2个组件分别是Task和Timer。
Task组件主要是处理异步任务,由于Task的设计结构简单只适合用于辅助swoole的worker进程,处理简单并不复杂的异步操作,如果你将他作为复杂耗时并且频繁调用的组件那是不可取的。
Timer是封装好的定时器,他和Task组件关系密切,你可以通过Timer进行定时任务。
目前提供便利的还有异步的Redis连接池,你可以方便简单的使用redis异步服务而不用担心连接池的问题,我们已经优雅的解决了。但值得注意的是所有的异步服务都只允许在worker进程中调用,task进程只能调用同步服务。
未来将要实现的:
1.异步的mysql服务,建立管理mysql连接池。
2.mysql语法构建器,帮助快速构建mysql语句。
3.Job服务组件的开发,结合消息队列系统实现分布式的异步任务。
安装须知:
运行:
SD框架为Docker提供了部署环境的镜像,包含PHP7.1以及所有框架需要的扩展和工具。
也提供了资源编排模板帮助快速构建SD集群环境。
如果对Docker和Docker-Compose不熟悉的可以恶补下。 Docker — 从入门到实践
首先建议你注册阿里云账号,访问阿里云Docker镜像仓库 Docker镜像仓库
申请你的专属加速器地址,通过下面的文档安装以及配置好你的Docker。
SD框架提供2种镜像
该版本镜像是基础镜像包含SD框架的运行环境,但不包括Composer安装的代码。
该版本镜像是完整的SD框架,包含Composer安装的代码以及Install,可以直接运行。
如何选择镜像?
如果你的composer.json没有多余的依赖那么可以直接选择sd的镜像,否则请通过swoole基础镜像进行制作。
通过swoole基础镜像制作专属的运行环境。
1. 下载模板
git clone https://github.com/tmtbe/swoole-docker.git
找到SD文件夹,将你的composer.json拷贝进去覆盖。
2. 制作镜像 进入SD文件目录,执行下面代码。
docker build -t mysd .
注意最后的一个‘.’,不要忽略。
3. 运行镜像
docker run mysd
4. 挂载代码目录
将你的代码拷贝到/apps目录下,或者相应的做些调整,我们只需要挂载src目录。
docker run -v /apps/src:/apps/src mysd
集群环境我们可以通过资源编排来进行部署
通过上面步骤制作专属镜像
进入APP文件目录,打开docker-compose.yml进行编辑
执行docker-compose up部署
这里说明下注意事项
dvc是数据卷容器,进行挂载代码动态更新的。
consul服务器可以自行部署成集群模式,模板中是单例。
sd的image填写为你生成的镜像名称比如上面的mysd。
SD框架提供了环境变量
SD框架提供了环境变量,便于使用Docker部署
SD_NODE_NAME
更换Consul的Node_NAME
SD_CONFIG_DIR
设置config配置文件的子目录
SD框架文档地址:http://docs.youwoxing.net