
线上问题分析&场景设计
文章平均质量分 79
线上问题分析&场景设计
点滴~
进阶中的工程师
展开
-
慢SQL如何定位处理?
给你张表,发现查询速度很慢,你有那些解决方案mysql的explain有什么作用?如果Explain用到的索引不正确的话,有什么办法干预吗?MySQL | CS-Notes 面试笔记对于索引,在开发中需要注意什么?_索引需要注意啥-优快云博客概述:MySQL 主从同步,读写分离技术以及集群的搭建,SQL 调优_mysol 主从同步,读写分离和集群的搭建-优快云博客explain 执行分析,主要关注哪些字段,为什么?_explain主要关注哪些字段-优快云博客原创 2025-02-28 23:52:52 · 222 阅读 · 0 评论 -
对于索引,在开发中需要注意什么?
在开发中使用索引时,需要根据查询需求设计合理的索引,避免索引失效和过度索引。同时,定期监控和维护索引,确保其能够有效提升查询性能。通过合理使用索引,可以显著提高数据库的查询效率,降低系统负载。原创 2025-02-10 22:35:41 · 694 阅读 · 0 评论 -
系统监控指标调研
三高”系统的监控需以。原创 2025-04-02 01:13:04 · 817 阅读 · 0 评论 -
分布式服务监控
分布式服务监控在保障分布式系统稳定运行中至关重要,通过各类监控组件对关键指标进行监测,能及时发现并解决问题。下面将从监控组件、其优缺点、监控指标及其作用展开介绍。原创 2025-02-23 21:00:17 · 748 阅读 · 0 评论 -
服务接口版本控制及灰度发布调研
参考:服务API版本控制设计与实践关于接口升级版本的一些思考原创 2025-04-01 10:41:51 · 538 阅读 · 0 评论 -
状态机技术选型调研
参考:得物商品状态体系介绍商品上新业务状态机接入实践 | 得物技术原创 2025-03-29 22:07:11 · 183 阅读 · 0 评论 -
Sentinel 相关知识点
Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 通过对资源的实时监控和基于各种算法的规则判断,实现了对微服务系统的流量控制、熔断降级和系统保护等功能,保障了系统的稳定性和可用性。原创 2025-03-29 22:04:36 · 432 阅读 · 0 评论 -
关于极端场景下,数据库更新与 MQ 消息一致性保障方案的详细总结
优先选择事务消息:若使用 RocketMQ 且业务对一致性要求高消息表作为补充:适用于传统系统或消息中间件不支持事务的场景补偿机制:无论哪种方案,均需实现消息重试和人工干预通道通过合理设计,可以在极端场景下保障数据库与 MQ 消息的最终一致性,满足不同业务场景的需求。原创 2025-03-23 22:30:31 · 498 阅读 · 0 评论 -
ES如果要查10条数据需要从各个分片上各取多少条数据?
在 Elasticsearch 中,查询数据时,每个分片会返回一定数量的文档,然后协调节点将这些结果汇总并排序,最终返回给用户。具体每个分片返回多少条数据,取决于查询的类型和分片的数量。对于聚合查询,Elasticsearch 会在每个分片上执行聚合操作,然后将结果汇总。每个分片返回的数据量取决于聚合的类型和分片上的数据分布。它类似于 SQL 中的。聚合查询的核心思想是:通过对文档进行分组和计算,提取出有价值的信息,而不是仅仅返回原始文档。每个分片会独立执行聚合操作,生成分片级别的聚合结果。原创 2025-03-20 23:08:37 · 1069 阅读 · 0 评论 -
热key探测技术架构设计与实践
首先我们要定义一下如何才能算是一个热点,我们知道热点产生的条件是 2 个:一个时间,一个流量。那么根据这个条件我们可以简单定义一个规则:比如 1 秒内访问 1000 次的数据算是热数据,当然这个数据需要根据具体的业务场景和过往数据进行具体评估。,检测热数据很简单,直接在本地为每个 Key 创建一个滑动窗口计数器,统计单位时间内的访问总数(频率),并通过一个集合存放检测到的热 Key。,对热 Key 的访问是分散在不同的机器上的,无法在本地独立地进行计算,因此,需要一个独立的、集中的。原创 2025-03-16 23:45:24 · 287 阅读 · 0 评论 -
系统稳定性建设
文章围绕系统稳定性建设展开,结合京东在 618 前的准备工作,从后端研发视角阐述了研发阶段和上线阶段的稳定性建设要点,还涉及线上问题的应对方法。原创 2025-03-14 23:56:30 · 307 阅读 · 0 评论 -
本地缓存调研
数据存储内存存储:可将数据缓存到应用程序的内存中,能快速访问,极大减少对数据库的频繁访问,提升系统响应速度,适用于高频访问的热点数据,像电商系统中的热门商品信息、社交平台的用户基本资料等。磁盘存储:当内存空间不足时,支持将部分缓存数据写入磁盘。磁盘存储容量大,可避免因内存限制导致的数据丢失问题。比如在一些数据量庞大且访问频率不均衡的系统中,可把低频访问的数据存于磁盘。两者结合:支持内存和磁盘存储相结合的方式,合理利用两者优势,既能保证常用数据的快速读取,又能处理大量的缓存数据。缓存策略过期策略。原创 2025-03-11 00:45:15 · 736 阅读 · 0 评论 -
给一个10G的文件,里面只有两行记录是一样的,如何找出?(电脑内存只有500M)
通过分块处理、外部排序和归并排序,可以在内存有限的情况下高效地找出大文件中的重复行。这种方法适用于处理超大规模数据文件的场景。原创 2025-03-01 09:03:50 · 75 阅读 · 0 评论 -
事务问题?
解决方案:由于插入任务和发送消息操作在一个事务里,消费者收到任务消息后,会立马处理并更新状态,由于事务还没提交,导致更新不到该任务数据,导致更新状态失败;解决办法是在发送消息前先提交插入任务的事务。问题:往任务表中插入任务后,发送消息异步处理任务,并更新任务状态失败。原创 2025-03-01 09:05:05 · 110 阅读 · 0 评论 -
为什么要避免大事务以及大事务如何解决?
如电商系统促销时大事务更新订单状态,阻塞其他订单操作。在主从复制架构中,大事务使从库需长时间执行主库事务日志,造成从库数据滞后,影响读写分离效果,引发业务逻辑错误,如社交平台批量更新用户数据致从库延迟、数据不一致。大事务执行失败回滚时,需撤销大量已执行操作,耗时久,回滚期间相关资源无法释放,系统性能严重下降,如物流系统批量更新运单状态失败回滚致系统近半小时不可用。大事务使日志文件增大,增加备份和恢复的难度与时间,延长备份时间,增加恢复耗时,影响系统可用性,如医疗系统大事务后备份时间大幅增加。原创 2025-02-28 23:51:18 · 101 阅读 · 0 评论 -
接口性能优化?
接口性能优化原创 2025-03-01 09:02:12 · 233 阅读 · 0 评论 -
如何设计一个动态线程池?
线程池通过“池化”思想解决多线程环境下的资源管理问题,避免频繁创建/销毁线程的开销,抑制资源耗尽风险,提升系统稳定性14。变量(高3位表示状态,低29位记录线程数)管理线程池状态(RUNNING、SHUTDOWN、STOP等),确保状态与线程数的一致性611。:实时采集线程池活跃度(活跃线程数/最大线程数)、任务堆积量、拒绝次数等指标,结合配置中心(如Apollo)实现阈值报警。:线程数可设为2×CPU核数,或根据任务阻塞时间调整11。:根据任务类型(CPU/IO密集型)选择线程数和队列类型。原创 2025-02-28 23:50:24 · 100 阅读 · 0 评论 -
库存系统的设计以及超卖问题如何处理?
【代码】库存系统的设计以及超卖问题如何处理?原创 2025-02-28 23:52:26 · 125 阅读 · 0 评论 -
如何设计一个短链系统?
短链系统设计的关键要点:参考:转转短链平台设计与实现高并发短链设计!面试设计题 - 短链接系统设计原创 2025-02-28 23:50:12 · 361 阅读 · 0 评论 -
如何设计一个秒杀系统?
秒杀场景的技术难点,具体内容如下:参考:高并发下秒杀系统的设计原创 2025-02-24 14:58:10 · 275 阅读 · 0 评论 -
CPU 100% 问题怎么排查?
如上图,找到了耗CPU高的线程对应的线程名称“AsyncLogger-1”,以及看到了该线程正在执行代码的堆栈。假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。如上图,10804对应的16进制是0x2a34,当然,这一步可以用计算器。之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。如上图,进程10765内,最耗CPU的线程PID为10804。(3)查看堆栈,定位线程在干嘛,定位对应代码;接着,查看堆栈,找到线程在干嘛。原创 2020-04-20 16:00:57 · 340 阅读 · 0 评论 -
Java服务,内存OOM问题如何快速定位?
某Java服务(假设PID=10765)出现了OOM,最常见的原因为: 本身资源不够,有可能是内存分配确实过小,而正常业务使用了大量内存 申请资源太多,某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽 资源耗尽,某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接 一、确认是不是内存本身就分配过小方法:jmap-heap 1076...转载 2020-04-20 15:57:39 · 498 阅读 · 1 评论 -
java.util.ConcurrentModificationException异常
这是一次异常,在for循环中新加了一大堆代码结果调试报异常debug的方法,对新加的代码选择性的注释掉些代码,再次运行,然后还是报错,再注释,再报错,再注释,再报错。一步步的缩写范围,终于注释掉下面这条代码,好了!为什么会这样?我们看看sort()方法:看到迭代器的操作,估计是这里的问题了。具体参考:java.util.ConcurrentModificationExcept...原创 2019-11-29 20:32:58 · 281 阅读 · 0 评论 -
Java线程池大小的设置
一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数)如果是CPU密集型应用,则线程池大小设置为N+1如果是IO密集型应用,则线程池大小设置为2N+1如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。但是,IO优化中,这样的估算公式可能更适合:最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目因...转载 2018-05-31 16:31:48 · 4606 阅读 · 3 评论 -
浅谈HTTPS、SSL、数字证书
转载自:http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html全球可信的SSL数字证书申请:http://www.shuzizhengshu.com在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。本文追本溯源围绕这个模式谈一谈。名词解释首先解释一下上面...转载 2018-06-05 16:42:50 · 734 阅读 · 0 评论 -
OOM问题分析及解决?
最近查找了很多关于OOM,甚至于Java内存管理以及JVM的相关资料,发现这方面的东西太多了,竟有一种眼花缭乱的感觉,要想了解全面的话,恐非一篇文章能说清的,因此按照自己的理解整理了一篇,剩下的还需要继续学习。1)什么是OOM?OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。原创 2018-06-05 10:43:49 · 919 阅读 · 0 评论 -
浏览器中输入URL到返回页面的全过程
第一步,解析域名,找到主机IP(1)浏览器会缓存DNS一段时间,一般2-30分钟不等。如果有缓存,直接返回IP,否则下一步。(2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件。如果找到,直接返回IP,否则下一步。(在计算机本地目录etc下有一个hosts文件,hosts文件中保存有域名与IP的对应解析,通常也可以修改hosts科学上网或破解软件。)(3)进行了(1)(2)本地查...转载 2018-05-25 11:45:43 · 502 阅读 · 0 评论 -
final修饰的类有什么特点
变量定义为final,一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。方法定义为final,是为了防止任何继承类改变它。类定义为final,则该类无法给任何类继承。final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋...转载 2018-04-22 10:59:31 · 1994 阅读 · 0 评论 -
Java中equals,Hashcode和==的区别
参考:Java中equals,Hashcode和==的区别转载 2018-04-17 22:32:03 · 157 阅读 · 0 评论 -
List集合中的元素进行排序
面试的时候问到这么个问题,以前没有注意,现在总结一下。Collections对List集合中的数据进行排序,有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到,Java中提供的对集合进行操作的工具类Collections,其中的sort方法。先看一个简单的例子:public static void main(String[] args) { List<Integer&g...转载 2018-04-10 13:59:17 · 1318 阅读 · 0 评论 -
序列化和反序列化的底层实现原理是什么?
请点击:序列化和反序列化的底层实现原理是什么?转载 2018-06-10 10:45:38 · 914 阅读 · 0 评论 -
Java是如何实现跨平台的?
Java是如何实现跨平台的?跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM)。JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编...原创 2018-07-07 15:21:08 · 4236 阅读 · 0 评论 -
Cookies 和 Session的区别
Cookies 和 Session的区别转载 2018-07-07 15:29:03 · 244 阅读 · 0 评论 -
map按照key,value比较
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;i...转载 2018-08-04 23:49:09 · 3949 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
String使用举例String str = new String("welcome to ");str += "here";它的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后再将StringBuffer toSting();这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣。 并且由于Strin...原创 2018-08-30 20:01:14 · 260 阅读 · 0 评论 -
@Slf4j 不起作用的问题
原创 2018-12-13 16:29:14 · 7987 阅读 · 0 评论 -
设置IDEA支持JS ES6语法
原创 2018-12-14 10:16:27 · 3965 阅读 · 0 评论 -
@RequestBody、@RequestParam 、@PathVariable、mvn
@RequestBodyhttps://blog.youkuaiyun.com/justry_deng/article/details/80972817https://www.cnblogs.com/jimmy-c/p/4142441.htmlhttps://blog.youkuaiyun.com/micro_hz/article/details/53157738@RequestParamhttps...原创 2019-03-27 16:00:17 · 252 阅读 · 0 评论 -
阿里巴巴 Java 开发手册
一、编程规约(一)命名风格1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / __name / $name / name_ / name$ / name__2. 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要...转载 2019-03-28 16:42:19 · 544 阅读 · 0 评论 -
StringUtils里面的isBlank()方法的使用以及StringUtils的其他方法的使用
https://blog.youkuaiyun.com/qq_26584263/article/details/80004353转载 2019-03-29 12:23:50 · 1873 阅读 · 0 评论