laravel项目软件架构:单体项目有必要升级到分布式项目吗?
一、现状
- 目前有两个项目:A项目面向用户,B项目面向运营人员。并且都是单体项目共用一个数据。
- 涉及到一些共同的业务,比如订单的创建和退款,用户积分的增减,用户课程的授权和取消。目前都是开发一份,拷贝一份,但是由于经常A项目优先级高修改后B项目不能及时修改,或者没修改到位造成脏数据。
- 以后新增项目之后维护这些类库会重复且容易出问题。
二、目标
- 解决重复cp代码,提升代码复用性。
- 解决数据一致性问题。
三、技术方案
单个项目演变
整体软件项目演变
四、一些问题和疑惑🤔
- laravel项目怎么引入?
- 封装sdk走composer。
- 走git子工程模式,base.git 每次上线全部更新,业务项目上线只更新业务代码。
- 比如订单业务开始都是相通的,由于一些变化之后两边逻辑不一样了怎么处理,不同业务上线不同分支吗?
你这个其实可以把基础业务做成接口服务,其它内部调用 你现在是基础业务用的分层,那么这一层你可以单独做成插件,两边一样就一个版本,不一样就不同版本。可以把这部分单独一个仓库,实现插件的方式有很多,可以找找现成的。不建议用不同分支,还有就是逻辑不一样但是对外的方法调用一致
架构设计在业务演变中,从单体架构到微服务架构有这样一个过程,技术随着业务转换,在PHP中有swoft微服务框架,其他语言也有,go、java对分布式的支持