考试压测及瓶颈排查 引入对整个考试系统再次进行压测,并给出排查瓶颈以及不断优化的过程 可能影响性能因素 代码(设计缓存是否命中) exam pod数量,pod的Xmx gateway 、usercenter 数量 redis mysql 索引 本地网速 最简单查看是否是瓶颈的方式:cpu利用率 压测参数 人数x=6k~10k warm-up=100s 题目延时5~195s,平均delay 2024-03-01 开发 > 后端 #后端 #java #优化 #水杉 #压测
趣学架构 https://www.bilibili.com/video/BV1pz4y1j72C 1.大学学点啥学习能力 知识多 更新换代快 时间约束 2.搭建系统先搭架子1.用户首页(用户信息、余额、消费等) 2.新需求需要添加用户修改功能;存在许多重复代码 解决方案1:添加工具类 模板方法模式统一逻辑,标准化流程 解决方案2:模板方法模式;保证必须要调用以及调用顺序;通用部分直接一起升级(l 2024-01-25 系统架构 #java #设计模式 #系统架构
高性能短链设计 原文链接:高性能短链设计 - 掘金 (juejin.cn) 介绍将长连接转为一个短连接,并且再访问时再转换回来 短链: 最终长链 可以看到,短信中的是短链,但最后变成了长链;使用短链的好处 再具有文字限制的地方(微博),用短链可以占据更少的文字 短链对应转的二维码不密集,更容易识别 跳转的基本实现:请求短链时,会返回状态码302(临时重定向:每次都使用短链请求,易于点击数统计)以及长链的 2023-12-27 项目 #文章精读 #项目 #系统架构
CPU故障排查 CPU故障排查背景在压测考试的时候,无意间看到resource、teacher-admin等微服务CPU利用率百分之百,询问相关负责同学并不了解,于是自己寻找了一下原因。 方法jstack jstack可以定位线程的执行情况,因此直接进入pod内部执行,发现并没有找到此命令,查看dockerfile打包文件发现打包时是基于jre镜像构建的,并没有jdk中的其他工具,因此需要先安装工具。此外T 2023-12-17 开发 > 后端 #后端 #java #优化 #水杉
订单超时处理 原文链接:订单超时处理的几种方案及分析-阿里云开发者社区 (aliyun.com) 介绍在电商场景下,买卖双方没有面对面交易,许多情况下需要通过超时处理自动关闭订单,如: 买家超时未付款 卖家超时未发货 买家超时自动收货 JDK自带DelayQueue处理流程 把订单插入DelayQueue中,以超时时间作为排序条件,将订单按照超时时间从小到大排序。 起一个线程不停轮询队列的头部,如果订单的 2023-12-15 系统架构 > 设计 #文章精读
考试重构-压测 11/10 ~ 11/23 重构原因 原来考试系统bug很多,redis使用也不合理,30人的考试就可能存在有人进不去考试、交不了卷的情况 原来的代码耦合性高,练习模式、考试模式可能开始考试用的不同函数、进入考试用的不同的函数,有时候改一个地方的功能影响到了另外的地方 重构基本思想 考试数据分为共享数据(题目、考试等)和个人做题数据,共享数据使用redis进行缓存,缓存时间可 2023-11-23 开发 > 后端 #后端 #java #优化 #水杉
对账体系建设 原文链接:https://tech.meituan.com/2018/03/21/balance-accounts.html 引入业务复杂性高:场景多、链路长、数据量大,给资金安全带来了巨大挑战 可能出现问题的场景: 可以看出,这些都是一些上下游交互的边界场景,以及遇到的问题。当然不仅限于这些场景,凡是有系统交互、数据交互边界的场景,都会出现此类问题,我们称之为“一致性问题”。经粗略统计,我们清 2023-11-15 系统架构 > 稳定性 #文章精读
TCP数据粘包 引入网络层通常四层协议,数据以一个个包在网络中传输,从上到下每经过一层,数据包头部就多出一些信息; TCP头:序列号和确认号、源端口和目的端口 IP头:源IP和目的IP、长度、偏移 mac头:源mac和目的mac 拆分数据链路层提供给IP层每次传输的包大小有限制MTU,如果超过这个大小TCP 中把消息分成 MSS MTU: Maximum Transmit Unit,最大传输单元。 由网络 2023-10-09 计算机基础 > 计算机网络 #文章精读 #计算机网络 #TCP
一文搞懂 Redis 架构演化之路(腾讯技术工程) 引言redis是目前最流行的缓存中间件,但他是如何保证实现稳定并且高性能的提供服务的? 如果只是单机版redis,有什么问题? 宕机后,如何快速恢复? 主从集群以及sentinel可以带来怎样的优势? 分片集群作用? 这篇文章从0到1,一步步构建出当前的redis 单机redis 如上图所示,项目的数据最简单的就是直接从mysql读取,现在多了一个redis缓存,并使用cache aside 2023-09-10 系统架构 > 高性能 #文章精读 #redis #高性能
一个新进程的诞生[linux源码趣读] 引入第一部分和第二部分,为我们这个第三部分做了充足的铺垫工作。 第一部分 进入内核前的苦力活 第二部分 大战前期的初始化工作 到了第三部分,简单说就是从内核态切换到用户态,然后通过 fork 创建出一个新的进程,再之后老进程进入死循环。 123456789101112void main(void) { // 第二部分的内容,各种初始化工作 ... // 第三部分的内容, 2023-07-07 计算机基础 > 操作系统 > linux源码趣读 #操作系统 #linux