从20s优化到500ms,我用了这三招_苏三说技术-编程思维

前言 接口性能问题,对于从事后端开发的同学来说,是一个绕不开的话题。想要优化一个接口的性能,需要从多个方面着手。 其实,我之前也写过一篇接口性能优化相关的文章《聊聊接口性能优化的11个小技巧》,发表之后在全网广受好评,感兴趣的小伙们可以仔细看看。 本文将会接着接口性能优化这个话题,从实战的角度出发,聊聊我是如何优化一个慢查询接口的。 上周我优化了一下线上的批量评分查询接口,将接口性能从最初的20

谈谈高并发系统的一些解决方案-编程思维

本文结合项目经验,整理一份大纲,供参考。 常用指标 RT(Response Time):响应时间。可能会衍生出 TP999、TP99、TP95、TP90等指标。一般在几毫秒到几百毫秒之间。 QPS(Query Per Second):每秒查询量。这是我们最常说的一个指标了。视业务复杂度不同而不同,轻量级的可能单机上万,重量级的可能就几百,这是主要依靠水平扩容来解决。 TPS(Trans

【高并发】两种异步模型与深度解析Future接口-编程思维

大家好,我是冰河~~ 本文有点长,但是满满的干货,以实际案例的形式分析了两种异步模型,并从源码角度深度解析Future接口和FutureTask类,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小! 一、两种异步模型 在Java的并发编程中,大体上会分为两种异步编程模型,一类是直接以异步的形式来并行运行其他的任务,不需要返回任务的结果数据。一类是以异步的形式运行其他任务,需要

入职第一天,老板竟让我优化5亿数据量,要凉凉?-编程思维

>jsoncat:https://github.com/Snailclimb/jsoncat (仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架) 前段时间hellohello-tom离职了,因为个人原因,在修整一段时间后,重新入职了一家新公司。入职的第一天tom哥就经历了一次生产事故,运维同学告警说线上MYSQL负载压力大,直接就把主库MYSQ

程序员,请你不要在坑程序员了🤣-编程思维

>jsoncat:https://github.com/Snailclimb/jsoncat (仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架) 大家好,hellohello-tom又来分享实战经验了。🤣 在一个风和日丽的下午,tom哥正在工位上打着瞌睡,突然QQ群运维同学@全部开发人员说线上绿线环境大面积开始瘫痪,zuul网关大量接口返回se

人人都能看懂系列:《分布式系统改造方案——老旧系统改造篇》-编程思维

打工人打工魂,打工仔hellohello-tom上线啦🤣 tom哥真是越来越懒了,懒得动笔,有很多粉丝一直在催我更新,所以tom哥整理了一下,今天打算来场硬核输出,继续更新人人能看懂系列,文字较多,建议多读几遍 人人都能看懂系列:《分布式系统改造方案——老旧系统改造篇》。 很多同学到一家公司相信说的最多的一句话都是,窝xxxx,这什么垃圾代码,我可没办法维护,让我改的话只能推翻重写,毕竟每个人都

Netty线程模型-编程思维

Netty 的实现虽然参考了 Reactor 模式,但是并没有完全照搬,Netty 中最核心的概念是事件循环(EventLoop),其实也就是 Reactor 模式中的 Reactor,负责监听网络事件并调用事件处理器进行处理。在 4.x 版本的 Netty 中,网络连接和 EventLoop 是稳定的多对 1 关系,而 EventLoop 和 Java 线程是 1 对 1 关系,这里的稳定指的

读写分离学习记-编程思维

读写分离原理 读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是其基本架构图。 读写分离的基本实现是: 数据库服务器搭建主从集群,一主一从、一主多从都可以。 数据库主机负责读写操作,从机只负责读操作。 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。 业务服务器将写操作发给数据库主机,将读操作发给数据库从机。 需要注意的是,这里用的是“主从集群”,而不是

【高并发】深入理解线程的执行顺序-编程思维

大家好,我是冰河~~ 最近经常有读者问我:冰河,线程到底是按照怎样的顺序执行的呀?为了同一回答大家的这个问题,今天我就单独写一篇文章吧。好了,不多说了,进入今天的正题。 一、线程的执行顺序是不确定的 调用Thread的start()方法启动线程时,线程的执行顺序是不确定的。也就是说,在同一个方法中,连续创建多个线程后,调用线程的start()方法的顺序并不能决定线程的执行顺序。 例如,这里,看一

开篇词 | 为什么你要学习高并发系统设计?-编程思维

为什么要学习高并发系统设计? 在解答“为什么要学习高并发系统设计”之前,我想让你思考几个问题: 在微博中,明星动辄拥有几千万甚至上亿的粉丝,你要怎么保证明星发布的内容让粉丝实时地看到呢? 淘宝双十一,当你和上万人一起抢购一件性价比超高的衣服时,怎么保证衣服不会超卖? 春运时我们都会去 12306 订购火车票,以前在抢票时经常遇到页面打不开的情况,那么如果你来设计 12306 系统,要如何保证在千

01 | 高并发系统:它的通用设计方法是什么?-编程思维

我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳地被系统中的服务和组件处理。 来做个简单的比喻吧。 从古至今,长江和黄河流域水患不断,远古时期大禹曾拓宽河道,清除淤沙让流水更加顺畅;都江堰作为史上最成功的治水案例之一,用引流将岷江之水分流到多个支流中,以分担水

02 | 架构分层:我们为什么一定要这么做?-编程思维

在系统从 0 到 1 的阶段,为了让系统快速上线,我们通常是不考虑分层的。但是随着业务越来越复杂,大量的代码纠缠在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。 这时,对系统进行分层就会被提上日程,那么我们要如何对架构进行分层?架构分层和高并发架构设计又有什么关系呢?本节课,我将带你寻找答案。什么是分层架构 软件架构分层在软件工程中是一种常见的设计方式,

03 | 系统设计目标(一):如何提升系统性能?-编程思维

提到互联网系统设计,你可能听到最多的词儿就是“三高”,也就是“高并发”“高性能”“高可用”,它们是互联网系统架构设计永恒的主题。在前两节课中,我带你了解了高并发系统设计的含义,意义以及分层设计原则,接下来,我想带你整体了解一下高并发系统设计的目标,然后在此基础上,进入我们今天的话题:如何提升系统的性能? 高并发系统设计的三大目标:高性能、高可用、可扩展 高并发,是指运用设计手段让系统能够处理更

细说ThreadLocal(一)-编程思维

前言 java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。如下图所示: 其中堆是占虚拟机中内存最大的,堆被所有线程所共享,其最主要的便是存放实例对象。也因为堆内存是共享的,因此在多线程操作的条件下,多线程中堆内存中的数据十分容易发生线程安全的问题。因此为了保证多个线程对变量的安全访问,我们可以将变量放到ThreadLocal对象中,变量在每个线程中都有独立值,

细说JUC的线程池架构-编程思维

前言 线程的创建是需要JVM和OS(操作系统)相互配合的,一次的创建要花费许多的资源。 1.首先,JVM要为该线程分配堆栈和初始化大量内存块,栈内存至少是1MB。 2.其次便是要进行系统的调用,在OS中创建和注册本地的线程。 在Java的高并发场景下频繁的创建和销毁线程,一方面是内存块的频繁分配和回收,另一方面是操作系统频繁注册线程和销毁,内存资源利用率不高的同时,也增加了时间的成本,这是非常低

如果让你设计一个高并发的消息中间件,你会怎么做?-编程思维

写在前面 很多小伙伴去大厂面试,几乎都会遇到一些开放式的题目,这些开放式的题目没有固定的答案,但是它能够实实在在的体现面试者较为真实的系统设计能力和技术功底。如果你回答的比较完美,那么,通过这种开放式题目,就能够让你从众多的面试者中脱颖而出。今天,我们就一起来聊聊,去大厂面试时,一个较为常见的开放式题目:如果让你设计一个高并发的消息中间件,你会怎么做? 消息中间件涉及的知识点 要想设计一个具

程序员视角:鹿晗公布恋情是如何把微博搞炸的?-编程思维

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 微博炸了! 长假的最后一天,躺在床上刷刷微博,想找找搞笑段子乐呵乐呵,玩着玩着微博就卡了起来,起初以为是手机问题,关了应用重新进去还是一样,没办法,只能出去吃饭了,当天应该不止我一个人是这种情况吧,微博卡的不要不要的。当然,后面的事情大家都知道了,中国最历害的黑

《实战java高并发程序设计》源码整理及读书笔记-编程思维

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 前言 不要被标题吓到,虽然书籍是《实战java高并发程序设计》,不过本文只是写一写本人的一点读书感受,顺便整理了一下书中的代码,其实我原本是不想敲代码的,不过去网络上搜了一圈之后,发现根本没有现成的,只能自己敲了,既然整理好了一部分代码,索性就上传到GitHub

Web网站的几个并发量级-编程思维

https://www.cnblogs.com/yiwd/p/3711677.html   评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的。但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈谈几个Web网站的数量级。 相信很多人谈论一个网站的热度,总免不了会询问日均PV,同时在线人数、注册用户数等运营数据,说实话从