简历优化的好伙伴 - 高并发写

大家好,我是爱吃芝士的土豆倪,今天想给大家分享的是 - 简历优化的好伙伴 - 高并发写。

我们继续顺着上一个视频,高并发读继续讨论。

什么场景下写的qps会比较高呢?库存扣减,写库的场景都有可能,比如领劵,用掉了优惠卷等,那么我们来说一个共性,写qps。

首先第一个就是 流量削峰,那也就是说我们的峰值写流量太高了,我们db根本承受不住,要崩溃了,但是你就是要写那么多,那咋办呀,那就 慢慢写,也就是将峰值流量打到服务可以承受的程度,保证db不挂。常见的方式比如mq消峰,因为毕竟消息队列可以控制流速,以及内存消峰,比如直播间点赞,很多时候是你点了好多次一起加上的,而不是点一次加一次,还有一个是业务上的改动,流量分散,并不是所有的请求都是在那一瞬间都要打过来,有时候通过某种业务拦截,分批的过来,用户感知不到,但是却平分了压力。

第二个就是随机丢弃,相当于压力太大了,有些就不处理,比如优惠卷,领劵的时候某些场景返回库存不足呗

第三个是redis分片存储,提升并发度,比如hashmap java1.7原理,将一些优惠卷的数量存储到不同的分片中,能够提升写的并发度,但是需要注意的是,设计到跨分片的扣减,需要使用lua一起。

以上就是整理的一些常见的高并发写的实际问题。我们可以将其结合进我们自己的项目中。

以上就是我的分享了,我是爱吃芝士的土豆倪,谢谢大家收看。

全部评论
倪佬真强
点赞 回复 分享
发布于 07-20 23:24 上海

相关推荐

10-10 22:16
门头沟学院 Java
#同程秋招#第一次线下面,同程宣讲的要求是想要技术强的,所以面试感觉强度就不低,果然问的都是一些底层相关的内容面试官人很好,也不压力,已经尽量循循善诱了,奈何本人太菜,面试官想帮也帮不了总时长30min左右### 项目拷打- 项目内容介绍和提问- 使用tsdb对于不同的数据应该注意什么?- 使用什么tsdb?- 作为业务方使用tsdb要规范tsdb些什么问题?- xxl-job底层实现?(不会)- 如何自己实现xxl-job (打的乱七八糟不是很满意)### 多线程理解当场看了一段代码```javaclass Test {    static boolean isRight = false;        public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> {            int i = 0;            while (!isRight) {                i++;                System.out.println(i);            }        });        t1.start();                Thread.sleep(100);                isRight = true;                t1.join();    }}```- 代码执行后t1能**及时停止**吗?  - 多线程情况下可能不能。在 Java 中,线程对共享变量的修改未必对其他线程立即可见。如果变量没有使用 `volatile` 或其他同步机制,`t1` 线程可能会读取到一个旧的缓存值,而不会看到 `main` 线程对 `isRight` 变量的更新。因此,`t1` 线程可能不会在 `main` 线程修改 `isRight = true` 之后立即退出。- 没答上来,提示了volatile,只会背八股,所以还是没答上来。- 还问了看没看过缓冲池/jvm的低层源码,说只看过集合的,也没问。- 顺势问了下如果学新技术怎么办?- 反问。说这个岗位涉及底层,所以需要了解很底层的内容。- 凉凉地走了~#面经#
点赞 评论 收藏
分享
2 4 评论
分享
牛客网
牛客企业服务