1. Api层
Api是作为一个对外提供的接口层,用过Feign的都知道,大家一般都是通过api的调用的方式去请求其它分布式服务,而我们的Api层正是提供给其它模块或者系统进行分布式调用使用的。我们可以将Api层打成jar包发布到私服上(或者其它方式提供出去),然后要其它模块或系统要调用时直接依赖相应模块提供出来的jar包即可进行分布式调用。
2. Service层
Service作为业务逻辑层,作用是实现业务逻辑并对数据库进行访问。Service层依赖了Api层,是Api接口的逻辑实现。
3. Web层
Web层是作为控制层,主要作用是接收来自客户端或其它分布式服务的请求,调用Service层进行业务处理,然后对请求进行响应。所以Web又依赖了Service层,它也是作为服务部署的一个模块,Web层可以打成jar包或者war进行服务部署。把web独立出来的另一个重要原因是,当我们不采用分布式,只想通过本地服务像传统项目一样访问其他模块时,直接在pom文件添加要访问的模块的Service依赖即可(要保证Service是使用的同一个数据库),这时我们系统就是一个传统的单服务架构了。
备注:项目里我将user、article进行作为分布式服务划分,是按项目模块进行划分的。这里应该要根据公司业务实际情况,可以像我一样根据模块进行划分,也可根据项目进行划分(一个项目作为一个分布式服务),当业务访问量大的时候甚至可以单独将一支接口作为一个分布式服务。
项目源码地址:https://github.com/luckymeet/spring-cloud-seed