[转]高并发下的接口幂等性如何实现
一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况都需要幂等的特性来支持。
Just One Pure Coder
一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题等等很多重要的情况都需要幂等的特性来支持。
High Concurrency, Circuit Breaker, Rate Limit, Load Balance,etc...
by leelight · Published March 7, 2020 · Last modified April 3, 2020
这是我读过写得最好的【秒杀系统架构】分析与实战! RateLimiter 源码分析(Guava 和 Sentinel 实现)
by leelight · Published July 26, 2019 · Last modified September 12, 2019
目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读请求 (7)基于数据库主从架构做读写分离 (8)总结 本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。
什么是高并发?
1 2 |
高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数, 简单点说,就是QPS(Queries per second)。 |
那么我们在谈论高并发的时候,究竟在谈些什么东西呢?
(1)大部分人对Java并发仍停留在理论阶段 (2)中间件系统的内核机制:双缓冲机制 (3)百万并发的技术挑战 (4)内存数据写入的锁机制以及串行化问题 (5)内存缓冲分片机制 + 分段加锁机制 (6)缓冲区写满时的双缓冲交换 (7)且慢!刷写磁盘不是会导致锁持有时间过长吗? (8)内存 + 磁盘并行写机制 (9)为什么必须要用双缓冲机制? (10)总结 “ 这篇文章,给大家聊聊一个百万级并发的中间件系统的内核代码里的锁性能优化。很多同学都对Java并发编程很感兴趣,学习了很多相关的技术和知识。比如volatile、Atomic、synchronized底层、读写锁、AQS、并发包下的集合类、线程池,等等。
by leelight · Published January 23, 2019 · Last modified February 3, 2019
在《亿级流量系统架构》系列第一阶段中,我们从零开始,讲述了一个大型数据平台的几个方面的构建,包括: 如何承载百亿级数据的存储挑战 如何承载设计高容错的分布式架构 如何设计高性能架构,使之能承载百亿级流量 如何设计高并发架构,能够支撑住每秒数十万的并发查询 如何设计全链路99.99%的高可用架构 好!架构演进到这个时候,系统是否无懈可击了呢?
Follow: