跳至正文

基础模块架构分析–仿大麦网的微服务项目(1)

首先,我们要明确,这是一个采用前后端分离微服务思想构建的现代化项目。

  • 后端 (damai-xxx 开头的模块):基于 Java 和 Spring Cloud Alibaba 技术栈,是整个系统的核心驱动力。
  • 前端 (vue3 目录):基于 Vue.js 框架,负责用户交互和数据展示。

后端的架构设计非常有条理,可以清晰地分为三大类:

  1. 基础框架 (-framework 后缀):这些是项目的“技术基座”,提供了可被所有业务复用的通用能力,如分布式锁、ID生成等。
  2. 业务服务 (damai-server 目录):这是项目的“业务核心”,每个服务都对应一项具体的功能,如用户、订单、支付等。
  3. 服务客户端 (damai-server-client 目录):这是服务之间沟通的“标准协议”,定义了每个服务对外暴露的接口。

接下来,我们将逐一认识这些核心模块。

 


 

核心模块简介

 

1. 基础框架 (-framework):系统的“工具箱” 🧰

 

这些模块是项目的精华所在,体现了优秀的架构分层思想。

  • damai-common通用模块。这是最基础的模块,提供了统一的返回结果、异常处理、JWT认证工具等,是所有模块的“必修课”。
  • damai-captcha-manage-framework验证码框架。负责生成和校验滑块、点选等复杂的验证码,是系统安全的第一道防线。
  • damai-id-generator-framework分布式ID生成框架。为订单、用户等提供全局唯一的ID,是分布式系统数据一致性的关键。
  • damai-redis-tool-framework & damai-redisson-frameworkRedis增强框架。它们不仅提供了缓存功能,还基于Redisson实现了分布式锁、延迟队列、布隆过滤器等一系列高级功能,是系统高性能、高并发的“秘密武器”。
  • damai-elasticsearch-frameworkES搜索框架。封装了对Elasticsearch的操作,为商品搜索等场景提供强大的技术支持。
  • damai-spring-cloud-frameworkSpring Cloud治理框架。这是微服务治理的核心,包含了服务间调用(Feign)、API文档(Swagger)、分库分表(ShardingSphere)以及高级的灰度发布等功能。
  • damai-thread-pool-framework线程池框架。对项目中的线程池进行统一管理和监控,防止资源滥用,提升系统稳定性。

 

2. 业务服务 (damai-server):系统的“五脏六腑” ❤️

 

这些模块构成了“大麦网”的核心业务逻辑,每个都是一个可以独立运行的微服务。技术都是为了业务而使用的,因此这部分内容是最重要的内容,在学习了基础模块工具以后再业务中体会其如何使用。

  • damai-gateway-serviceAPI网关服务。作为系统的唯一入口,所有来自前端的请求都由它接收,然后根据规则转发给内部的各个业务服务。它同时还承担了认证、限流、路由等重要职责。
  • damai-user-service用户服务。负责用户的注册、登录和信息管理。
  • damai-program-service票品服务。管理演出的详情、场次、库存等核心商品信息。
  • damai-order-service订单服务。处理用户下单、查询订单、变更订单状态等全流程。
  • damai-pay-service支付服务。与第三方支付平台(如支付宝)对接,完成支付流程。
  • damai-admin-service后台监控服务。用于监控各个微服务的健康状况,是系统运维的重要工具。

 

3. 服务客户端 (damai-server-client):服务间的“电话本” 📞

 

RPC模块采用集中式管理,所有RPC模块都在同一模块下,服务A如何调用服务B?答案就是通过damai-server-client

这个模块下的每一个client子模块(如damai-user-client),都定义了其对应业务服务的所有对外接口。当订单服务需要查询用户信息时,它不需要关心用户服务的内部实现,只需要像调用一个本地方法一样,调用damai-user-client中定义好的接口即可。这种方式极大地降低了服务之间的耦合度。

 

总结

 

现在,我们再回头看这张架构图,相信你已经有了一个清晰的认知:

这是一个设计精良、层次分明的微服务系统。它通过强大的基础框架支撑起上层的各个业务服务,服务之间通过服务客户端进行解耦和通信,最终由API网关统一对外提供服务。

理解了这张“地图”,你就可以带着明确的目标,去探索任意一个你感兴趣的模块的源码细节了。祝你学习愉快!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注