前言
由于有项目要开发,不想使用原来的旧项目代码,因此,需要设计一套全新的项目架构
背景
整个项目由客服系统、配置系统、公众号小程序后台、数据系统组成
技术选型
这里我结合自己的经验,选择了springcloudalibaba来设计系统架构,使用了springcloud5大组件如下:
网关:spring-cloud-gateway
负载均衡:ribbon、feign
熔断降级:sentinel
注册中心和配置中心:nacos
其他中间件:
数据库:mysql、redis
消息中间件:rocketmq
对象存储:minio
在这里我没有选择dubbo来做微服务调用模块,因为dubbo的接口只能在项目内使用,客户端必须得是java,无法通过网关提供接口给外部系统和前端调用,会增加项目模块,增加维护成本,因此,最终还是选择了ribbon和feign来做,编写http接口同时可以在内部使用也可以通过网关暴露出去,http通用性比较强,既省事又省力。
总体架构图
系统模块
各模块详细说明:
Gatway:系统总体入口,对公网暴露http接口
Basecenter:基础能力模块,处理用户相关数据及业务,与公众号、H5、小程序对接
Configcenter:配置系统模块,只处理配置数据,为其他系统提供配置数据的查询接口
Datacenter:运营数据中心,只处理历史数据,提供接口给其他系统写入和查询
Custcenter:只处理数据库,主要是用户权限相关,通过调用其他系统接口去查询或设置用户数据
Httpcenter:提供http接口给外部系统,不处理数据库,需要处理数据就通过接口去调用
Rocketmqcenter:处理异步数据,提供发送mq消息接口,并且消费所有消息,不处理数据库,只处理业务,数据处理通过调用其他系统的接口实现
Exportcenter:系统的出口,将所有需要调用外部的接口和文件存储放到这里,集中管理,封装起来,提供接口给其他系统调用
总结
第一次设计一套完成的项目架构,觉得是一个很好的锻炼机会,其实还是挺开心的。
现在架构代码已经写的差不多了,剩下的就是做业务开发了。
后面我会继续介绍一些项目的模块,及分享源码,觉得可以作为一个模板,每个项目都可以用。
如果有比较厉害得大牛,欢迎提点提点。
广告
需要设计新系统架构的、开发新项目的老板可以找我,
毕业设计也可以找我
微信:tp_835022460