摘要:前面介绍了Spring Boot的基本框架与使用方法,以及微服务开发过程中涉及的中间组件。通过中间组件的组合使用,可以保障微服务开发的各个环节正常进行。本篇将从一个实际项目出发,全面讲解如何搭建Spring Boot微服务应用。
前面介绍了Spring Boot的基本框架与使用方法,以及微服务开发过程中涉及的中间组件。通过中间组件的组合使用,可以保障微服务开发的各个环节正常进行。本篇将从一个实际项目出发,全面讲解如何搭建Spring Boot微服务应用。
某上市公司为了增加营业收入,打算推广会员业务,以吸引更多的用户开通会员。为此,公司运营人员定期定向地推出了一系列会员促销活动,如向新用户赠送一个月免费会员、会员秒杀、向老用户赠送优惠券等活动。本项目将从实际需求场景出发,进行具体的分析和拆解,开发一个促销活动的微服务应用。
项目需求
1. 需求背景
上市公司发展遇到瓶颈,业务增收缓慢,公司高层领导决定整合业务,打包核心资源,推出会员服务,为公司开辟新的收入渠道,同时提升公司股价。为了快速推广会员业务,公司领导指派运营人员进行促销活动。
2. 需求目标
通过促销活动,提升公司会员数量,增加公司营业收入,间接提升公司股价。
3. 需求描述
具体需求如下:
运营人员可以通过后台操作来管理活动信息,如增加、修改、删
除和查询活动信息等。
对满足特定条件的用户展示活动。
用户可以领取奖品。
需求分析
通过需求描述可知,对内需要开发一个后台管理系统,提供运营人员管理活动的信息入口。这里不讲解前端管理系统的开发过程,只提供后台服务接口程序。同时,对外需要提供活动的投递接口、活动奖品的领取接口,最后还应该有一个统一的API网关来统一管理对外接口。
后台服务接口与投放活动接口涉及关系型数据库MySQL与非关系型数据库Redis。本节主要设计接口需要的数据结构。
MySQL数据结构
根据需求描述,后台管理需要有一个促销活动的详情信息表。新建表promotion的结构如表11.1所示。
建表语句如下:
CREATE TABLE `promotion` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT
'主键id',
`name` varchar(255) NOT NULL COMMENT '促销活动
名称',
`begin_time` int(11) DEFAULT NULL COMMENT '促
销活动开始时间',
`end_time` int(11) DEFAULT NULL COMMENT '促销
活动结束时间',
`prize` varchar(128) DEFAULT NULL COMMENT '促
销活动奖品',
`create_time` timestamp DEFAULT NULL COMMENT
'创建时间',
`update_time` timestamp DEFAULT NULL COMMENT
'修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
COMMENT=
'促销活动表';
Redis数据结构
Redis作为内存存储数据库,其并发效率更高,因此在开发促销活动的微服务系统时,为了提高微服务接口的访问效率,采用Redis存储结构。
本项目需要两个Redis存储结构,一个是Hash结构,用来存储促销活动信息表,另一个是String类型结构,用于存储赠送奖品的记录表。
促销活动信息表采用Hash结构,其key格式为promotion:{id},其中,{id}为促销活动id,hkey与hvalue如表11.2所示。
赠送奖品记录表采用String结构,如表11.3所示。
每个设备领取成功后,置为1。
来源:大数据架构师