COW(Copy-On-Write,写时复制) 是一种常用的无锁设计思想,适用于读多写少的场景。 一、COW(写时复制)概念 原理: 多个线程读取共享数据时,使用同一份数据副本,不会发生冲突; 当某个线程需要修改数据时,它复制一份数据副本进行修改,修改完成后再将修改后的副本替换为共享数据; 读线程看到的始终是旧的、稳定的数据副本; 写操作的替换过程通常使用 CAS...
JDK8-list.parallelStream() 的坑
list.parallelStream() 默认使用 全局公共 ForkJoinPool(ForkJoinPool.commonPool())。 因为是全局的, 会导致如果线程池用完,其他 parallelStream 就会卡死。问题非常不好找 它使用哪个线程池? 当你调用 parallelStream() 时,JDK 会把任务提交到: ForkJoinPool.commonPo...
分布式场景下的资损防控
摘要: 原创出处 https://ifeve.com/ 欢迎关注和转载,保留摘要,谢谢! 资损的定义 资损是在指在业务活动中,业务规则和实际资金流动不一致,导致业务参与方中的任何一方或多方遭受了资金损失。简单理解就是系统的某个功能出现了BUG,导致用户或者公司出现了资金的损失,比如在营销过程中多给某个用户发了10元红包,或者是用户领取了10元红包无法使用,用户在支付时看到的订单金额是...
软件架构设计
软件架构设计一句话总结 软件架构设计是一门在复杂系统中平衡功能、性能与演进性的结构化决策艺术。 架构组成 一、架构结构(Structure) 描述系统由哪些部分组成以及如何协作: 模块划分(Modules / Components):功能单元,如服务、子系统、类、包等。 层次结构(Layers):如表示层、业务层、数据层。 交互关系(Connectors / Int...
谈谈架构和微服务
谈谈架构和微服务 不知从何时起,与同事,面试者,面试官谈起架构理念,总是绕不开微服务。甚至有时候听到这三个字的时候,脑壳会痛,相似的还有中台, 总觉得是旧瓶装新酒。 当然此时的盛行是有其原因的,猜测主要原因是容器化的盛行。 架构和微服务的定义: 能给出合适的定义才能表明一个人真正理解了所描述的事物。 架构: 按照一定的方法设计出来,把系统划分成颗粒合适,边界分明,复用合理...
谈谈如何设计一个支持10万QPS的秒杀系统?核心难点是什么?
谈谈如何设计一个支持10万QPS的秒杀系统?核心难点是什么? 核心设计思路围绕“限流、缓存、异步、降级”展开,匹配“高并发、高稳定性”的要求: 1. 系统架构设计(从外到内): 接入层:用Nginx做负载均衡,分发请求到多个网关节点;同时配置Nginx限流(如每IP每秒10次请求),拦截无效请求; 网关层:Spring Cloud Gateway,做接口鉴权、...
深度解析springcloud分布式微服务的实现
分布式系统 微服务就是原来臃肿的项目拆分为多个模块互不关联。如:按照子服务拆分、数据库、接口,依次往下就更加细粒度,当然运维也就越来越难受了。 分布式则是偏向与机器将诺大的系统划分为多个模块部署在不同服务器上。 微服务和分布式就是作用的“目标不一样”。 微服务与Spring Cloud 微服务是一种概念,spring-cloud是微服务的实现。 微服务也不一定必须使用cloud来实现...
分布式场景下的稳定性保障
摘要: 原创出处 https://ifeve.com/ 欢迎关注和转载,保留摘要,谢谢! 分布式场景下的稳定性保障 1、什么是稳定性保障 稳定性保障简单理解就是不让系统出现不可用的情况,或者不可用的情况每年只能发生几十分钟。为什么要稳定性保障?因为现在很多的电商和支付系统已经属于社会基础系统,持续一段时间不可用会影响比较大,同时也损失了用户的信任。 稳定性保障的场景非常多,只要流量非...
wrk 下载和安装
在国内环境下载 wrk 时,由于 GitHub 访问可能不稳定,可通过 国内镜像源 或 直接下载源码包 两种方式解决。以下是适配国内网络的下载方法: 一、通过 Gitee 镜像仓库下载(推荐) Gitee 是国内代码托管平台,提供 wrk 的镜像仓库,下载速度快且稳定: 1. 安装依赖(同之前步骤,确保已安装) # Alibaba Cloud Linux/CentOS sudo yum ...
Java 并发编程 -ThreadPoolExecutor
ThreadPoolExecutor 线程池中的核心线程不会自动销毁,而是会根据线程池的配置(核心参数)和状态,在特定条件下被回收(销毁) 或复用,核心原则是:尽量复用线程以减少创建/销毁开销,仅在空闲时间过长或线程池收缩时销毁线程。 关键结论 核心线程(corePoolSize):默认情况下(allowCoreThreadTimeOut=false),核心线程会一直存活,即使空闲也...