点击空白处退出提示
作品详情
项目概述:
1. 业务背景:服务于各大奢侈品品牌,为他们提供一个"线上商城"助力于远程销售以及为他们的导购提供企微云助手以便于管理他们的会员。从而提高品牌的线上线下的销售能力会员吸收力度等。
2. 核心技术框架:SpringCloud+dockerSwarm+Nacos+springboot+mybatisPlus+Kafka+redisson+histrx+xxl-job+seata
3. 模块介绍:网关模块,后台服务,导购应用模块(导购任务服务,在职离职分配服务,朋友圈服务,会员360服务,远程销售服务)。
报表服务,组件服务(开放平台配置,oss 文件服务,日志服务,企微回调消息生产者),BROKER 服务(消费 kafka 处理不同事件,定时任务)等。
4.项目相关细节:
1.DockerSwarm做服务容器负载,Nacos 做注册中心。Gateway+JWT 鉴权。后台服务使用 SpringSecurity 权限改造 重写 org,springframerwork.security 包的匹配方法 实现可序列化。
保证路由对象可反序列化从而。保证多台服务器权限一致。
4.2 利用 Nacos+git+kafka 实现消息总线及配置中心,动态更新配置。
4.3导购任务每天产生50w+数据,对其亿级表拆分优化。
4.4分配会员时接受企微的并发回调 利用 kafka ack 机制和线程池处理保证消息可靠和并发能力。优化前一秒处理两三个(消息会过期)。优化后可承受10个以上。
4.5 除了基本的远程销售功能。品牌对于大型节日如双11,618会做一些抢购活动。
通过短信形式附带我们静态H5页面的短链发到客户群体(大概60w+客户群体)。用户通过短链进入页面.然后携带我们预先为活动刷好的 schema ,渠道参数,活动 id 等信息进入小程序并注册会员。
之后到指定页面进行抢购。QPS 大概为200左右。PV 12000左右。
对于抢购接口:
a.使用 histrx 对秒杀接口实现服务隔离防止雪崩效应
b.使用 guava RateLimiter 令牌桶算法实现对秒杀接口限流
c.从 redis 中获取对应商品的令牌,只要能够抢到令牌就能够秒杀成功
d.使用异步形式 RabbitMQ 实现对商品的库存修改,实际的库存在品牌。
e.使用乐观锁机制(版本号)+库存>0判断防止库存超卖问题
6.redisson 分布式锁加自定义注解实现解决对外接口以及部分内部接口并发请求时的幂等问题
7.xxl-job 来解耦一些耗时的任务,做补偿机制,第三方支付对账等
8.利用 kafka 实现接收企业微信的各种回调事件并采用策略模式消费不同事件类型
9.通过 AOP 拦截统一向 Kafka 推送日志。日志服务采用 logstash 订阅消息输出到 es .另外消费日志根据事件类型做不同处理。
10.设计模式。多租户模式,利用 redis 缓存一些请求令牌并做续命以及包括路由权限,图片地址等。代理模式封装企微接口。策略模式接收处理消费者的事件分发。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论