什么是cola
cola是张建飞在阿里摸索的一套基于ddd的架构风格,COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA v5。
cola组成
cola分为主架构、cola组件,这里着重看主架构
1)适配层(Adapter Layer):controller层 对应暴露给外部的接口,定时任务,kafka等中间件的消费者,是整个应用的入口
2)应用层(Application Layer):一般用于业务处理,可以直接调用基础设施层,调用client层,调用domain层实现的gateway、model、充血模型
3)领域层(Domain Layer):主要是封装了核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)的方法对App层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次;如果没有分清领域模型也可以先不放代码进去。
4)基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的CRUD、搜索引擎、文件系统。此外,领域防腐的重任也落在这里,外部依赖需要通过gateway的转义处理,才能被上面的App层和Domain层使用。
5)客户端层(client): 主要是调用外部的接口,如微服务调用中的feign调用定义,restTemplate等RPC调用,相对比4.0,从基础设施层抽取出来独立作为一个模块
其中application层也可以通过domain依赖反转来调用基础设施层