PHP高性能分布式应用服务器框架-SwooleDistributed

选择SD框架助力企业开发

今年年末历时2年多的迭代,这是SD框架硕果满满的一年,经过不断的迭代和改进SD框架已经在圈内有良好的口碑,很多新生的框架借鉴了SD的设计思想,SD框架也被很多创业型公司和大型企业使用。git

SD框架究竟是什么技术

SD框架全称SwooleDistributed,从名称上看一个是Swoole一个是Distributed,他是基于Swoole扩展的能够分布式部署的应用服务器框架。
借助于PHP的高效开发环境,Swoole的高性能异步网络通讯引擎,以及其余的高可用的扩展和工具,SD框架提供给广大开发者一个稳定的高效的并且功能强大的应用服务器框架。github

入门成本

老实的说相对比目前热门的FPM框架来讲,SD的入门成本相对仍是比较高的,由于设计理念不一样以及和传统PHP-FPM环境彻底不一样的运行环境,对于长时间使用LAMP(LANP)技术的开发人员来讲会有一段时间的适应期,若是开发应用简单涉及到的系统复杂度低,那么SD上手仍是比较容易,根据简单的例子和文档几乎当即就能开启SD的探索之旅,可是若是开发的是复杂的应用那么SD包含的众多组件仍是须要你慢慢熟悉上手的。sql

SD框架到底包含哪些强大的功能呢

咱们这里列举下SD提供的各类各样的功能以及模块组件服务器

  • 混合协议
    SD框架支持长链接协议TCP,WebSocket,短链接协议HTTP,以及UDP。
    经过配置开放不一样的端口开发者能够轻松管理不一样的协议,而且能够共用一套业务代码,固然你能够经过智能路由进行代码的隔离。
    长链接能够配置不一样的数据传输协议,好比二进制协议文本协议等等,经过框架提供的封装器解包器接口能够自定义各类各类的协议封装,而且各类协议之间能够自动转换,好比你经过广播发送一个信息,该信息流向不一样客户端,客户端间采用不一样协议,那么框架会根据不一样的端口自动转换不一样的协议封装。
    你也能够经过Http给全部长链接客户端发送推送消息,相似这种混合协议协做的业务在SD框架上会异常简单。
  • MVC以及智能路由
    框架的设计是MVC架构,其中每个层级均可以继续划分子层级,开发者能够将Controller继续分层经过不一样文件夹进行管理,也能够将Model进行细分,划分为业务层和数据层,这都看开发者自身的系统设计。智能路由将处理解包器解包后的数据,负责将这些数据传递到Controller层。
  • 中间件
    SD框架还提供了中间件,中间件能够对流入的数据进行处理,好比清理异常数据,修改数据,流量统计,搜集日志等功能。中间件能够设置多个,他们和端口进行绑定。
  • 对象池
    SD框架内大多数的对象都使用了对象池技术,对象池技术有利于系统内存的稳定,减小GC的次数,提升系统的运行效率,事实证实对象池对系统稳定作出了极大的贡献,开发者也可使用这一套对象池技术,增长对对象的复用,减小GC和NEW的频率,对系统毛刺现象和内存泄露方面都有很大的稳定性提高。
  • 异步客户端以及链接池
    Mysql,Redis,Http客户端,Tcp客户端,等等其余更为复杂的客户端,在SD框架中均为异步的模式,异步解决了系统总体的并发能力,但异步客户端须要提供链接池维持,SD框架提供了链接池,开发者不须要本身管理链接池,只须要使用便可。
  • 协程
    异步事件回调解决的是并发性能,但形成的是业务代码的混乱。SD框架提供了协程解决了这一问题,经过yield关键字提供对异步的同步写法,消除了业务书写上的大量回调嵌套,你能够经过yield+同步的写法实现异步的性能。
    协程提供了一整套完整的体系,包括超时,异常,休眠,多路选择,以及建立用户协程等等功能。
  • 定时任务
    顾名思义定时执行的任务。
  • 任务投递
    支持将耗时任务投递到Task进程。
  • 自动Reload
    能够开启框架的自动Reload功能,这样代码修改会被当即响应。

上面描述的都是一些基础功能,你们开发应用时常常用到的,那么下面则是一些高级功能。网络

  • 集群以及微服务
    框架提供集群部署,经过开启集群开关,部署Consul工具服务器,咱们就能够开启集群之旅,框架中消息功能都是支持集群环境的。经过暴露API,监听API,咱们能够实现微服务,微服务中咱们又提供了健康监控,熔断,超时,负载均衡,请求迁移等等功能。
    集群采用的是对等网络,没有中间节点,没有单点隐患,设计理念以下图所示。
    架构

    image
    image

  • 订阅与发布
    SD提供的订阅发布功能也是支持集群环境,而且它严格的按照MQTT所定义的订阅发布规范,而且实现了全部的功能。这恐怕是最好最优秀的订阅发布功能了。并发

  • 事件派发
    跨进程跨服务器的事件派发功能,不少SD框架的基础设施都是基于这个搭建的。
  • 用户进程管理以及进程间RPC
    SD框架从新封装了用户进程,开发者能够启动本身的用户进程,用户进程能够是异步的也能够是同步的,也是支持各类链接池和协程,用户进程的用处不少,一样框架也支持用户进程和Worker进程间互相RPC调用。
  • 集群下的定时任务
    经过Consul能够设置定时任务,而且会同步到集群全部的服务器上去执行,集群服务器会选举出一个Leader,能够经过获取是不是Leader来决定这个任务是否被执行。
  • Context上下文
    这个是在消息处理整个流程中被共享的上下文,很实用,很方便。

接下来介绍的是SD特点组件负载均衡

  • 异步AMQP客户端以及分布式任务系统
    消息队列协议AMQP,框架提供了一个支持AMQP协议的异步客户端,能够和RabbitMQ联动,经过框架提供的分布式任务组件,能够搭建分布式任务系统。
  • 异步MQTT客户端
    异步的MQTT客户端能够和MQTT服务实现订阅与发布
  • MQTT简易集群服务器
    支持QOS0级别的简易MQTT服务器,支持集群部署。
  • 服务器监控系统
    提供了一个服务器监控后台,能够对集群进行监控,也能够监控某一台服务器的具体运行情况。
    下面是一些截图




SD框架远远不止如今

SD框架一直在高速发展中,有更多开发者的参与才会有更好的将来。
附带SD框架的文档以及官网
官网
文档
GitHub
若是你喜欢,请打个星星支持下~框架

相关文章
相关标签/搜索