搭建spring cloud微服务架构

在搭建环境之前,首先根据公司的业务定义微服务架构的代码结构,因为考虑到不同行业,不同领域,不同业务,我这边针对于所有行业做通用的架构模式。

项目整个架构使用maven来构建的,使用maven不仅仅是jar包的管控,重要的是要抓住maven的一个核心作用,那就是将整个项目按照模块化的方式进行划分,业务与业务之间解耦,然后将模块化的业务再进行服务化或者组件化,这样可以进行任意的项目或者平台的业务移植。

最后还要考虑到服务的细粒度拆分,比如:一个登录的模块,我们可以将所有跟登录有关系的业务进行服务化(基础信息验证;用户名、邮箱、手机验证登录;手机验证码获取;验证用户是否绑定等等),最后针对于多服务进行服务的编排,这样就做到了正在的微服务架构。

以上是我在做项目或架构的一些经验分享给大家,闲话少说,下面讲一下整个架构的代码结构:

commonservice: 公共服务项目,里面包含了所有的针对于spring cloud的相关服务

这边只列出了一部分,给大家讲解一下:

commonservice-apigateway: 完全托管的服务,可轻松创建、发布、维护、监控和保护任意规模的api.

commonservice-cache:暴露出来的分布式缓存服务,不同系统可以直接集成调用。

commonservice-config:配置管理服务,可以把配置放到远程服务器或者本地库,集中化管理集群配置,当前支持本地存储、Git以及Subversion等。

commonservice-eureka:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(跟zookeeper注册中心相似)

commonservice-mq:封装了与Rocketmq,Rabbit、Kafka等发送接收消息的服务(主要是消息的生产者和消费者)。

commonservice-sso:封装统一认证入口,之前使用cas集成,当前将统一认证修改为oauth2的统一认证方式(用户登录,token认证,设备剔除,和spring security进行权限低耦合)。

注意:spring cloud还涉及到很多的服务,这边没有统一列出,后面会持续进行服务的集成,其中包括:Spring Cloud Sleuth(zipkin), Turbine, Hystrix, bus企业总线,Zuul,ELK等,请大家时刻关注。

component:组件项目

component-base: 公共组件封装,包括:过滤器、拦截器、监听、注解,mybatis plus封装(mybatis plus要比mybatis更牛一些,是mybatis的升级版本,里面进行了很对于基础base的封装,包括entity,dao,service的封装和分页的封装等),数据源配置,common code封装等。

component-mongodb: 针对于分布式文件存储的数据库的组件封装。

component-notify: 针对于阿里云消息服务引擎封装。(Notify是淘宝自主研发的一套消息服务引擎,是支撑双11最为核心的系统之一,在淘宝和支付宝的核心交易场景中都有大量使用。消息系统的核心作用就是三点:解耦,异步和并行)

component-oss:针对阿里云文件存储的组件封装。

component-redis:针对分布式缓存的组件封装(使用自定义注解方式,直接注入到方法层)。

component-rocketmq: 针对于阿里云消息中间件的组件封装。

component-swagger: 针对RESTFUL接口的文档在线自动生成+功能测试功能的组件封装。

component-utils: 针对工具包组件封装。

dealer、demo项目代表模块项目。

其中每个模块项目包含对外暴露的api接口,dao 数据访问对象,service(服务端+客户端)

当模块项目启动的时候,微服务就会注册到eureka服务注册中心,每一个微服务即是服务的生产者,又是服务的消费者。

上面是我们公司做的部分企业架构,后面还会持续完善,后面的文章会介绍如何一步步搭建公司微服务架构,请各位时刻关注。

文章来源:搭建spring cloud微服务架构-项目结构介绍 - 开源中国社区