# WA04 该项目架构从 COLA 5 的基础上进行了修改,主要修改了以下几个地方: - 项目布局发生了变化,不再是一个单一的项目,而是一个多模块的项目,每个模块都是一个独立的项目,可以单独运行,也可以作为一个模块被其他模块引用。 - 项目的依赖管理发生了变化,使用 Gradle 进行依赖管理。 - 没有使用 COLA 的组件库,我们自己构建了适合的组件库 ## 结构变化 ### Infrastructure 基础实施层(Infrastructure Layer) 1. Configuration: Springboot 的配置。 2. DTO: 系统的传输对象,包含请求、响应还有数据库的Model。 3. Adapter: 整个系统的对外的处理逻辑,里面有具体的技术细节,追求简化和剥离业务逻辑,要求跟逻辑区分。 4. Repository 数据仓库,写 Mysql 数据的 Mapper,在 Mybatis 里叫 Mapper,在JPA里叫 Repository。 ### Api 接口层(Api Layer),负责提供和接受外部的请求比如 Restful,RabbitMQ Messaging 1. api-websocket: 负责 Websocket 长链接的会话保持,处理简单的消息下行。 2. api-user: 系统的认证和授权,还有用户相关的API提供,比如小孩相关、设备相关的信息CURD的接口。 api-user 拥有整个系统大部分的逻辑。 3. api-message: 提供消息上行接口和拉取消息接口,消息从客户端HTTP接口产生后在 api-message 里RabbitMQ发送至消息队列。 4. api-location: 系统定位服务处理定位相关业务逻辑,如电子围栏、IOT 定位。同时也拥有产生定位消息的能力。 ## 架构图 ![img.png](document/img.png) ## 路径上下文 ![img2.png](http://doc.sikey.com.cn/raiz5jee8eiph0eeFooV/api/v1/projects/4986187/resources/471078/image-preview) ## 启动项目 > TODO ## Reference - [接口文档](http://doc.sikey.com.cn) - [前端项目](#) - [COLA5](https://github.com/alibaba/COLA) - [COLA架构介绍](https://juejin.cn/post/7250914419578912805) - [COLA架构解析](https://www.mcaoyuan.com/archives/cola) - [COLA实践](https://blog.csdn.net/daqiang012/article/details/119243935?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-119243935-blog-133182049.235^v43^pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.2&utm_relevant_index=4) - [Alibaba/COLA架构中的Gateway层的代码腐败问题](https://blog.csdn.net/qq_31205803/article/details/133182049) - [Clean Architecture](https://github.com/alesimoes/hexagonal-clean-architecture)