优惠券平台项目
分成四大模块来做微服务,优惠券模板服务、计算服务、用户服务和平台类组件
- 优惠券模板服务:模板规则是创建具体优惠券的前置条件,每种类型的模板都是一个计算公式,这个公式约定了优惠计算的方式。在这个项目中,模板服务实现了模板规则的创建、克隆、分页查找等功能。另外,我将在项目里定义满减、随机立减、满折、晚间双倍优惠等多种券模板类型。
- 优惠计算服务:这个模块是根据用户购物车中的商品信息(单价、数量、所属门店)和优惠券信息,来计算当前订单优惠后的价格。另外,如果用户有多张优惠券,我还提供了“优惠金额试算”服务,帮助用户挑选最省钱的优惠券。
- 用户服务:这是暴露给外部用户使用的接口,它依赖于模板服务和优惠计算服务完成底层逻辑,主要业务场景是用户领券、订单价格试算、下单核销和订单金额试算等功能。
- 平台类组件:主要包括一些业务无关的中心化组件,比如 Gateway 网关等等,你将在 Spring Cloud课程中逐渐接触到平台类组件的搭建。
先springboot再springcloud
搭建springboot的服务开始,先是超级单体然后再是微服务。
技术点: - 项目搭建:分层构建项目结构,并借助 Maven 实现依赖项管理;
- 数据操作:我会带你快速入门 spring-data-jpa 实战,分别通过接口声明、自定义 SQL 和 JpaRepository
三种方式实现数据库 CRUD 操作; - 开放对外 API:快速入门 spring-web 实战,通过注解对外暴露 RESTful 风格的 API。
全景规划
第一阶段:搭建基础的微服务功能,实现微服务之间的通信;
第二阶段:为各个模块构建服务容错、分布式配置中心、分布式链路追踪能力;
第三阶段:进一步实现微服务网关、消息驱动和分布式事务。
第一阶段
服务治理:服务治理的重点是搭建基础的跨服务调用功能。我会把用户服务、优惠计算服务和订单服务改造成可以独立启动的微服务,并借助 Nacos 的服务发现功能,通过 Webflux 组件中的 WebClient 实现基于 HTTP 的跨服务间的调用;
负载均衡:在这部分,我们将在服务治理的基础上,引入 Loadbalancer 组件为跨服务调用添加负载均衡的能力。除此之外,我会对 Loadbalancer 组件的扩展接口做自定义开发,实现一个金丝雀测试的负载均衡场景;
简化服务调用:我将使用 OpenFeign 组件对用户服务进行改造,将原先复杂的 WebClient 调用替换为简洁的 OpenFeign 调用。
第二阶段
利用服务容错提高微服务架构的可用性;
搭建全链路的分布式链路追踪能力;
实现统一的配置管理和动态属性推送。
配置管理:配置管理的重点是将三个微服务应用接入到 Nacos Config 配置中心,使用远程配置中心存储部分配置项。
服务容错:搭建 Sentinel Dashboard 控制台,通过控制台将降级规则和流量整形规则应用到业务埋点中。
链路追踪:这部分的重点是搭建分布式链路追踪与日志系统。
第三阶段
搭建微服务网关作为统一流量入口;
使用消息驱动组件对接 RabbitMQ;
通过分布式事务保证数据一致性。
第一个阶段使用 Nacos、Loadbalancer 和 OpenFeign 实现了跨服务的调用;
第二阶段使用 Sentinel、Nacos Config 和 Sleuth 实现了服务容错、配置管理和分布式链路追踪;
第三阶段使用 Gateway、Stream 和 Seata 实现了微服务网关、消息事件驱动和分布式事务。