在完成基础对服务注册发现等功能后,如果要写业务,还是需要一套比较好用对后端框架作为支撑。
选了一大圈没找到满意的,准备自己写,发现找组件,组合这些组件也是很大的工程,而且代码质量不能保证。
综合一下,就选了使用人数较多,门槛较低对thinkphp6, 由于tp6正式版还没有出来,所以在开发版上进行集成。等tp6正式版发布,我也发布个summer正式版,哈哈哈,tp也有轻量级对微服务化架构支撑了。
整合需求
- 无侵入
- 低配置
整合方案
基于think-swoole开发suframe/think进行集成,包地址:https://packagist.org/packages/suframe/think
大致开发思路:
- 新增thinkphp对services,用于增加console命令
- 初始化配置文件
- 启动tcp服务,自动注册
- 增加rpc接口同步
测试
接下来完整的走下开发流程
1. 安装summer代理网关
composer create-project suframe/summer-proxy=@dev
cd summer-proxy
php app/summer tcp:start
2. 安装tp6
composer create-project topthink/think=6.0.x-dev tp
cp .example.env .env
修改.env 内容:APP_DEBUG = true,打开调试模式
3. 修改composer.json(重要)
这步很重要,因为suframe-think还在开发版,没有发布正式版,只能先安装dev版
增加到底部如下
{
"minimum-stability": "dev",
"prefer-stable": true
}
4. 安装suframe-think
composer require topthink/think-swoole
composer require suframe/think
5. 增加测试文件
创建app/rpc目录,新增HelloRpc.php,内容如下:
<?php
namespace app\rpc;
class HelloRpc
{
/**
* hello 测试
* @param null $name
* @return string
*/
public function run($name = null){
return 'hello ' . $name;
}
}
6. 开始测试
- 启动rpc服务
php think swooleTcp
- 同步rpc接口
新窗口打开命令行
php think swooleTcp sync
此时config目录下会有个.phpstorm.meta.php,这个就是用于rpc提示对文件,当然这个是用于phpstorm编辑器
- 增加测试action
打开app/controller/Index.php增加action,
public function rpc($name = 'ThinkPHP6')
{
$rs = [
\suframe\core\components\rpc\SRpc::route('/demo/HelloRpc')->run(1111),
(new \app\rpc\HelloRpc())->run(2222)
];
return \think\response\Json::create($rs);
}
这里用绝对路径而不是use是因为好多朋友直接用记事本编辑,没有自动引入use
suframecorecomponentsrpcSRpc::route(' 这句代码的时候,输入/ 会提示出所有对rpc接口,就是前面sync的时候创建对
- 启动tp6
php think php
然后访问:http://127.0.0.1:8000/index/rpc
总结
来看看我们启动了些什么服务
- suframe/proxy 代理网关和服务注册发现 A
- suframe/think 基于tp6的rpc服务 B
- think run tp6的服务启动 C
浏览器访问的流程:
浏览器 => c 控制器 => rcp调用 c的rpc接口
当然你可以重新起一个,修改swooleTcp里面对端口和注册的path即可
到此summer已经集成到tp6了,至于统一日志和统一配置后面来慢慢处理,这个涉及到tp的一些流程监控,属于定制。
一起high起来~~~