swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 788 forks source link

swoft 2.0 开发意见收集 #498

Closed inhere closed 5 years ago

inhere commented 5 years ago

swoft 2.0 开发意见收集

鉴于1.0的规划过于庞大,一些组件其实很少人使用,开发团队感觉维护困难。

决定开发2.0:

这里做一些意见收集

去除的功能:

需改进的功能:

新增的功能:

inhere commented 5 years ago

2.0 目标

核心组件

swoft的基础核心,后续的扩展都是基于它们的稳定和扩展性

第二阶梯组件

第二阶梯的功能组件,主要是为了增强swoft的易用性和应用性,提供更完善的功能支持

周边工具

参与贡献

后面 swoft 组织里还是会有很多的项目。

关注2.0进度

https://github.com/swoft-cloud/swoft-component/blob/2.0/CHANGELOG.md

dusong0717 commented 5 years ago

mongodb 驱动支持,消息队列支持:kafka、rabbitmq、beanstalk等 另外demo希望更加完善一些,便于上手开发降低学习成本。

inhere commented 5 years ago

mongodb 驱动支持,消息队列支持:kafka、rabbitmq、beanstalk等 另外demo希望更加完善一些,便于上手开发降低学习成本。

jqcool commented 5 years ago

建议完善中间件,可参考下laravel的,路由可设定参数,中间件可获取 优化验证机制,现有的验证感觉好鸡肋,开发效率相当的低

deepziyu commented 5 years ago

土壤原因,我觉得成为 spring-cloud 那样的生态是不现实的, 倒是能做成 sf 那样, sf 体现了自己对php-fpm 的理解,所写出的组件成了很多现代框架的一砖一瓦。 我觉得 swoft 对 swoole-cli 的理解是最深的,应能能做出这样的贡献。

luguohua0394 commented 5 years ago

希望整合laravel的orm系统

stelin commented 5 years ago

@deepziyu 是的,我们也意识到这个问题,所以重构2.0

jqcool commented 5 years ago

土壤原因,我觉得成为 spring-cloud 那样的生态是不现实的,

这个很有道理,php的特性就是方便快捷,spring-cloud的生态不适phper,适合java转型的

inhere commented 5 years ago

建议完善中间件,可参考下laravel的,路由可设定参数,中间件可获取 优化验证机制,现有的验证感觉好鸡肋,开发效率相当的低

stelin commented 5 years ago

@191834552 我们计划也是兼容laravel的orm使用方式,但是有点小改动,整体使用一样。

deepziyu commented 5 years ago

希望整合laravel的orm系统

接上面的论述,我觉得这些整合这个,整个那个不应当是重点,不应当耗费开发组的精力

stelin commented 5 years ago

@deepziyu 不是整合,我们ORM使用方式,大体会和laravel一样

no-serve-people commented 5 years ago

很有道理,就是orm这个核心组件参照laravel。还是很强大的,比yii2的都强大

herojhc commented 5 years ago

希望把RPC server 完善下,尤其是 错误处理。

yemaozi999 commented 5 years ago

demo希望更加完善一些,便于上手开发降低学习成本。

manaphp commented 5 years ago

manaphp的ORM更强大,使用Query与Model兼容mongodb与sql

chenjing0521 commented 5 years ago

希望文档能完善一些 最好把你们自己写的测试demo发一套代码出来

inhere commented 5 years ago

希望文档能完善一些 最好把你们自己写的测试demo发一套代码出来

@chenjing0521

现在 swoft 项目就是一个完整的demo 我们的测试也是用的它,还有些功能测试代码 就在各个组件的 test 目录下

jqhph commented 5 years ago

服务注册和发现希望能继续支持并完善。php微服务化还不成熟,大多数phper对rpc也不熟悉,如果仅仅只提供rpc的server和client的通讯功能,那想使用rpc就会困难很多了。rpc通讯很多框架早就提供了,这一块并不是难点,如果swoft能提供一套稳定完善的rpc微服务解决方案,那才是优势所在。

另外希望增加以下rpc service的exception handler支持。

jqhph commented 5 years ago

易扩展和简洁易用在1.0就做得不是很好,我觉得最主要是体现在bean容器,orm和扩展swoft组件上,希望2.0能着重优化下。 swoft bean容器是在服务启动之时就注入好的,但是这么做就有个坑爹的地方了:如果我是需要在服务启动之时做一些操作,就会发现有些bean容器里面的对象(包括官方的和自定义的)用不了!!而且通过数组方式注册服务到bean容器的时候是强制使用单例的!而且注册服务到bean容器不能像laravel那样在注册之时带一些逻辑。 还有就是custom.component这个功能有问题,配置了注解文件的命名空间也不一定能扫描到

yangguangwuwu commented 5 years ago

希望模仿laravel的orm系统 方法 用法一样也行

inhere commented 5 years ago

@jqhph bean对象用不了 指的是?

solarhell commented 5 years ago

创建项目可以选择自己希望的特性,比如不需要微服务? 配置文件希望也能明确一点,现在不看源码基本不知道哪些最后的配置文件是什么样子。(可以在应用运行后生成最终的配置文件?)

inhere commented 5 years ago

创建项目可以选择自己希望的特性,比如不需要微服务? 配置文件希望也能明确一点,现在不看源码基本不知道哪些最后的配置文件是什么样子。(可以在应用运行后生成最终的配置文件?)

@solarhell

herojhc commented 5 years ago

环境变量配置现在已经很方便了,尤其是像docker、k8s 这样的容器部署,有一点就是希望配置文件能分环境(不改变config文件),类似laravel的 .env 和 .env.production 这样一些非敏感信息 可以通过git 提交到代码库,部署的时候不用再配置环境变量。

adotpeng commented 5 years ago

建议的核心组件

建议改进的

  1. 及时更新文档
  2. 丰富的 demo,能用 demo 说明白的,不写字
  3. 提高 pr 进入新版本的速度
  4. 真正可以一键打包 phar
inhere commented 5 years ago

环境变量配置现在已经很方便了,尤其是像docker、k8s 这样的容器部署,有一点就是希望配置文件能分环境(不改变config文件),类似laravel的 .env 和 .env.production 这样一些非敏感信息 可以通过git 提交到代码库,部署的时候不用再配置环境变量。

@herojhc 这个没限制呀 .env.production 你可以放到里面,上线时,通过脚本改名为 .env

inhere commented 5 years ago

@adotpeng

jqhph commented 5 years ago

@jqhph bean对象用不了 指的是?

比如beforeStart事件中有些注册bean容器的对象就用不了,

jlzan1314 commented 5 years ago

重启加载的时候,能不能变快点,有的东西compose 目录不需要多次扫描的,开发的时候有时候调试,修修改改很正常..每次等10s以上,好麻烦,尽量扫描的快些,,5秒内最好

yaowenqiang commented 5 years ago

参考laravel,yii,symfony做一个debug bar,可以极大的方便开发和调试

luguohua0394 commented 5 years ago

参考laravel,yii,symfony做一个debug bar,可以极大的方便开发和调试

对,SQL报错,也不提示。找个错误好难

jxy918 commented 5 years ago

希望tcp协议支持多种数据格式传输, 支持msgpack,protobuf,这两种格式对游戏开发生态比较好

simapple commented 5 years ago

不提供session 支持?是否提供其他类型的会话权限认证?

HZMarico commented 5 years ago

基础需求

  1. 配置解耦,方式多样性,尽量采用对象属性描述单个配置
  2. 服务发现(Consul)注册支持采集主机(容器)信息,进行注册。(当前按配置进行注册,可能存在误解)
  3. RPC协议多样性支持(protobuf需求量最大吧,不再赘述)
  4. SQL预编译操作交由Swoole\MySQL客户端或PDO客户端,避免维护sql注入问题

进阶需求

  1. Key-Value远端配置(Consul),支持配置变更监听
  2. 服务正常关闭、消亡处理,取消服务注册、回收协程、待重要队列任务完成
  3. 若grpc不适用于框架,可自行编写Pb生成器拓展,达到最终效果
  4. ORM当然是越好用越OK
  5. Swagger类似的API文档的生成支持
  6. 文件变化监听,可通过inotify拓展
  7. 保留现有埋点,支持jaegertracing链路追踪
  8. 当前Log功能基础上,增加日志Handler

以上内容纯属建议,可选择性采纳 如若需要帮忙,请Email:marico@marico.cn,或群里联系本人

hidahua commented 5 years ago

建议: 1,期望有zf2框架相似的模块化部署结构; 2,mongodb连接池,如同mysql连接池实现;

shark2shark commented 5 years ago

路由。路由。路由呀。要支持自定义呀

tw2066 commented 5 years ago

希望2.0的组件能解构;能做到其他框架composer引入可以直接使用

cgyhbc commented 5 years ago

能支持http的chunk吗,不分片的吗,大文件无法下载。

inhere commented 5 years ago

路由。路由。路由呀。要支持自定义呀

怎么自定义?详细说明下

inhere commented 5 years ago

希望2.0的组件能解构;能做到其他框架composer引入可以直接使用

正在讨论考虑中

shark2shark commented 5 years ago

路由。路由。路由呀。要支持自定义呀

怎么自定义?详细说明下

文件自定义路由,类似laravel那样,可以考虑分路由模式或者做下兼容

xiangjihan commented 5 years ago

我觉得 应该把swoft完全做成一个php的应用容器,然后就是加载各种组件的事了。哪怕组件有问题,也不要把应用容器搞挂了。

tanpeng commented 5 years ago

常用的Tcp、Upd server更好的支持~ 服务启动速度能进一步优化就更好了 其他上述其他道友也基本都提到了

xiaotianhu commented 5 years ago

还是希望核心组件能包含队列 这个太常用了.第三方实现不是很靠谱 与框架集成配合不完美很容易不好用

DavidYanXW commented 5 years ago

建议: 抽取出基础的依赖库,可供swoft本身、其它流行框架共用 目前,对于rpc的需求还是很强烈的。

372620040 commented 5 years ago

希望2.0的组件能解构;能做到其他框架composer引入可以直接使用

对,希望引入就可用,不用再去修改文件了

amuluowin commented 5 years ago

1.建议依赖注入支持注解,配置,autowire多种方式,方便引入其他包和组件,也方便swoft的包和组件能简单注入其他框架。 2.抽象qb和ar的接口,方便后续对接各种db的时候有统一的调用方式,可以参考yii2。

tw2066 commented 5 years ago

注解:希望多给一点例子和原理讲解 , 降低入门门槛 ; 基本没有php框架用注解功能

cheerego commented 5 years ago

什么时候开始,代码在哪里?