最近,被推送了很多秒殺架構的文章,忙裏偷閒本身也總結了一下互聯網平臺秒殺架構設計,固然也借鑑了很多同窗的思路。俗話說,脫離案例講架構都是耍流氓,最終使用SpringBoot模擬實現了部分秒殺場景,同時跟你們分享交流一下。css
秒殺場景無非就是多個用戶在同時搶購一件或者多件商品,專用詞彙就是所謂的高併發。現實中常常被你們喜聞樂見的場景,一羣大媽搶購打折雞蛋的畫面必定不會陌生,如此場面讓服務員大姐很無奈,遇上不要錢了。前端
用戶規模可大可小,幾百或者上千人的活動單體架構足以能夠應付,簡單的加鎖、進程內隊列就能夠輕鬆搞定。一旦上升到百萬、千萬級別的規模就要考慮分佈式集羣來應對瞬時高併發。java
秒殺架構.pnggit
整個壓測優化過程就是一個不斷優化不斷改進的過程,事先經過測試不斷髮現問題,優化系統,避免問題,指定應急方案,才能讓系統的穩定性和性能都獲得質的提高。web
可能秒殺架構原理你們都懂,網上也有很多實現方式,但大多都是文字的描述,告訴你如何如何,什麼加鎖、緩存、隊列之類。但不多全面有的案例告訴你如何去作,既然是從0到1,但願如下代碼案例能夠幫助到你。固然最終落實到生產,還有很長的路要走,要根據本身的業務進行編碼,實施並部署。redis
你將會在代碼案例中學到如下知識(不按期補充):spring
├─src │ ├─main │ │ ├─java │ │ │ └─com │ │ │ └─itstyle │ │ │ └─seckill │ │ │ │ Application.java │ │ │ │ │ │ │ ├─common │ │ │ │ ├─api │ │ │ │ │ SwaggerConfig.java │ │ │ │ │ │ │ │ │ ├─config │ │ │ │ │ IndexController.java │ │ │ │ │ │ │ │ │ ├─dynamicquery │ │ │ │ │ DynamicQuery.java │ │ │ │ │ DynamicQueryImpl.java │ │ │ │ │ NativeQueryResultEntity.java │ │ │ │ │ │ │ │ │ ├─entity │ │ │ │ │ Result.java │ │ │ │ │ Seckill.java │ │ │ │ │ SuccessKilled.java │ │ │ │ │ │ │ │ │ ├─enums │ │ │ │ │ SeckillStatEnum.java │ │ │ │ │ │ │ │ │ ├─interceptor │ │ │ │ │ MyAdapter.java │ │ │ │ │ │ │ │ │ └─redis │ │ │ │ RedisConfig.java │ │ │ │ RedisUtil.java │ │ │ │ │ │ │ ├─distributedlock │ │ │ │ ├─redis │ │ │ │ │ RedissLockDemo.java │ │ │ │ │ RedissLockUtil.java │ │ │ │ │ RedissonAutoConfiguration.java │ │ │ │ │ RedissonProperties.java │ │ │ │ │ │ │ │ │ └─zookeeper │ │ │ │ ZkLockUtil.java │ │ │ │ │ │ │ ├─queue │ │ │ │ ├─jvm │ │ │ │ │ SeckillQueue.java │ │ │ │ │ TaskRunner.java │ │ │ │ │ │ │ │ │ ├─kafka │ │ │ │ │ KafkaConsumer.java │ │ │ │ │ KafkaSender.java │ │ │ │ │ │ │ │ │ └─redis │ │ │ │ RedisConsumer.java │ │ │ │ RedisSender.java │ │ │ │ RedisSubListenerConfig.java │ │ │ │ │ │ │ ├─repository │ │ │ │ SeckillRepository.java │ │ │ │ │ │ │ ├─service │ │ │ │ │ ISeckillDistributedService.java │ │ │ │ │ ISeckillService.java │ │ │ │ │ │ │ │ │ └─impl │ │ │ │ SeckillDistributedServiceImpl.java │ │ │ │ SeckillServiceImpl.java │ │ │ │ │ │ │ └─web │ │ │ SeckillController.java │ │ │ SeckillDistributedController.java │ │ │ │ │ ├─resources │ │ │ │ application.properties │ │ │ │ logback-spring.xml │ │ │ │ │ │ │ ├─sql │ │ │ │ seckill.sql │ │ │ │ │ │ │ ├─static │ │ │ └─templates │ │ └─webapp
碼雲下載:從0到1構建分佈式秒殺系統sql