单体架构的 PHP 程序如何转型?

目前的模块有 电商 租赁 考试平台 erp管理等

全部集成在一起为单体架构laravel开发的 招了人是真的头疼又从头开始讲一遍代码

目前的系统是单体架构 越来越感觉太臃肿了 一加入新的模块很难维护 想做成分布式架构 这方面有没有哪个老哥搞过模块抽离这种

目前公司算上我有4个PHP开发 也没有真实的去试过这一方面的领域
创业小公司又不想上java开发 有没有什么建议解决这一问题
另外是做成 集群 还是 分布式 微服务 好一点

市面上有什么解决方案可以解决 就有没有相关的教学什么的 或者哪个老哥做过类似的 有个demo啥的

因为速度也不能太慢
要是实在不行上springcloud那套了 这种的话java开发大概需要招几个

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 90
李铭昕

像你们这种,从单体框架迁移到微服务框架的情况。其实也没有很难,第一步就是先把服务独立出来,比如按照你们的 模块 来说 电商 租赁 考试平台 erp 管理

  • 基础服务组

用户服务、 订单服务、 支付服务、

  • 电商组

  • 租赁组

  • 考试平台组

  • ERP 组

  • 管理中台

上述四个组,都可以先单独使用一个服务来处理,如果某个组内容特别多,则可以进一步拆分,比如

  • 电商组

店铺服务 商品服务 等

当然,微服务化肯定不是一蹴而就的,先将基础服务,一个一个做出来,然后再改造原来的 Laravel 项目,进行 RPC 通信,一步一步的把 Laravel 项目搬空即可。

1年前 评论
lidongyoo 1年前
lidongyoo 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
y1415181920 (楼主) 1年前
douresources 1年前
Kristiano 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
lidongyoo 1年前
李铭昕 (作者) 1年前
PHPer技术栈 1年前
还不出来 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
ts0523481 1年前
李铭昕 (作者) 1年前
李铭昕

你们要换成 Java 的话,估计人员得是 PHP 的四倍左右。。。

1年前 评论
还不出来 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
tsin 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
largezhou 1年前

电商 租赁 考试平台 erp 管理,如果模块之间没太多关系,每个模块一个laravel项目,打通用户授权就可以了,项目之间也可以通过http接口调用。 集群是你一个服务器扛不住访问时候的方案,和项目开发有啥关系? 4个人上来就springcloud、微服务,你不是要坑死自己就是要坑死公司

1年前 评论
y1415181920 (楼主) 1年前
QIN秦同学 1年前
ModStart 1年前
PHP-Coder 1年前
my38778570 1年前
滚球兽进化 1年前
李铭昕

你们要换成 Java 的话,估计人员得是 PHP 的四倍左右。。。

1年前 评论
还不出来 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
tsin 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
largezhou 1年前
巴啦啦

创业小公司或许没必要上java,甚至或许没必要提前太多考虑架构问题

1年前 评论
李铭昕

像你们这种,从单体框架迁移到微服务框架的情况。其实也没有很难,第一步就是先把服务独立出来,比如按照你们的 模块 来说 电商 租赁 考试平台 erp 管理

  • 基础服务组

用户服务、 订单服务、 支付服务、

  • 电商组

  • 租赁组

  • 考试平台组

  • ERP 组

  • 管理中台

上述四个组,都可以先单独使用一个服务来处理,如果某个组内容特别多,则可以进一步拆分,比如

  • 电商组

店铺服务 商品服务 等

当然,微服务化肯定不是一蹴而就的,先将基础服务,一个一个做出来,然后再改造原来的 Laravel 项目,进行 RPC 通信,一步一步的把 Laravel 项目搬空即可。

1年前 评论
lidongyoo 1年前
lidongyoo 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
y1415181920 (楼主) 1年前
y1415181920 (楼主) 1年前
douresources 1年前
Kristiano 1年前
y1415181920 (楼主) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
lidongyoo 1年前
李铭昕 (作者) 1年前
PHPer技术栈 1年前
还不出来 1年前
李铭昕 (作者) 1年前
李铭昕 (作者) 1年前
ts0523481 1年前
李铭昕 (作者) 1年前

可以考虑模块插件化,可以参考下:github.com/jianyan74/rageframe3

1年前 评论
y1415181920 (楼主) 1年前
jianyan (作者) 1年前
jianyan (作者) 1年前
mengdodo 1年前
jianyan (作者) 1年前
╰ゝSakura

1.先拆功能模块 2.确定服务边界 3.使用hyperf 4.今天疯狂星期四,V我29.9

1年前 评论
y1415181920 (楼主) 1年前
╰ゝSakura (作者) 1年前
y1415181920 (楼主) 1年前
╰ゝSakura (作者) 1年前

考试平台是自己开发的吗?

1年前 评论
y1415181920 (楼主) 1年前

微服务的目的是解耦单个项目中各模块之间的逻辑体系,写代码更顺畅。

你将几个毫不相干的项目强行合并在一块,为了微服务而微服务最后的结果注定是失败。

当然如果楼主是为了KPI为了简历好看点也是可以理解的。

1年前 评论
y1415181920 (楼主) 1年前
y1415181920 (楼主) 1年前
y1415181920 (楼主) 1年前
lidongyoo (作者) 1年前
李铭昕 1年前

换Java,你现在的开发人员最少要多几倍

1年前 评论
yangweijie

分布式为什么 不试试 yaf ,独立出不同的项目 其他项目 调用一下 封装一下方法,不一样处理吗?

1年前 评论
y1415181920 (楼主) 1年前

微服务架构对技术团队的要求会高,Go或Java搭建基础服务,逐步迁移,Go是一个不错的选择

1年前 评论
y1415181920 (楼主) 1年前
PHPer技术栈 (作者) 1年前

把不同的模板,分成不同的laravel项目 项目之间,通过 http 去调用 不同的项目,使用相同的配置,同一个数据库 不一定要走微服务

1年前 评论

电商 租赁 考试平台 erp 管理,如果模块之间没太多关系,每个模块一个laravel项目,打通用户授权就可以了,项目之间也可以通过http接口调用。 集群是你一个服务器扛不住访问时候的方案,和项目开发有啥关系? 4个人上来就springcloud、微服务,你不是要坑死自己就是要坑死公司

1年前 评论
y1415181920 (楼主) 1年前
QIN秦同学 1年前
ModStart 1年前
PHP-Coder 1年前
my38778570 1年前
滚球兽进化 1年前
1年前 评论

小公司不要盲目迷信微服务

我们前单位原来单体架构,1台服务器跑得好好的,2个php,1个前端。

后来公司领导觉得微服务、中台很牛逼,就招人用Java重构,

用微服务重构后,现在用了几十台服务器,

技术团队也变成了6个Java,2个前端,1个运维,1个DBA,一个高级架构师。

老板最近想裁员…发现离不开这个团队了 :joy:

1年前 评论
lidongyoo 1年前
李铭昕 1年前

四个人,要是4个都没这方面经验,你要是听他们的,搞不死你。
到时候结果就是,

新需求接不过来

老需求迁不过来

这群人动动嘴巴真厉害。

上面

加入新的模块很难维护,

不敢说百分百,很大部分可能单体服务写的就很混乱,难维护?拆开赶鸭子上架一样混乱,还到处bug。
还不如花点时间研究一下先把目前单体服务好好理理。

1年前 评论
Caral 1年前

单体架构真的不行了吗?必须使用微服务了吗?如果不是必须的,建议还是从当前进行优化来搞定。而不是一味的靠新功能来解决老问题。如果是想折腾,当我没说

1年前 评论

我的建议是,先想办法把电商 租赁 考试平台 erp 这些独立成单独的项目。公共用到的东西,比如用户登陆授权,看使用什么方式共享比较好。我比较建议使用http协议交互。 你这种都不能说是单体项目,应该说是多个项目强行柔和在一起的怪物。只需要把各个项目独立开来就好,不用做太复杂的改动。

1年前 评论
y1415181920 (楼主) 1年前

后续关注下,能加个微信吗?

1年前 评论
y1415181920 (楼主) 1年前

大佬,我想问个问题,考试系统提交的时候比方说交卷的时候有100道题目,这个是做循环100次吗来判断对错?

1年前 评论
y1415181920 (楼主) 1年前
y1415181920 (楼主) 1年前
sunny123456 (作者) 1年前
sunny123456 (作者) 1年前

多人开发可以考虑 Porto模式的github.com/apiato/apiato

1年前 评论

用go 的一些微服务框架也很方便,前提是要理清业务模块,规划好,开干

1年前 评论

如果招java进来信不信一年以后你们自己就被挤掉了

1年前 评论
y1415181920 (楼主) 1年前
porygonCN

这几个项目看起来没啥大关联,直接分开不是更好吗?再加个SSO,不是舒舒服服嘛

1年前 评论

百分之90的问题,单体架构也能解决。如果是想提高并发,还不如迁移到单体swoole项目。微服务是不建议的,单体swoole已经足够满足大部分并发需求了。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!