优惠券

作者: 言十年 | 来源:发表于2020-03-14 23:20 被阅读0次

    一道题

    面试的第一道程序是一个测试题,需要您先认真回答一下
    京东优惠券的设计方式1. 优惠券有满减,满赠,运费(以后还可能有别的)2. 优惠券有地域、性别...使用条件3. 优惠券可能会通过某个活动码领取, 也有可能通过app之类的直接点击领取, 还有可能系统自动发放要求:1. 大概设计表结构2. 大概叙述程序逻辑3. 注意可扩展性 4 .考虑好目前的需求并且可以实现,答题要考虑周全谨慎作答.

    简单体验下京东

    分类

    架构图

    架构图

    涉及系统交互

    后台

    运营人员创建券。调用优惠券服务进行存储。

    c端界面:

    店铺服务调用券服务展示。

    PLUS会员系统调用券展示。

    活动页调用券信息展示。

    个人中心展示优惠券的使用状态。

    下单后优惠信息也要保存。订单详情会展示。

    各种领券的操作。

    等等。。。。需要优惠券出现的地方,调用优惠券的基础服务。(接口也好,其他rpc的方式也好)

    其他系统交互

    消息流系统:

    退单,优惠券补发。(根据业务而定)

    推送系统:

    通常浏览商品,会突然“从天而降”优惠券。

    推送短信。

    app内推送。

    表设计

    优惠券基础表:存储优惠券的 title 、利益点、类型、限额还是满多少可用、金额、

    优惠券类型表:运费|平台|礼金 |会员|分类|商品等等

    如果选择商品,可以关联一些商品id。
    选择分类,可以选择分类id。

    优惠券规则表:优惠券id, 各种优惠券的限制条件(限制地域、限制性别、使用时间、如果)

    品类跟优惠券关联表:

    店铺跟优惠券关联表:

    商品跟优惠券关联表:商品id 、优惠券id

    订单关联优惠信息表:下单后订单id 跟优惠券id 放在这张表里(退单后根据这张表补发)。放计算好的优惠信息。

    其他方面的考虑

    1. 防止多领?(并发条件下)

    加锁、判断是否领过(可用缓存做标记)

    1. 限流

    2.1 削锋限流(外部网关、内部网关)

    2.2 个人领取频率限流。如果有需要。可以用redis搞(redis-cell )。

    3.分库分表

    有需要可以根据优惠券id 分 ,优惠券的表。

    商品id跟优惠券关联的,按照商品id分。

    以什么维度主要查就以什么id去分。

    1. 连接数问题

    连接池

    5.优惠券系统缓存一致性怎么保证?

    也分场景。优惠券后台的配置尽量走消息队列。更改库然后更改redis。然后消息标记为消息成功。如果消息不成功告警。重新执行。

    参考资料

    优惠券系统应该如何设计?

    相关文章

      网友评论

        本文标题:优惠券

        本文链接:https://www.haomeiwen.com/subject/zjnoshtx.html