2

阅读本文约“3分钟”


对于卡包系统(类优惠券服务),这样的业务完全可以抽成一个独立的服务来做,本文也是对一个小卡包项目的总结,并无应用到上线产品中,但是其中的设计实现与部分上线产品一致,这里做个整理。

对于框架的技术产品选型:后台快速开发框架SpringBoot,这个项目涉及两个子系统,一个商户投放卡包系统,一个用户应用系统,所以两个系统之间的通信使用了Kafka,缓存层依旧使用Redis,对于数据库本次使用了HBase与MySQL。

图片描述

对于卡包应用,大家可以看看微信卡包与小米卡包,其是针对于两种用户群体,即可以给想要入驻的商户进行卡包投放,还有就是给平台的所有用户去消费使用卡包。

那么针对商户投放平台,我们需要提供两个服务,一个是注册商户接口,第二个是投放优惠券接口

而用户应用系统则比较多,也是重点。要有用户卡包的显示接口、过期优惠券的显示接口、优惠券库存接口、用户反馈接口等

对于商户投放系统,首先商户注册生成对应的Merchants实体,他们可以投放自己商家的卡包PassTemplate,且卡包有自己的Token存放于Redis中,投放的卡包信息将由Kafka给用户应用系统发送。这里仅需要将商户信息存储在MySQL中,而投放的卡包并不需要MySQL进行存储。

图片描述

对于用户应用系统,其核心主体是用户User,而卡包主体Pass则会去kafka中消费商户系统中投放的卡包信息,并存储到HBase中,用户的反馈Feedback也是存放在Hbase中,之后应用的去生成Service服务,当用户使用卡包时,去做一些业务逻辑判断(时间有效、卡包库存等)

图片描述

当然还有传统项目中需要的日志处理设计、异常处理设计,对于表结构而言,HBase的主副关系对于卡包应用业务是恰当好处的支持到了。

于此介绍了这个Demo,这个案例以上传GitHub,有兴趣的朋友可以去试试名称:UncleCatMySelf/MyPass

地址:UncleCatMySelf/MyPass


通知:接下来可能会比较忙,15天前至今的UncleCatMySelf/SBToNettyChat开源项目(仿微信应用的页面聊天室,基于SpringBoot-Netty通用框架,用户登录聊天社交,并记录聊天日志,异步数据库存储,记录聊天历史等),现在已经达到1Watch、12Star、3Fork的成绩,很感谢大家,今年7月入驻GitHub一直没有怎么贡献,这个项目会继续更新,不过可能要晚一点,要先忙其他的一些事情,提前预告一个好玩的“东西”!


Java猫说
1.3k 声望930 粉丝

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。