经过1个半月的开发,summer终于第一个预览版本雏形初现,一个月来,反反复复的修改过很多个版本,也完成了很多次重构和代码删减,保持最简功能。今天完成了包的拆分,目前大致结构如下:
总体架构
代码结构
框架基础包
核心拆分成了3个包:
- suframe/core 核心代码和组件库
- suframe/proxy 服务注册代理中心基础库
- suframe/service 服务基础库
应用
应用还是按之前的拆分为:
- suframe/summer 用于创建服务
- suframe/summer-proxy 用于创建服务注册代理中心库
应用和基础包不同
基础包包含基础代码,用于composer包管理,例如:
composer install suframe/core。
而应用用于创建项目,利润:
composer create-project suframe/summer-proxy=@dev
composer create-project suframe/summer=@dev [你的应用名]
由于还没发布正式版本,会经常更新,所有库只用的dev-master,方便开发,所以创建项目需要用“=@dev”
功能和特点
此次预览版实现了如下
功能:
- API接口代理转发
- 服务自动注册
- 服务自动通知更新
- 服务状态检测,自动剔除无效服务
- 服务直接rpc通信
特点:
- 不依赖第三方应用的简易服务注册中心
- 通过命令可更新本地.phpstorm.meta.php文件,实现无侵入rpc调用和代码提示(phpstrom开发工具)
测试
说了这么多,直接上手测试下
测试环境:
Ubuntu 18.04LTS(win10子系统), php7.2+, composer, swoole扩展
- 设置阿里composer镜像(已设置可跳过)
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 创建summer-proxy代理服务
composer create-project suframe/summer-proxy=@dev
cd summer-proxy
php app/summer tcp:start
//或者后台运行
php app/summer tcp:start -d
- 创建后端服务
非后台运行的模式下,需要新开命令行窗口
composer create-project suframe/summer=@dev demo
cd demo
php app/summer tcp:start
demo可以修改为你自己的服务名称
注册的api根路径在 app/config/app.php 中修改
服务的端口和ip在 app/config/tcp.php 中修改
ok, 访问:http://127.0.0.1:8080/demo/demo/search
恭喜你,测试成功!
- rpc调用。
非-d模式下,新建窗口
1.按上个步骤,再次创建个服务,命名为user, 修改config/app.php path为/user, config/tcp.php的端口为8082,然后启动服务
然后下面操作进入demo服务目录
2.同步rpc接口
//demo目录
php app/summer rpc:sync
3.修改api/demo/Search代码为远程调用
<?php
namespace app\api\demo;
class Search{
public function run(){
return SRpc::route('/user/Demo')->getList('summer');
}
}
由于目前没有做热更新,所以重启下服务
php app/summer tcp:restart //非-d模式直接ctrl+c终止服务重新start即可
然后再次访问
ok, 访问:http://127.0.0.1:8080/demo/demo/search。
所以rpc服务的个开发流程就很简单了,在app/rpc下开发服务,其他端运行下sync即可用SRpc::rout('')进行调用
后续开发
- 后端服务的热更新,计划用php的inotify和swoole的event完成开发模式下的代码热更新
- 选择或者开发基础库,例如db,cache,log等等。
- 开发基础后端服务,例如user用户,order订单,product商品,store商家,pay支付等等,到时候开发个服务市场,需要什么服务下载下来,运行即可。