专栏首页PHP 开发Spiral: 性能卓越的PHP/Golang混合开发框架
原创

Spiral: 性能卓越的PHP/Golang混合开发框架

春节期间,了解到一个“全新”的 WEB 开发框架:Spiral, 最开始引起我的兴趣是从同事那里听说了 RoadRunner. 然后去了解 RoadRunner 的时候看到了 Spiral. 之所以把“全新”用双引号引起来,是因为这个框架其实从 2013 年起就在它的开发团队以及一些企业客户中应用了,经历了各种实际应用场景的考验,Spiral 的功能及其丰富,性能与当前主流的 PHP 框架相比也相当出众。但这个框架源自白俄罗斯,在国内不算知名,他们团队开始重视和梳理开源,也应该是才开始的事情。

性能

Spiral 是一个基于 PHP 和 Golang 的混合开发框架,它的理念是让 PHP 负责业务逻辑(应用程序)的开发,而 Golang 负责底层基础服务,这样一来能够很好地把 Golang 的高性能和 PHP 的快速开发和快速部署结合起来。在 techempower.com 对 PHP 框架性能的测试 中,Spiral 排名第 6,远远超越了 laravel-swoole(13), phalcon(14), hyperf(15), symfony(17), laravel(18), codeigniter(21), cakephp(22)...

image.png

特性

除了性能之外,Spiral 的特性也很丰富,在服务方面,HTTP, Websocket, TCP, GRPC, Queue 一应俱全。组件也非常多,涵盖了 WEB 应用开发、命令行应用开发、GRPC 服务开发的方方面面。在官方的框架介绍页面,可以看到官方组件分为 11 个大类:

  • Skeletons(项目骨架)
  • Core(核心框架)
  • Dispatchers(任务调度)
  • HTTP Extentions(HTTP 扩展)
  • Security and Validation(安全和验证)
  • Database(数据库)
  • Cycle ORM(ORM 工具)
  • Stempler Template Engine(模板引擎)
  • Components(其它组件)
  • Integrations(与其它框架或工具的集成)
  • Development and Assembly(开发调试工具)

每一个大类下面都有多个组件,Spiral 的所有组件完全遵循 PSR-{2, 3, 4, 6, 7, 11, 15, 16,17} 规范来实现。开发者除了使用官方的应用骨架来快速开发 WEB 应用、命令行应用、GRPC 应用之外,也可以利用 Spiral 开源的一系列基础组件来构建自己的项目框架。

如果开发者只有 PHP 语言的知识,那么可以利用官方针对 Spiral 框架定制的二进制版本的应用服务器来获得 Golang 的高性能服务器优势。如果开发者同时还熟悉 Golang,那么除了利用 Spiral 快速开发 PHP 应用之外,还能自行定制 RoadRunner 服务器,在 HTTP, HTTPS/2, GRPC, TCP, WebSocket 等之外,加入更多的服务。

设计理念和架构

Spiral 的设计理念上面已经提到过,是 PHP 和 Golang 的混合运行时。可以理解为 Swoole 和 Laravel 的结合,但与目前的 LaravelS 或者 EasySwoole 这些框架不同之处在于,Spiral 框架下每一个工作进程是完全隔离的,所以你在开发过程中不用担心进程之间相互影响的问题。你在传统 PHP 模式下习惯的一切用法都不会改变,而所有的第三方 PHP 组件,你也可以随意使用。不用定制协程版本的数据库连接池、协程版本的队列服务和 Redis.

image.png

从官方的架构示意图可以看到,常驻内存的和每个工作进程持有的分别是什么部分。开发者需要注意的地方并不多,而且官方提供了 IoC 容器、ORM、配置管理、业务内核、路由和中间件等一系列的组件来处理这些需要注意的问题。

目前 Spiral 团队正在努力完善官方文档,在 spiral/docs 可以看到工作进展,中文文档也在持续翻译中。

接下来我会通过一个系列,介绍 Spiral 从安装、配置,开发,测试到上线部署的全过程。

下一篇文章会介绍 Spiral 框架的项目创建(安装)和配置。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spiral 详细上手指南之安装与配置

    在上一篇《Spiral: 一个性能卓越的PHP/Golang混合开发框架》 中,我介绍了 Spiral 这个基于 PHP/Golang 的高性能混合开发框架,这...

    小李刀刀
  • PHP 不会死 —— 我们如何使用 Golang 来阻止 PHP 走向衰亡

    在过去的十年中,无论是世界 500 强企业或是仅拥有 500 名用户的企业,我的团队都曾为他们开发过软件。在此期间,我的工程团队主要使用 PHP 进行后端开发。...

    猿哥
  • 最终,为什么选择go-kit

    前言 工作这些年,先后经历过两家公司,分别参与过php语言框架的设计和主导过golang技术栈的落地工作,在此过程中有一些感悟和总结。我想以之前我主导的gola...

    李海彬
  • Spiral 官方超完整实战教程

    我在写“Spiral 详细上手指南”的过程其实是一边做官方文档的翻译,一边验证英文版教程中内容的正确性,一边写的。而且涉及到每一个模块和组件,除了在演示项目中简...

    小李刀刀
  • Spiral 详细上手指南之请求和响应

    在上一篇《Spiral 详细上手指南之路由规则》中,相信大家对于 Spiral 框架中的路由配置已经完全掌握了。不过在文章结束的时候,我们创建的控制器针对各种请...

    小李刀刀
  • 盘点7款顶级 PHP Web 框架

    2019年,PHP 代表超文本预处理器(Hypertext Pre-processor)是非常流行的 Web 服务端编程语言,小编今天就来和大家一起盘点7款顶级...

    物流IT圈
  • Go语言之旅:环境搭建

    我是一名做了近十年的dotnet程序员,当然其中还使用过PHP、Javascript(NODEJS)去做过后端开发,从donnet Framework到现在的d...

    杨子翔 josonyang
  • 从php到Golang系统的演变

    工作这些年,先后经历过两家公司,有参与过php语言框架的开发和主导过go语言技术栈的落地工作,在此过程中有一些感悟和总结。我想以之前我主导的go语言技术栈为线索...

    互联网老辛
  • GO笔记之为什么要学习GO

    之类问题经常出现在眼前。以前学语言时倒没怎么关心过这类问题。今年公司由于新业务需要开始全面从PHP转型到Golang。所以我学习它也就是为了工资。额?不能这么俗...

    波罗学
  • 开发直播卖货APP源码,我建议使用PHP做后台

    PHP系统是软件开发常用的开发语言,百度、搜狐、网易的开发中,也使用了它,这足以证明其可靠性和可用性,对于直播卖货APP源码的开发工作,我们也会使用到PHP,...

    手机直播系统源码
  • Go框架比较:goframe、beego、iris和gin

    由于工作需要,这些年来也接触了不少的开发框架,Golang的开发框架比较多,不过基本都是Web"框架"为主。这里稍微打了个引号,因为大部分"框架"从设计和功能定...

    IT大咖说
  • PHP码农在Golang压力下的生存之道-PHP性能优化实践

    随着国内Golang的火爆,phper的生存压力越来越大,在一次内部技术讨论中,gopher甚至提出,要什么php,写php的全部开掉,唉,码农何苦为难码农。 ...

    财主刀刀
  • 高效程序员如何优雅落地需求

    回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也想抽...

    技术zhai
  • 高效程序员如何优雅落地需求总体介绍大数据系统的架构图第三代系统架构第四代系统架构

    美的让人心动
  • 阿里离职后自我创业:从零到百亿互联网金融架构发展史

      回想起从公司成立敲出的第一行代码算起到现在也快三年了,平台的技术架构,技术体系也算是经历了四次比较重大的升级转化(目前第四代架构体系正在进行中),临近年底也...

    美的让人心动
  • 阿里离职后自我创业:从零到百亿互联网金融架构发展史总体介绍下面做详细介绍

    美的让人心动
  • Weibo Mesh的发展

    微博从2013年开发了Java语言的Motan RPC框架,基于此完成了服务化改造。Motan从2013年上线至今经历过每个热点事件,三节高峰的挑战,稳定性和可...

    春哥大魔王
  • 从0开始搭建编程框架——思考

            需求来源于问题。(转载请指明出于breaksoftware的csdn博客)

    方亮
  • 从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践

    本文由马蜂窝技术团队电商交易基础平台研发工程师"Anti Walker"原创分享。

    JackJiang

扫码关注云+社区

领取腾讯云代金券