熟悉redis,elasticsearch,rabbitmq,mysql的使用。
了解分布式锁的实现,例如基于排它锁、基于redis等。
熟悉springcloud 2020。
熟悉SSM以及SpringBoot、tkmybatis和mybatis plus。
熟悉docker的使用
B2C商城
架构:SpringCloud + RabbitMQ + ElasticSearch + Canal + Nginx + Redis + MySQL + Mybatis Plus
品牌微服务
商品管理CRUD, 使用FastDFS实现图片上传。商城门户页数据缓存方案:通过openresty的内置nginx对IP进行限流,通过lua脚本读取redis缓存的商品分类信息缓存,加载进Nginx缓存中。若Redis中也不存在,则先查询数据库,加载进redis缓存。同时开启MySQL的binlog,通过Canal监听MySQL的数据表同步更新缓存。
商品详情页静态化微服务
使用thymeleaf模版引擎,生成静态商品详情页,并存入Nginx中。同时使用canal监听MySQL,更新商品详情页
搜索微服务
根据商品spu构建ES索引文档, 索引的信息包括:商品标题、分类名称、品牌、可搜索的spu和sku等。
使用Spring Data ElasticSearch API实现搜索、品牌聚合搜索、分类聚合搜索、搜索结果分页及排序等。
Oauth2授权微服务
Oauth2 Password Grant Type基于JWT的非对称加密颁发token、使用keytool生成的私钥颁发令牌,公钥解析令牌。发放管理员令牌供feign调用。
秒杀微服务
开启SpringBoot定时任务,通过cron表达式,定时的将秒杀商品哈希存储到redis。
用户访问Nginx服务器,Openresty Nginx服务中通过Lua脚本从redis中获取秒杀商品列表 - > 再通过lua脚本从redis中获取秒杀商品详情,判断是否有库存 -> 将用户秒杀排队信息,leftPush存入redis的list队列中。-> 取出排队信息,进行多线程抢单。同时使用Redisson 为抢单过程加上分布式锁,防止商品超卖问题。抢单成功后,向MQ发送异步消息,监听用户是否支付,五分钟内未支付,消息进入死信队列,监听死信队列取消订单回滚库存。支付成功,再将库存变化从redis同步到MySQL