大型分布式综合项目实战(JAVA架构),高并发,分布式,web安全,缓存架构实战

项目分布式部署架构

webp

分布式部署架构总结


架构中核心中间件说明:

  1. Spring Cloud Gateway: 前端(thymeleaf, vue.js, app, weixin h5)该用服务都必须经过网关,这样便于实现统一鉴权,限流,金丝雀发布等,消除以前没有网关时的代码冗余等相关问题。

  2. OpenFeign: 用于实现不同模块之间服务互相调用(sevice-to-service call)

  3. Spring Cloud Consul(类似eureka, zookeeper等): 注册中心

  4. Skywalking: 实现分布式链路跟踪

  5. FastDFS: 分布式文件系统用于实现图片,视频,文档等上传下载。

  6. ElasticJobLite: 实现定时作业调度

  7. Kubernetes集群:现在应用容器化部署
    8.RabbitMQ集群:实现分布式消息中心,用于业务解放耦合,异步化等。

  8. ELK、Sentry: 日志平台

  9. Maven Nexus: maven私服,用于Java构件,npm包, .net nuget包管理。

项目分层结构

webp

项目分层v2.png


基本原则

  1. 前端会用到Vue.js, Thymeleaf

  2. Vue.js前端和后端完全分离

项目分层详细说明

  1. 对外接口层:包含dto, enums, @FeignClient,用于其它模块调用

  2. 单体应用层:包含内部使用的dto, do(通常也可以叫做entity,或者叫做model),dao, bizinteract, serviceImpl, publicServiceImpl
    2.1 dto 定义前端使用到的信息,原则是尽量少地暴露信息,减少前端和后端交互的逻辑。注意:整个领域用到的枚举定义在对外接口层
    2.2 do: 定义领域对象,不拘泥于必须和表结构一一对应。
    2.3 dao&bizinteract: 这两个其实可以合并为一层,用于访问数据库,redis缓存,es索引,mq队列,甚至是文件系统等等,都需要定义接口和实现,便于代码维护和单元测试。注意:mybatis 访问DB这种情况只有接口。
    2.4: mapper: mybatis 访问DB需要的xml mapper。



猜你喜欢

转载自blog.51cto.com/14462305/2422426