资讯专栏INFORMATION COLUMN

手把手教你5分钟用 PHP 搭建一个高性能服务化后端框架

Charles / 1039人阅读

摘要:前言一直以来,因为标准应用方式是配合或使用,而被认为不适合做服务化后端。下面我就介绍如何用来搭建一个高性能的服务化后端框架,并且实现一个客户端调用例子。服务端我使用的框架叫,地址在这里。

前言

一直以来,PHP 因为标准应用方式是配合 php-fpm 或 apache mod 使用,而被认为不适合做服务化后端。但是随着 Workerman 和 Swoole 这些常驻进程模块的出现,PHP 其实早就已经合格。

下面我就介绍如何用 PHP 来搭建一个高性能的服务化后端框架,并且实现一个客户端调用例子。

服务端

现在 PHP 圈子里最流行的框架是 Laravel, Lumen 是它的精简版,保留了 Container(依赖注入), artisan(命令行生成数据表)等优点。

服务端我使用的框架叫 Luke,Github 地址在这里。Luke 是 Lumen 的非官方分支,在 Lumen 上层做了一层封装,剥离了用于 http 的路由,同时引入 Workerman。

现在在你的工作目录执行下面命令生成项目代码

composer create-project luke/luke=dev-luke rpcserver
cd rpcserver

这时在 servers 目录下有 http.php 和 jsonrpc.php 两个文件,分别对应 http 服务 和 jsonrpc 服务。现在我们进入 rpcserver/app/Http/Controllers,编辑文件 ExampleController.php,增加下面代码

public function show($name)
{
    return "Hello $name, this is Luke.";
}

这样我们服务端就已经搭建好了,现在回到 rpcserver 目录,执行下面命令开启服务

php servers/jsonrpc.php start

这时 console 会输出

Workerman[servers/jsonrpc.php] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.4          PHP version:7.2.1
------------------------ WORKERS -------------------------------
user          worker        listen                 processes status
simon         none          jsonNL://0.0.0.0:8000   1         [OK] 
----------------------------------------------------------------

表示服务正在正常运行。

本例子只给 Workerman 一个任务进程,更多设置和守护进程方式可以查看 Workerman文档

客户端

现在我们回到项目根目录,另开一个 console,输入下面命令新建客户端目录,引入模块

mkdir client
cd client
composer require luke/client

这时 vendor/luke/client 目录下已经有了两个文件 config.php 和 test.php,他们分别是配置和客户端的例子。我们不管他们,在项目目录下新建 test.php 文件,输入下面的代码并保存

 [
        "hosts" => ["127.0.0.1:8000"]
    ]
];

Client::config($config);
$client = Client::instance("Example");
$ret = $client->show("开发者");
var_dump($ret);

现在执行

php test.php

如果看到输出

array(1) {
  "result" =>
  string(30) "Hello 开发者, this is Luke."
}

那么恭喜你!你的 rpc 服务端和客户端已经搭建好了。现在将它应用到正式项目中吧。

Workerman 与 Swoole

作为 PHP 的常驻方案,两个都非常优秀,而 Swoole 在社区的活跃度比 Workerman 高。但因为两者性能不分伯仲,而且 Workerman 是用纯 PHP 开发,代码更为可控,因此 Luke 选择了 Workerman。然而两者在调用方式非常接近,只要对代码稍加修改就能改成使用 Swoole。

Workerman 的并发性能可以参考这里

后记

在生产环境使用服务化架构,通信部分除了协议外,还要注意加密。这部分 Luke 现在还没有提供,用户可以用简单的加密算法自己实现。
当服务变多后,还需要添加自动发现的功能,这点在 Luke Client 的项目主页提供了一些思路。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28186.html

相关文章

  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    sf190404 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Airmusic 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Jeffrrey 评论0 收藏0
  • 把手教你基于WordPress搭建自己的个人博客

    摘要:一步一步教你基于搭建自己的个人博客,作为成熟的框架,美观,方便,插件多,更新频繁,非常适合个人博客与网站的搭建,适合新手,无需太多的代码基础。原文链接手把手教你搭建自己的网站购买购买云服务器为了搭建个人网站,首先肯定需要一个云服务器。 一步一步教你基于WordPress搭建自己的个人博客,WordPress作为成熟的CMS框架,美观,方便,插件多,更新频繁,非常适合个人博客与网站的搭建...

    vpants 评论0 收藏0
  • 把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

    摘要:通过跟踪请求的处理过程,来对应用系统在前后端处理服务端调用的性能消耗进行跟踪,关于的介绍可以看这个链接,大规模分布式系统的跟踪系统作者刀把五链接来源知乎著作权归作者所有。 手把手教你搭APM之Skywalking 前言 什么是APM?全称:Application Performance Management 可以参考这里: 现代APM体系,基本都是参考Google的Dapper(大规模...

    ingood 评论0 收藏0

发表评论

0条评论

Charles

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<