Swoole 分布式通讯框架 SwooleDistributed

Apache 2.0
PHP 查看源码»
跨平台
2016-07-25
开源中国股瞎

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服务组件的开发,结合消息队列系统实现分布式的异步任务。

安装须知:

  1. php 7.0
     2.需要使用最新版的swoole,请通过github下载编译swoole,1.8.7在php7.0下存在bug不建议使用
     3.需要redis支持,安装redis扩展  swoole编译时选择异步redis选项
     4.需要composer支持,安装composer,运行composer install安装依赖
     5.如需集群自行搭建LVS  

运行:

  1. php start_swoole_server.php start
       启动swoole server服务器
     2.php start_swoole_dispatch.php start
       启动swoole dispatch服务器
     3.单独启动swoole server不具备分布式特性,一台物理机只允许启动一个swoole server
     4.swoole dispatch服务器可以和swoole server放在一个物理机上,一台物理机只允许启动一个swoole dispatch
     5.可以启动多台swoole server和多台swoole dispatch搭建分布式系统(至少1台LVS,2台swoole server,1台swoole dispatch,1个redis)
     6.单独启动swoole server可作为单机服务器。
     7.修改config目录下配置,改为你自己的配置。
     8.swoole server与swoole dispatch 必须在同一个网段。swoole dispatch无需配置,swoole server会自动发现
     9.swoole server与swoole dispatch 都支持动态弹性部署,随时热插拔。swoole dispatch上线后30秒内被swoole server发现并建立连接
     10.内置controller,model,task 3大模块
     11.swoole server与swoole dispatch都被设计成无状态服务器,所有的信息共享都通过redis
     12.最新版采用了异步redis进行数据存储,通过开启一个新的redis连接池进程,利用addProcess和sendMessage技术进行结果分发,优雅解决异步问题。
     13.注意taskproxy为单例,不要变成成员变量使用,用到时load

SD框架为Docker提供了部署环境的镜像,包含PHP7.1以及所有框架需要的扩展和工具。

也提供了资源编排模板帮助快速构建SD集群环境。

Docker书籍

如果对Docker和Docker-Compose不熟悉的可以恶补下。
Docker — 从入门到实践

安装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

资源编排

集群环境我们可以通过资源编排来进行部署

  1. 通过上面步骤制作专属镜像

  2. 进入APP文件目录,打开docker-compose.yml进行编辑

  3. 执行docker-compose up部署

这里说明下注意事项

  1. dvc是数据卷容器,进行挂载代码动态更新的。

  2. consul服务器可以自行部署成集群模式,模板中是单例。

  3. sd的image填写为你生成的镜像名称比如上面的mysd。

  4. SD框架提供了环境变量

环境变量

SD框架提供了环境变量,便于使用Docker部署

SD_NODE_NAME

更换Consul的Node_NAME

SD_CONFIG_DIR

设置config配置文件的子目录

SD框架文档地址:http://docs.youwoxing.net

的码云指数为
超过 的项目
加载中

评论(3)

mickelfeng
mickelfeng
主要用在哪些方面
海诺者
海诺者
最近这方面的好多啊,比如#zanphp# 也比如这个 还有 swoole 框架本身就带了车轮互联中的一些服务化治理的实现 #SwooleDistributed#
开源中国股瞎
开源中国股瞎
#SwooleDistributed#基于swoole扩展的分布式通讯框架

SwooleDistributed 发布开发者工具 SDHelper

SDHelper SDHelper是SwooleDistributed隆重推出的开发者工具,配合最新版本的SD框架可以实现远程断点调试和代码覆盖率检测的功能,无需安装xdebug扩展。 SD远程断点调试 我们打开工具选择SD调...

2018/06/29 17:39

SD 框架 2.7 版本发布助力企业开发

选择SD框架助力企业开发 今年年底历时2年多的迭代,这是SD框架硕果满满的一年,通过不断的迭代和改进SD框架已经在圈内有良好的口碑,不少新生的框架借鉴了SD的设计思想,SD框架也被不少创业型...

2017/11/24 14:39

Swoole 分布式通讯框架 SwooleDistributed 2.6 正式版发布

SwooleDistributed2.6正式版发布 本次发布的版本包含几个重大功能更新。 1.中间件模块 SD框架引入了中间件过程,消息的传递流程如下。 message->pack->middleware1(before)->middleware2(be...

2017/10/18 16:15

SwooleDistributed 框架 2.5 发布,全面支持 Docker

SwooleDistributed框架最新版本是2.5.0,前几个版本增加了不少的新特性,我们来回顾下: EventDispatcher支持集群的消息分发组件 ProcessManager用户进程管理以及通讯 Controller,Model支持...

2017/09/14 17:49

SwooleDistributed 2.3.0 版本更新

SwooleDistributed2.3.0版本更新 1.TimerTask,Reload,Consul的服务监听都合并为了一个新进程SDHelpProcess,TimerTask现在通过内部Rpc可以负载均衡的通知各个wokrer进程执行相关任务了。 ...

2017/08/15 16:40

重磅更新 SD 框架 2.2.0-beta 版本来了

SD 框架最新版本 2.2.0 版本带了全新的高度自由的服务器设计体验。 最大的变化是开发者简单的修改配置就可以自由的开启多个端口,并且为每个端口配置不同的协议,并且在框架内部会自动转换协...

2017/07/27 16:08

SD 框架更新至 2.1.1 版本,可通过 Composer 一键安装

SD框架更新至2.1.1版本可以通过Composer一键安装。 {   "require": {     "tmtbe/swooledistributed":">2.0.0"   },  "autoload": {     "psr-4": {       "ap...

2017/07/12 11:05

SwooleDistributed 1.7 发布,不需纠结同步和异步

SwooleDistributed 1.7更新 修复redis和mysql的一些bug,统一同步和异步的调用方法和回应结果的结构。redis基本所有的命令均已测试和统一。 增加了单元测试模块。 增加了mysql,redis,contr...

2017/01/04 18:08

SwooleDistributed v1.2 发布,分布式通讯框架

SwooleDistributed v1.2 发布了。 更新内容: 完善协程,协程中允许使用异常。 controller中添加了异常的回调,方便统一处理异常回复客户端。 swoole 分布式通讯框架 开发交流群:569037921...

2016/09/09 18:20

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

php开发资源大全/类库大全

依赖管理( Dependency Management ) 用于依赖管理的包和框架 Composer / Packagist - 一个包和依赖管理器. Composer Installers - 一个多框架Composer库安装器 pickle - PHP扩展安装器 Melo...

2018/10/02 16:57
50
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部