唯品会后端架构部分干货分享(一) ( 20180613 by flyer)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/AlbertFly/article/details/80695248

有机会了解到唯品会架构的后端的部分实现,与大家分享一下

 20180613 by flyer

1
react事件
延时处理 延时队列 (线程池) (100ms,1s,5s 越来越大,因为对方服务可能出问题了)


 可以参考:
java延迟队列
https://blog.csdn.net/superdog007/article/details/53944884
延迟队列DelayQueue
https://www.cnblogs.com/tietazhan/p/6632468.html
分布式延迟消息队列讨论
https://www.cnblogs.com/yx1989/p/7000503.html
基于redis的延迟消息队列设计
https://www.cnblogs.com/peachyy/p/7398430.html
newScheduledThreadPool延时任务线程池,实现原理
https://blog.csdn.net/lisuyibmd/article/details/53085368




2
线程池 + 阻塞队列 做限流 (比如保护上海银行的接口) aop切面结合redis 
每秒请求对方服务多少次,超过报警(目前只做到报警),可以返回其他异常码,快速失败


降级处理 



分布式锁(redis实现) 或者 数据库乐观锁:
来实现防止重复操作 (有一些重试的,内部) 比如mq消息消费了两次
结合处理请求号,每个请求号数据库一条记录,利用状态流转控制,防止重复操作.




4
接口全部实现幂等性  post




5
分布式事务主要依靠业务层处理
比如请求对方两个接口 同时,一个A失败 一个B成功,就要调用回滚B接口的一个接口来回滚
并且如果回滚还失败,就要一直回滚,可以结合定时任务或者mq 参考第6条


6
调用第三方的超时重试 有两种
1 使用定时任务 阶段性定时重试 必须要成功最后,(这种要求较高的实时性)
2 使用mq 利用mq的自身重试,配置参数 重试多少次,在多少时间内,消费时候成功ack掉 不成功

  不从mq里面删掉 继续消费  消费不了最后进入死信队列


待续...

阅读更多
换一批

没有更多推荐了,返回首页