自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

原创 你还在遍历搜索集合?别逗了,Java 8 一行代码解决,是真的优雅

背景是的,如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法来查找元素,但仅限是完整元素,而不能模糊搜索或者自定义搜索,这时候确实只能遍历。但现在都 2021 年了,你还在使用传统的遍历集合的方式搜索 List 集合元素吗?那你就太 out 了,使用 Java 8 中的 Stream 搜索元素,一行代码即可搞定,而且还真的很优雅!这篇不会介绍 Stream 基础,Stream 系列我之前写过一个专题了,不懂的关注公众号Java技术栈,然后

2022-01-23 19:56:00 355 1

原创 一次Redis生产事故,公司损失百万

一、前因公司有个核心项目redis的客户端一直是使用的jedis,后面技术负责人要求把jedis客户端替换成效能更高的lettuce客户端,同时使用spring框架自带的RedisTemplate类来操作redis。然而世事难料,就是这么一个简单的需求却让老师傅翻了船。。。二、事故预演按照预设的结果,本次开发任务应该是非常轻松的:将配置文件中jedis连接池的配置项平移替换成lettuce的; 把项目中jedis配置相关的代码删掉; 把使用到jedis的地方替换成redisTempl

2022-01-23 17:01:28 336

原创 关于研发规范化的一些实践和思考

除了老板之外,我想大多数人是讨厌规则的,因为它束缚了我们的自由。然而,无论是个人,还是组织,规则却是发展中必不可少的环节,虽然我们很难看出规则的直接价值。研发类任务,更是一类严谨的工作,它不仅需要严谨的逻辑思维能力,更需要一个完善的研发规范流程。对于程序员的我们,其实我们心里是比较讨厌规则的,在我们心里,只要把需求完成,上线就ok了,其他都是浮云,其实,这样的心里,我以前也是有过。那么,一个标准的合理的研发规范,应该是怎样的?这篇文章,我将与大家分享自己认为的研发规范化应该是怎样的, 若有任何问

2022-01-23 16:54:57 395

原创 每天5分钟玩转 Docker 容器技术之镜像

镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。为什么我们要讨论镜像的内部结构?如果只是使用镜像,当然不需要了解,直接通过 docker 命令下载和运行就可以了。但如果我们想创建自己的镜像,或者想理解 Docker 为什么是轻量级的,就非常有必要学习这部分知识了。一、最小的镜像1、运行hello-world镜像hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成功。我们先通过docker pull从 D..

2021-11-04 22:27:06 261

原创 面试官:ZooKeeper分布式锁实现,你了解了吗?

准备本文会使用到 三台 独立服务器,可以自行提前搭建好。不知道如何搭建的,可以看我之前ZooKeeper集群搭建:Zookeeper 集群部署的那些事儿关于ZooKeeper一些基础命令可以看这篇:Zookeeper入门看这篇就够了前言在平时我们对锁的使用,在针对单个服务,我们可以用 Java 自带的一些锁来实现,资源的顺序访问,但是随着业务的发展,现在基本上公司的服务都是多个,单纯的 Lock或者Synchronize 只能解决单个JVM线程的问题,那么针对于单个服务的 Java...

2021-11-04 22:26:48 223

原创 花五分钟带你了解——DDD领域驱动设计

DDD:指领域驱动设计,是domain driven design的缩写。介绍DDD基础知识的相关文章很多,本文就不普及相关的基础知识了,基础理论知识可参考如下文章:《DDD基础知识与总结》 《DDD与分层架构》1. 初识DDD脚本式编程(dao+service)与DDD领域驱动模式区别如下:其每一层的作用范围和含义如下:1)展现层(Presentation Layer):负责以Restful的格式接受Web请求,然后将请求路由给Application层执行,并返回视图模型(

2021-11-04 22:25:03 280

原创 Maven还停留在导jar包?快来探索Nexus私服的新世界

写在前面Maven,学习框架之前我们都会接触到的一个工具,感觉他的定位,似乎就跟git一样,只是方便我们开发?于是自然而然的,很多小猿对于Maven都只是停留在会用的阶段,利用他来构建,打包,引入jar包。 而实际上呢,Maven还有很多强大的地方,多模块开发,私服等等也是需要我们掌握的,在实际的开发中,往往是多模块共同开发,特别是我们之前提及的Dubbo分布式开发中,多模块开发是重中之重!传统项目开发导jar包既然是导jar包,我们是在本地windows开发,而实际项目是要放到linu

2021-11-04 22:16:47 230

原创 深度解析HashMap集合底层原理

前置知识目录前置知识==和equals的区别为什么要重写equals和HashCode时间复杂度(不带符号右移) >>>^异或运算&(与运算)位移操作:1<<2=4,1左移两位为什么等于4HashMap集合特点及源码分析(JDK1.8)HashMap重要的五大点1.集合初始化HashMap成员变量HashMap内部数据结构链表红黑树HashMap构造方法指定初始容量指定填充比用来初始化的Ma

2021-11-04 22:12:34 337

原创 RabbitMQ消息丢失、积压、重复等解决方案

消息丢失1、只要订单完成我们就会发送一条消息给MQ,这个途中突然MQ服务器网络中断,导致消息无法抵达做好容错方法需要在消息发送前加上异常处理 try { rabbitTemplate.convertAndSend("order-event-exchange", "order.release.other", orderTo); } catch (Exception e) { //将没法送成功的消息进行重试发送 }还可以将消息存入数据库,把失败的消息定期重新再发一

2021-11-04 22:10:05 3503

原创 阿里“妈宝级”之作,Kubernetes原理剖析与实战应用手册,太全了

不知道你有没有发现,周围的人在越来越多地谈论容器、Kubernetes,以及云原生。作为云原生的“基石”,Kubernetes 从开源到现在也已经走过了 6 个年头,可以说它的出现推开了云原生的大幕,加速了云原生时代的到来。现在不管是阿里、头条这些互联网大厂,还是小米等以硬件为主的厂商,以及快手、Shopee 等后起之秀,都在大量招聘 Kubernetes 相关人才,而且起薪还不低。但是,**Kuberbetes的复杂性以及过于陡峭的学习曲线,对学习和实践者来说是一座高墙,**想要学习好、掌握好Kube

2021-11-04 22:09:10 166

原创 ConcurrentHashMap源码解读

ConcurrentHashMap 是Java并发包中提供的一个线程安全且高效的HashMap实现HashMap的缺点:多线程环境下HashMap会有线程安全问题,扩容可能会造成环形链表,使cpu空转达到100%,但是HashTable可以保证线程安全HashTable缺点:底层使用synchronized锁保证线程安全问题,但是将整个数组锁住了,最终只有一个线程能够调用get或者是put方法,如果没有获取锁的线程就会变为阻塞状态,效率非常低。多线程环境下建议使用Concurre

2021-11-04 22:06:50 416

原创 分布式事务之三阶段提交,你了解多少?

三阶段提交(3PC)是二阶段提交(2PC)的改进版本,三阶段提交协议主要是为了解决两阶段提交协议的阻塞问题,2pc存在的问题是当协调者崩溃时,参与者不能做出最后的选择。因此参与者可能在协调者恢复之前保持阻塞。三阶段提交(Three-phase commit),是二阶段提交(2PC)的改进版本。三阶段提交3PC与两阶段提交不同的是,三阶段提交有两个改动点:引入超时机制。同时在协调者和参与者中都引入超时机制; 在第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前各参与节点的状态是一致的

2021-11-04 22:06:03 588

原创 实践篇——Redis客户端缓存在SpringBoot应用的探究

本文探究Redis最新特性--客户端缓存在SpringBoot上的应用实战。Redis TrackingRedis客户端缓存机制基于Redis Tracking机制实现的。我们先了解一下Redis Tracking机制。为什么需要Redis TrackingRedis由于速度快、性能高,常常作为MySQL等传统数据库的缓存数据库。但由于Redis是远程服务,查询Redis需要通过网络请求,在高并发查询情景中难免造成性能损耗。所以,高并发应用通常引入本地缓存,在查询Redis前先检查本地缓存是

2021-11-04 22:05:19 231

原创 面试官:SpringBoot如何实现定时任务

SpringBoot创建定时任务的方式很简单,主要有两种方式:一、基于注解的方式(@Scheduled)二、数据库动态配置。实际开发中,第一种需要在代码中写死表达式,如果修改起来,又得重启会显示很麻烦;所以我们往往会采取第二种方式,可以直接从数据库中读取定时任务的指定执行时间,无需重启。下面就来介绍下这两种方式吧一、基于注解(@Scheduled)基于注解是一种静态的方式,只需要几行代码就可以搞定了添加一个配置类 1 @Configuration //标记配置类 2 @Enable

2021-10-28 16:15:10 3531 2

原创 一次搞懂,Docker底层原理分析实战

当今,Docker 技术已经形成了更为成熟的生态圈,各家公司都在积极做业务容器化改造,大家对 Docker 也都已经不再陌生。但在我刚接触 Docker 时,市面上的资料还非常少,甚至官网的资料也不太齐全。为了更深入地学习和了解 Docker,我只能从最笨但也最有效的方式入手,也就是读源码。然而现在很多小伙伴学习Docker时还是屡屡碰壁,因此在这我整理了一份《Docker底层原理及源码分析实战手册》由浅入深带你吃透 Docker”,希望让不同基础的人都能收获满满。Docker底层原理及源码分析实战

2021-10-28 16:13:37 455

原创 MySQL中如何选择合适的备份策略和备份工具

数据库备份的重要性毋庸置疑,可以说,它是数据安全的最后一道防线。鉴于此,对于备份,我们通常会做以下要求:多地部署对于核心数据库,我们通常有两地三中心的部署要求。对于备份来说,也是如此。一个备份应该有多个副本,每个副本存储在不同区域。 多介质部署一个备份的多个副本应存储在不同介质上,如磁盘和磁带,防止单一介质失效。 定期检查备份的有效性备份只是在做正确的事情,有没有把事情做对,还得依靠备份的有效性检查。前两项,在条件允许的情况下,建议做。第三项必须做。接下来,我们聊聊备份的相关话题,主要包括以下

2021-10-28 16:10:08 242

原创 服务发现-从原理到实现

服务发现,作为互联网从业人员,大家应该都不陌生,一个完善的服务集群,微服务是必不可少的功能之一。最近一直想写这个话题,也一直在构思,但不知道从何入手,或者说不知道写哪方面。如果单纯写如何实现,这个未免太乏味枯燥了;而如果只是介绍现有成熟方案呢,却达不到我的目的。想了很久,准备先从微服务的架构入手,切入服务发现要解决什么问题,搭配常见的处理模式,最后介绍下现有的处理方案。微服务服务于分布式系统,是个分散式系统。服务部署跨主机、网段、机房乃至大区。各个服务之间通过RPC(remote proce...

2021-10-28 16:05:48 224

原创 搭载Dubbo+Zookeeper踩了这么多坑,我终于整理出了这篇文章

大型互联网项目架构目标衡量网站的性能指标:•响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。•并发数:指系统同时能处理的请求数量。•并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量•请求数:也称为QPS(Query Per Second) 指每秒多少请求.•并发用户数:单位时间内有多少用户•吞吐量:指单位时间内系统能处理的请求数量。•QPS:Query Per Second 每秒查询数。•TPS:Transactions P

2021-10-28 16:04:17 357

原创 工厂模式——摆脱你日复一日new对象却依旧单身的苦恼

前言每每谈及到Java,就不免会想到一个悲伤的事实:你是否每天都在new对象,却依然坚守在单身岗上屹立不倒。(所谓面向对象编程的"缺点"hhh),这篇来学一下工厂模式,摆脱new对象的苦恼!知识点传统工厂抽象类和子类们 生产和使用放在一起了没有分离开,使用时传名字,然后来生产相应的产品public class OrderPizza { // 构造器 public OrderPizza() { Pizza pizza = null; String orderType; //

2021-10-28 16:02:05 247

原创 亿级流量电商系统JVM模型参数二次优化

亿级流量电商系统JVM模型参数预估方案,在原来的基础上采用ParNew+CMS垃圾收集器一、亿级流量分析及jvm参数设置1. 需求分析大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先来分析一下每日亿级流量,平均一个用户点击量在20-30左右,通过这个

2021-10-28 15:59:38 230

原创 每天5分钟玩转 Docker 容器技术之镜像

镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。为什么我们要讨论镜像的内部结构?如果只是使用镜像,当然不需要了解,直接通过 docker 命令下载和运行就可以了。但如果我们想创建自己的镜像,或者想理解 Docker 为什么是轻量级的,就非常有必要学习这部分知识了。一、最小的镜像1、运行hello-world镜像hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成功。我们先通过docker pull从 D..

2021-10-28 15:56:23 312

原创 花五分钟带你了解——DDD领域驱动设计

DDD:指领域驱动设计,是domain driven design的缩写。介绍DDD基础知识的相关文章很多,本文就不普及相关的基础知识了,基础理论知识可参考如下文章:《DDD基础知识与总结》 《DDD与分层架构》1. 初识DDD脚本式编程(dao+service)与DDD领域驱动模式区别如下:其每一层的作用范围和含义如下:1)展现层(Presentation Layer):负责以Restful的格式接受Web请求,然后将请求路由给Application层执行,并返回视图模型(

2021-10-28 15:54:36 982

原创 MySQL中事务和锁的重点和难点,一次性讲清楚

什么是事务在维基百科中,对事务的定义是:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务的四大特性事务包含四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)(ACID)。原子性(Atomicity) 原子性是指对数据库的一系列操作,要么全部成功,要么全部失败,不可能出现部分成功的情况。以转账场景为例,一个账户的余额减少,另一个账户的余额增加,这两个操作一定是同时

2021-10-28 15:32:02 146

原创 如果你还不知道Apache Zookeeper?你凭什么拿大厂Offer

很多同学或多或少都用到了Zookeeper,并知道它能实现两个功能配置中心,实现表分片规则的统一配置管理 注册中心,实现sharding-proxy节点的服务地址注册那么Zookeeper到底是什么?以及为什么能实现这样的功能?接下来我们就来了解一下Zookeeper。Zookeeper的前世今生Apache ZooKeeper是一个高可靠的分布式协调中间件。它是Google Chubby的一个开源实现,那么它主要是解决什么问题的呢?那就得先了解Google ChubbyGoogle C

2021-10-27 22:25:08 120

原创 面试官:ZK分布式锁实现,你了解了吗?

在平时我们对锁的使用,在针对单个服务,我们可以用 Java 自带的一些锁来实现,资源的顺序访问,但是随着业务的发展,现在基本上公司的服务都是多个,单纯的 Lock或者Synchronize 只能解决单个JVM线程的问题,那么针对于单个服务的 Java 的锁是无法满足我们业务的需要的,为了解决多个服务跨服务访问共享资源,于是就有了分布锁,分布式锁产生的原因就是集群。正文实现分布式锁的方式有哪些呢?分布式锁的实现方式主要以(ZooKeeper、Reids、Mysql)这三种为主今天我们主要

2021-10-27 22:24:02 116

原创 从网络层面谈谈负载均衡的各种实现、原理、优缺点

HTTP协议层HTTP网络协议位于应用层,所以这个属于应用的负载均衡;实现方式很简单,基于HTTP重定向即可。当一个请求到达负载均衡服务器之后,负载均衡服务器根据某种负载均衡算法计算得到一个应用服务器的地址,通过 HTTP 状态码 302 重定向响应,将新的 IP 地址发送给用户浏览器,用户浏览器收到重定向响应以后,重新发送请求到真正的应用服务器,以此来实现负载均衡。HTTP 负载均衡优点:实现方式简单缺点:对于用户来说,需要两次HTTP请求,性能上稍有影响;另外,应用服务器的I

2021-10-27 22:22:11 972 1

原创 数据库原理基础:设计B树与B+树的目的以及二者的优劣

什么是B树B树是一个满足以下条件的多叉树,一棵m阶B树满足如下条件:每一个节点最多有m个子节点 除去叶子节点和根结点之外,其他节点至少有m/2个节点 包含t个子节点的节点包含有t-1个key 根结点如果不是叶子节点,那么至少要包含2个子结点 每个节点的关键字从小到大排列,每一个关键字对应的左子树都小于这个关键字,右子树都大于这个关键字 所有叶子节点都位于同一层以上限定规则略显复杂,读起来可能也比较绕口,简言之就是限制每个节点的子结点个数,保证有序性以及每一个叶节点深度相同的三个特性;

2021-10-27 22:16:16 224

原创 java8:stream特性详解,原来如此强大

首先谈谈Stream的概念以及Java为什么引入StreamStream是JAVA8引入的重要特性之一,它是对数据源的一个封装,通过这个封装对象可以对数据源进行处理,Stream本身并不是数据存储容器,跟数据结构也没有直接关系。为什么要引入Stream呢?没有Stream的JAVA7以及之前的版本,也一样可以处理数据啊?这里要提到“函数式”编程了,熟悉python和Scala的朋友可能对函数式编程有一定的认知,函数式编程的方式在数据处理上非常的高效,java8 在设计的时候应该是重点考虑了支持函

2021-10-27 22:14:14 277

原创 服务端面试必看:关于分布式ID的问题,百度、快手、小米都问了

分布式ID的背景在单体应用中,生成唯一ID的逻辑相对比较简单,比如在应用中设定一个变量,每次需要id的时候就读取变量的值并加1,只需要对读取和加1操作的代码块进行加锁即可;同样,如果是一个MySQL数据库,只需要利用自增ID即可;但如果应用是分布式的,而数据库也是分布式的(比如:分库分表),这个时候如何保证各个应用可以生成唯一ID呢?分布式ID具备哪些特性ID应该具有唯一性,即不同应用生成的ID应该不同;除此之外,业务场景往往还要求分布式ID有序递增,最好带有包含时间信息;分布式

2021-10-27 22:12:52 169

原创 面试时被问到CAP,这并不简单

在互联网技术面试中,考察分布式技术已经是面试的标配了。无论你是高阶程序员,还是架构师,都要掌握分布式系统设计。今天我们就先来看一看在面试中怎么回答分布式的基础理论,才能打动面试官。案例背景CAP 理论是分布式系统中最核心的基础理论,虽然在面试中,面试官不会直白地问你 CAP 理论的原理,但是在面试中遇到的分布式系统设计问题,都绕不开你对 CAP 的理解和思考。而且在面试中,针对面试不同岗位的候选者,面试官的要求也会不一样,要求你回答的深度也不一样。所以在今天文章中,我会针对初中级研发工程师和高级

2021-10-27 22:08:35 379

原创 为了读懂 Redis source code,我总结了这7点心得核心

开篇先吐槽下CSDN的【标题规划】,本来标题应该是 Redis 源码的,结果给我提示【源码】为违禁词,想了想只能改成 source code 了。用了这么久的 Redis,也翻了很多次源码,经常有人问我到底怎么读 Redis 源码。一提到读源码,很多人都会比较畏惧,认为读源码是高手才会做的事情。他们可能遇到问题时,会更倾向于去找别人分享的答案。但往往很多时候,自己查到的资料并不能解决所有问题,尤其是比较细节的问题。从我的实战经验来看,遇到这种情况,通常就需要去源码中寻找答案了,因为在源码面前

2021-10-27 21:43:48 287

原创 再见 Spring Task,这个定时任务框架真香

最近有朋友问到定时任务相关的问题。于是,我简单写了一篇文章总结一下定时任务的一些概念以及一些常见的定时任务技术选型。希望能对小伙伴们有帮助!个人能力有限。如果文章有任何需要补充/完善/修改的地方,欢迎在评论区指出,共同进步!为什么需要定时任务?我们来看一下几个非常常见的业务场景:某系统凌晨要进行数据备份。 某电商平台,用户下单半个小时未支付的情况下需要自动取消订单。 某媒体聚合平台,每 10 分钟动态抓取某某网站的数据为自己所用。 某博客平台,支持定时发送文章。 某基金平台,每晚

2021-10-26 21:54:16 799

原创 某架构师去面试,被问到如何设计海量商品数据的存储?

案例背景在开始文章之前我们先来回顾一下,你在面试时,有没有被问到以下几个问题:如何设计一个支持海量商品存储的高扩展性架构? 在做分库分表时,基于 Hash 取模和一致性 Hash 的数据分片是如何实现的? 在电商大促时期,如何对热点商品数据做存储策略 ? 强一致性和最终一致性的数据共识算法是如何实现的 ?在分布式系统中,核心的考察点包括了分布式系统中数据的存储、分布、复制,以及相关协议和算法,上述问题都与此相关。而在实际面试中,面试官通常会提出一个业务场景,如“如何设计海量商品数据的存储?”

2021-10-26 21:53:17 514

原创 面试官一口气问了MySQL事务、锁和MVCC

面试官:你是怎么理解InnoDB引擎中的事务的?候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败候选者:事务其目的是为了「保证数据最终的一致性」。候选者:举个例子,我给你发支付宝转了888块红包。那自然我的支付宝余额会扣减888块,你的支付宝余额会增加888块。候选者:而事务就是保证我的余额扣减跟你的余额增添是同时成功或者同时失败的,这样这次转账就正常了面试官:嗯,那你了解事务的几大特性吗?候选者:嗯,就是ACID嘛,分别是原子性(Atomicity)、

2021-10-26 21:51:14 112

原创 「架构设计」无状态状态机在代码中的实践

一:前言在项目中经常有一些工单,申请之类需要对状态进行流转。这种需求一般都是满足什么条件然后就翻转状态。这些流程结构相似的逻辑,感觉可以抽象处理。用一个通用的结构处理,可以让系统更加整洁,代码逻辑更加单一。​ 发现阿里开源一种,轻量级的无状态状态机得组件。仔细研究一下,确实很适合这种场景下对代码逻辑的解耦,相比于if-else代码更加让人容易理解,也更加优雅。二:状态机的模型State:状态 Event:事件,状态由事件触发,引起变化 Transition:流转,表示从一个状态到另一个状

2021-10-26 21:43:35 187

原创 腾讯二面:Redis 事务支持 ACID 么?

腾讯面试官:「数据库事务机制了解么?」「内心独白:小意思,不就 ACID 嘛,转眼一想,我面试的可是技术专家,不会这么简单的问题吧」我:「balabala…… 极其自信且从容淡定的说了一通。」❝腾讯面试官:「Redis 的事务了解么?它的事务机制能实现 ACID 属性么?」我:「挠头,这个……我知道 lua 脚本能实现事务…」腾讯面试官:「好的,回去等通知吧。」学习了 《Redis 系列》斩获了很多 offer,没想到最后败在了 「Redis 如何实现事务?」这个问题上.

2021-10-26 21:42:21 78

原创 阿里P8面试官:如何设计一个扛住千万级并发的架构(超级详细)

如何降低RT的值继续看上面这个图,一个请求只有等到tomcat容器中的应用执行完成才能返回,而请求在执行过程中会做什么事情呢?查询数据库 访问磁盘数据 进行内存运算 调用远程服务这些操作每一个步骤都会消耗时间,当前客户端的请求只有等到这些操作都完成之后才能返回,所以降低RT的方法,就是优化业务逻辑的处理。数据库瓶颈的优化当18000个请求进入到服务端并且被接收后,开始执行业务逻辑处理,那么必然会查询数据库。每个请求至少都有一次查询数据库的操作,多的需要查询3~5次以上,我们假设按

2021-10-26 21:40:10 10883 7

原创 从实战到原理,线程池的各类使用场景整合

在日常的开发工作中,我们经常会需要使用到线程池这类型的组件。例如下边几种应用场景:线程池经典应用场景异步发送邮件通知发送一个任务,然后注入到线程池中异步发送。心跳请求任务创建一个任务,然后定时发送请求到线程池中。类似的场景有很多,我们下边一步一步地来介绍不同的应用场景下,线程池的具体使用案例:异步发送邮件场景定义一个简单的邮件发送接口:public interface SendEmailService { /** * 发送邮件 * * @p

2021-10-26 21:39:00 135

原创 想要彻底搞懂大厂是如何实现Redis高可用的?看这篇文章就够了

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。那么如何保证系统的高可用呢首先,在整个架构的每个节点中,不允许存在单点问题,因为单点一定是高可用最大的风险点,我们应该在

2021-10-26 21:35:25 187

原创 单体应用改造成Spring Cloud微服务的简单总结

花了几天时间把项目由Spring Boot单体项目改造成了Spring Cloud微服务。说实话,目前的业务量远远用不着上微服务,单体完全Hold得住,不过架不住上面领导天天BB。最难的部分不是技术单体转微服务花时间最多的是反而不是在技术升级上。而是业务划分上,以前的强关联关系需要重新梳理,该分离分离,该聚合聚合,相信我当你去拆分单体应用的时候最头疼的一定是这个。有两个平台业务太复杂了直接先不拆,先接进去。一切本着最简化开发的思路进行,因为上面没给多少时间去折腾这个,搞开发真的很卑微。技术改造过

2021-10-26 21:34:23 925

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除