上海某集团国企2万人左右使用的内部系统

我要开发同款
我是大叔2023年02月11日
144阅读
所属分类MQ、SPRING CLOUD、redis

作品详情

业务上:由于该集团历史原因,很多功能都是集成放在一个系统中,导致系统建设越来越臃肿,耦合性和依赖性比较大,经常出现一个子模块出现问题导致影响整体系统运行不稳定的情况出现,对此,后续对该大系统进行了针对性的调研,重新进行需求整理,业务边界划分,提取公共业务功能。
技术上:由于对业务进行了划分,整体项目采用springcloud作为微服务进行开发,实施过程中,严格按照一个业务一个服务,一个业务一个库的方式进行微服务建设(除了由于历史原因,个别太重要,又耦合性较高的数据还是放在一个库中,其他都是一个业务,一个库),考虑到系统的以后的扩展性,整个项目充分利用设计模式:责任链(单据状态流转),策略(消除太多的if else),适配器(调用第三方接口和我们自己内部数据对象一直),模板方法(提取功能方法),门面(隐藏具体实现细节,提供统一访问入口访问具体的多个接口),工厂,装饰,观察者等。
架构上:前后端分离,用nginx代理后端网关集群(springcloud gateway),网关再转发到后端服务,服务之间feign调用,服务链路追踪使用skywalking,配置和注册中心用nacos,同样也是用nginx来代理nacos集群。对于体量大的业务,采用分表分库处理。服务之间跨事务,使用消息队列rocketmq进行最终一致性处理,涉及到检索业务,比如图纸归档信息等都是同步到es,进行后续的检索。对于历史聚合查询目前都是T+1处理(因为目前体量不是很大),但考虑到后续数据增长,到时不光要历史聚合查询,还要做成实时聚合分析处理,已建议选用MPP数据库doris(兼容mysql协议)
1、老系统业务整理,业务边界确定,业务拆分,提取公共功能
2、根据每个业务设计数据库,对于需要分表分库的确定分片键
3、整个项目人员团队管理及主持日常开发会议
4、定期与客户方面沟通项目进展及方案等
5、代码质量的把控及review
7、整个项目框架的搭建(采用DDD六边形架构)
8、使用设计模式抽象底层功能,提高扩展性及降低代码耦合性
9、项目代码的编写,处理线上问题,及JVM调优
10、优化分布式锁
11、利用网关实现灰度发布
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论