秒杀系统架构分析与实战

By | 2019-09-08

1 秒杀业务分析 正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高; 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 对现有网站业务造… Read More »

分布式消息系统,设计要点。画龙画虎难画骨

By | 2019-09-03

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 分布式缓存方面,redis勇夺花魁。但对于消息队列mq来说,还处于百花齐放的年代。 缓存系统,基本上解决一个存取问题,就万事大吉了,调用是同步的。对于消息队列来说,就不太一样。它的使用场景多样,可靠级别多变,从生产端到消费端,过程是异步的。 消息系统的设计要点,有很多。现在,很难有一个消息系统,能够兼顾下面提到的设计要点… Read More »

在 Spring Boot 中,如何干掉 if else!

By | 2019-05-22

需求 传统实现 策略模式实现 ClassScanner:扫描工具类源码 总结 需求 这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。 订单实体: service接口: 传统实现 根据订单类型写一堆的if else: 策略模式实现 利用策略模式,只需要两行即可实现业务逻辑: 可以看到上面的方法中注入了HandlerContext,这是一个处… Read More »

为什么你学不会递归?告别递归,谈谈我的一些经验

By | 2019-03-13

可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。也有好几个人来问我有没有快速掌握递归的捷径啊。说实话,哪来那么多捷径啊,不过,我还是想写一篇文章,谈谈我的一些经验,或许,能够给你带来一些帮助… Read More »

【基本功】不可不说的Java“锁”事

By | 2018-11-15

前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录: 1. 乐观锁 VS… Read More »

微服务的4个设计原则和19个解决方案

By | 2017-09-07

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。   本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个“微服务应用平台”需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。   微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringClou… Read More »