在工作公司中,参与的是物流行业的项目开发,类似于货拉拉一样的公司,随着业务量的上涨,一些服务显得特别盘大,上线部署,备份显得很鸡肋,项目出现bug,回复都好几分钟.这是互联网公司所不能容忍的.一个服务器本来就40G,但是部署,备份新项目就占了几个G.在本公司中,项目拆分为:支付服务,公共服务,会员服务和订单服务等等.但是原生的架构是将entity,dto放在一个公共的模块里面(体积盘大的原因).整个项目有几百张表,对各个模块都是可见的,没有做到真正的服务分离.此时,出于合理解决问题.一次架构的演进就来啦.
1.将项目Spring Boot升级到2.1.x版本,优化了一些项目监控,性能等问题.
2.将公共模块中的entity,dto根据业务,放在相应的模块中.此时涉及的业务不同的引用需要通过feign来调用.同时feign之间查询的参数规范化.
3.项目配置文件统一使用yml,不再使用properties和yml的混合版(真的好混乱),根据开发环境的不同,使用例如application-dev.yml的形式
4.引入第三方中间件优化:在互联网项目中,使用redis,消息产品MQ是必不可少的,此时就需要一些使用规范化.比如(MQ产品,这次重构在队列命名,工作空间,生产消息确认,消费消息的确认都做了手动确认,真正做到可靠消息).
5.一些公共工具包,不再是每个开发成员都有权利添加,我们将它独立成私有仓库,只有特定的人员参与维护.
6.在数据库方面:配置文件都不再使用root账户,根据不同的业务,独立成不同的库,做到分库分表.
7.在api的设计上,遵循restful开发规范,针对web端和app端或者开放api都有不同等级安全性要求.
8.在controller层面不再处理业务,都统一挪到service层.
.
.
.
.
整个项目重构还在继续,过程很艰辛.需要保证在项目稳定的基础上,又要不动老员工的蛋糕.困难重重,但是作为一个团队,为了寻求最优的解决方案,必须要进行改革,跟着党走,才能做出更好的项目和更好的团队.最后祝大家在架构之路越走越顺,展望未来.