首先,我们要明确,这是一个采用前后端分离和微服务思想构建的现代化项目。
- 后端 (
damai-xxx
开头的模块):基于 Java 和 Spring Cloud Alibaba 技术栈,是整个系统的核心驱动力。 - 前端 (
vue3
目录):基于 Vue.js 框架,负责用户交互和数据展示。
后端的架构设计非常有条理,可以清晰地分为三大类:
- 基础框架 (
-framework
后缀):这些是项目的“技术基座”,提供了可被所有业务复用的通用能力,如分布式锁、ID生成等。 - 业务服务 (
damai-server
目录):这是项目的“业务核心”,每个服务都对应一项具体的功能,如用户、订单、支付等。 - 服务客户端 (
damai-server-client
目录):这是服务之间沟通的“标准协议”,定义了每个服务对外暴露的接口。
接下来,我们将逐一认识这些核心模块。
核心模块简介
1. 基础框架 (-framework
):系统的“工具箱” 🧰
这些模块是项目的精华所在,体现了优秀的架构分层思想。
damai-common
:通用模块。这是最基础的模块,提供了统一的返回结果、异常处理、JWT认证工具等,是所有模块的“必修课”。damai-captcha-manage-framework
:验证码框架。负责生成和校验滑块、点选等复杂的验证码,是系统安全的第一道防线。damai-id-generator-framework
:分布式ID生成框架。为订单、用户等提供全局唯一的ID,是分布式系统数据一致性的关键。damai-redis-tool-framework
&damai-redisson-framework
:Redis增强框架。它们不仅提供了缓存功能,还基于Redisson实现了分布式锁、延迟队列、布隆过滤器等一系列高级功能,是系统高性能、高并发的“秘密武器”。damai-elasticsearch-framework
:ES搜索框架。封装了对Elasticsearch的操作,为商品搜索等场景提供强大的技术支持。damai-spring-cloud-framework
:Spring Cloud治理框架。这是微服务治理的核心,包含了服务间调用(Feign)、API文档(Swagger)、分库分表(ShardingSphere)以及高级的灰度发布等功能。damai-thread-pool-framework
:线程池框架。对项目中的线程池进行统一管理和监控,防止资源滥用,提升系统稳定性。
2. 业务服务 (damai-server
):系统的“五脏六腑” ❤️
这些模块构成了“大麦网”的核心业务逻辑,每个都是一个可以独立运行的微服务。技术都是为了业务而使用的,因此这部分内容是最重要的内容,在学习了基础模块工具以后再业务中体会其如何使用。
damai-gateway-service
:API网关服务。作为系统的唯一入口,所有来自前端的请求都由它接收,然后根据规则转发给内部的各个业务服务。它同时还承担了认证、限流、路由等重要职责。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网关统一对外提供服务。
理解了这张“地图”,你就可以带着明确的目标,去探索任意一个你感兴趣的模块的源码细节了。祝你学习愉快!