summer项目开发八:第一个预览版本

经过1个半月的开发,summer终于第一个预览版本雏形初现,一个月来,反反复复的修改过很多个版本,也完成了很多次重构和代码删减,保持最简功能。今天完成了包的拆分,目前大致结构如下:

总体架构

3D Network.png

代码结构

框架基础包

核心拆分成了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

2.jpg

恭喜你,测试成功!

  • 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支付等等,到时候开发个服务市场,需要什么服务下载下来,运行即可。

标签: 无

发表评论: