谈谈架构和微服务 不知从何时起,与同事,面试者,面试官谈起架构理念,总是绕不开微服务。甚至有时候听到这三个字的时候,脑壳会痛,相似的还有中台, 总觉得是旧瓶装新酒。 当然此时的盛行是有其原因的,猜测主要原因是容器化的盛行。 架构和微服务的定义: 能给出合适的定义才能表明一个人真正理解了所描述的事物。 架构: 按照一定的方法设计出来,把系统划分成颗粒合适,边界分明,复用合理...
谈谈如何设计一个支持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),核心线程会一直存活,即使空闲也...
Java 中自己实现 RPC 中 异步转同步
核心实现原理 RpcResponseFutureManager: 核心管理器,使用 ConcurrentHashMap 存储 CompletableFuture,实现请求ID与Future的映射 异步转同步流程:客户端发起请求时创建 Future 异步发送 RPC 请求 调用 future.get() 阻塞等待响应 服务端处理完成后通...
Java性能分析第四节 - Linux 下 JVM监控.
监控 与 性能分析 监控 监控通常是指一种在生产,质量评估或者开发环境中带有预防或主动性的活动。当应用负责人收到性能问题却没有足以定位问题的线索,首先会查看性能监控,随后性能 分析。 性能分析 性能分析是一种侵入方式收集运行性能数据的活动,他会影响应用的吞吐量或响应时间。性能分析是监控报警后的回应,关注并监控更加集中。 JVM 监控 一、Linux 下 JVM 内存监控 Linux 下 常...
Java性能分析第二节 - Linux 下 内存监控.
一、基本信息和工具 服务器配置 阿里云上ECS服务器,配置为2核4G为例 压测工具 wrk, 下载见 wrk下载和安装 压测脚本 wrk -t 2 -c 500 -d 60s --latency http://localhost:8080/mem?count=1000 Java版本:JDK21,启动命令:java -jar -Xms1024m -Xmx1024m -XX:N...
Java性能分析第二节 - Linux 下 CPU 监控.
一、基本信息和工具 服务器配置 阿里云上ECS服务器,配置为2核4G为例 压测工具 wrk, 下载见 wrk下载和安装 压测脚本 wrk -t 2 -c 500 -d 60s --latency http://localhost:8080/json?count=1000 Java 核心代码,用于压测,来观测CPU负载 @GetMapping("/json") p...