自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文读懂 Spring Bean 的生命周期

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象。因为 Spring Bean 的生命周期是除了 IoC、AOP 几个核心概念之外最重要概念,大家务必拿下。可 Spring 源代码又比较复杂,跟着跟着就不知道跟到哪里去了,不太好拿下呀。这倒是真的,而且网上一上来就各种贴流程源码,对初学者来说是真的一脸懵逼,就像字.

2021-07-18 23:52:34 5451 58

原创 深入浅出 MyBatis 的一级、二级缓存机制

一、MyBatis 缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。MyBatis 也提供了对缓存的支持,分为一级缓存和二级缓存,来看下下面这张图:一级缓存是 SqlSession 级别的缓存。在操作数据库时需要构造 SqlSession 对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的是 SqlSession 之间的缓存数据区(HashMap)是互相不影响。二级缓存是 Mapper 级别的缓存,多个 S

2021-07-12 21:14:25 352 7

原创 阿里二面:JVM 的三色标记算法你了解吗?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言不得不说阿里的面试还是挺有质量的,这个问题直接问到了 JVM 的底层算法实现。在说 JVM 的三色标记算法之前,我们先来说下 JVM 对于常见对象存活判定算法与垃圾收集算法。常见对象存活判定算法有引用计数算法和可达性分析算法。 引用计数法会产生循环引用问题,JVM 默认是通过可达性分析算法来判断对象是否存活的。而那些垃圾收集算法:标记-清除、标记-复制、标记-.

2021-06-30 00:03:59 624 12

原创 阿里二面:Redis 中的 AOF 文件太大了怎么办?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题。不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF。但老周这里盲猜面试的过程肯定也是先从持久化方式问起,然后循循渐进的问到 AOF 文件太大了怎么办?本着知其然知其所以然的态度,老周这里会带你从 RDB 和 AOF 的实现原理、各自的触发方.

2021-06-03 00:07:51 780 17

原创 我惊了!!!ThreadLocal 源码存在内存泄露的 Bug!!!

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言写这篇文章的目的是因为现在网上很多关于 ThreadLocal 的文章,很大一部分都不太准确。比如说:ThreadLocal 内部有个 map,键为线程对象;ThreadLocal 的数据结构是个数组;还有说 ThreadLocal 存在内存泄露,但里面的 get、set 以及 remove 方法能防止 ThreadLocal 内存泄露问题。都是.

2021-05-27 01:17:27 1552 41

原创 Redis中ZSet的底层数据结构跳跃表skiplist,你真的了解吗?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言老周写这篇文章的初衷是这样的,之前项目中有大量使用 Redis 的 ZSet 数据结构来实现各种排行榜的功能。老周以前也写过关于跳表的数据结构,但那是纯数据结构方面来分析的,今天我们就来从跳跃表在 Redis 中的底层实现方向来分析。我们都知道 Redis 有五种常用的数据结构:String、Hash、List、Set 以及 ZSet,其中 ZSet 是 Re.

2021-05-17 01:56:51 2091 39

原创 一文读懂线程池的实现原理

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上个月底群里的一个好朋友向老周提出啥时候分享 ThreadPoolExecutor 解析大全,我说后面会提上日程;然后前些天有读者也反馈说在面试中有被问到线程池,问我啥时候出一篇线程池相关的文章。今天老周就来安排一波线程池,现在很多公司都喜欢问线程池相关的面试题,为什么面试官这么热衷于问线程池相关的面试题呢?因为这是多线程的基础,ThreadPoolExecu.

2021-04-20 01:27:47 4345 33

原创 2w 字长文爆肝 JVM 经典面试题!太顶了!

如果你是中高级程序员,那我相信你一定被面试官问过JVM。下次再被问到JVM,你直接把老周的这篇文章丢给他吧!话不多说,让我们直接进入主题吧。JVM内存结构,常见异常,调优参数,调优工具和命令JVM的理解JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。Minor GC ,Full GC 触发条件如何确定某个对象是“垃圾”?典型的垃圾收集算法常用的垃圾回收器有哪些, 特点是什么当出现了内存溢出,你怎么排错你们线上应用的JVM参数有哪些什么是内存泄

2021-04-12 22:06:32 2123 41

原创 远程调用 Dubbo 与 Feign 的区别

一、相同点Dubbo 与 Feign 都依赖注册中心、负载均衡。二、区别1、协议Dubbo:支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。Feign:基于Http传输协议,短连接,不适合高并发的访问。2、负载均衡Dubbo:支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概

2020-09-23 22:02:21 16657 8

原创 史上最全 SpringBoot 注解详解
原力计划

一、注解(annotations)列表1、@SpringBootApplication包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让Spring Boot扫描到Configuration类并把它加入到程序上下文。2、@ComponentScan组件扫描,可自动发现和装配一些Bean...

2020-04-20 22:41:45 4210 8

原创 史上最全 Lombok Features 注解详解
原力计划

文章目录一、@Getter and @Setter二、@ToString三、@EqualsAndHashCode四、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor五、@Data六、@Value七、@Builder八、@Accessors九、@Slf4j and @Log4j十、@NonNull十一、@Sync...

2020-04-08 00:39:55 1714 4

原创 spring的controller是单例还是多例,怎么保证并发的安全。

答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:package com.riemann.springbootdemo.controller;import org.springframework.context.annotation.Scope;import org.springframew...

2019-07-29 23:48:06 19210 22

原创 Proxyee-down的下载与安装教程

这个工具的名字是 proxyee-down,是在 GitHub 上发现的,工具的地址是:https://github.com/proxyee-down-org/proxyee-down下载安装教程下wiki有:https://github.com/proxyee-down-org/proxyee-down/wiki/软件下载与运行本博客Proxyee-down版本为:2.54Proxy...

2019-04-13 00:04:23 22157 23

原创 史上最全BATJ面试题精选附答案

目录JAVA基础JVM知识开源框架知识操作系统多线程TCP与HTTP架构设计与分布式数据结构与算法数据库知识消息队列缓存搜索JAVA基础String,Stringbuffer,StringBuilder的区。ArrayList和LinkedList有什么区别。什么是HashMap?用过哪些Map类,都有什么区别JAVA8的ConcurrentHashMap...

2019-01-17 21:51:03 1740 6

原创 一文读懂物联网 MQTT 协议之基础特性篇

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上个月有个读者问我物联网 MQTT 协议实战相关的问题,我说后面会搞,没想到不知不觉一个月了,太忙了,再怎么忙答应的事情还是要给读者一个交代,所以就有了此文。二、MQTT 协议概要2.1 什么是 MQTT 协议MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/.

2021-07-26 22:33:45 104 9

原创 开放平台设计方案与实践

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、背景随着业务的发展,越来越多的系统需要数据往来。那对外提供的接口也越来越多,而且各个接口散落在不同的项目中被调用,多了的话排查问题困难且混乱。基于这个痛点,我们有必要打造一套开放平台来管理各个 api 的调用情况。二、开放平台设计我们先从整体的功能需求来分析,主要有以下几点:开发者身份注册与数据权限范围授权开发者获取相关资料(接口文档、使用说明、对接人联.

2021-05-13 01:38:39 1186 15

原创 动态调整线程池参数实践

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、线程池遇到的挑战我们上一篇 《一文读懂线程池的实现原理 》已经从线程池如何维护自身状态、线程池如何管理任务、线程池如何管理线程三个维度来深入剖析线程池的底层原理与源码剖析,这让我们对线程池的原理有了较为深入的理解。这对我们多线程编程有很大的帮助,但在使用线程池时还是会面临几个棘手的问题。开发人员个人经验与水平参差不齐,配置线程池参数都是按照自己想法来,没有统一.

2021-04-30 02:13:18 1833 19

原创 Spring Cloud Gateway 源码剖析之Filter Chain过滤器链

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言前几篇我们讲了 Gateway 相应的初始化、路由相关模型以及 Predicate 谓词详解,这一篇我们再来讲一下 Filter Chain 过滤器链,讲完这一篇,相信你对 Gateway 源码整体设计思想有个深刻的体会了,后续你想去抠细节也不是什么难事了。前几篇可以回顾下:Spring Cloud Gateway 源码剖析之配置初始化Spring Clo.

2021-04-06 00:10:20 1288 10

原创 Spring Cloud Gateway 源码剖析之Predicate谓词详解

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇Spring Cloud Gateway 源码剖析之Route数据模型中讲到了 Route 数据模型,其中有 Predicate 属性。这一篇我们就来讲一讲 Predicate 谓词相关源码。Predicate 对象是由 RoutePredicateFactory 工厂类创建,那我们就来看下 RoutePredicateFactory 是如何创建.

2021-04-03 23:58:58 1648 21

原创 Spring Cloud Gateway 源码剖析之Route数据模型

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇讲了:Spring Cloud Gateway 源码剖析之配置初始化,通过自动加载初始化六个配置实例,Spring Cloud Gateway 就完成自身的加载和初始化工作。我们知道 Gateway 的核心是路由加过滤,既然网关相关初始化工作做好了,那得开始路由相关的工作了。接下来我们就来分析下平时在 properties 或者 yml 中配置的有.

2021-04-02 01:06:02 1108 11

原创 Spring Cloud Gateway 源码剖析之配置初始化

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言相信大多数公司都会有自己公司的专有网关服务,虽说是自研,但很少会有从零开始开发一个网关服务,基本上是基于市面上比较流行的网关组件像 Zuul、Gateway、Soul 等进行二次封装的。那如果自己公司有相应的网关业务需求的话,这就要对网关产品的底层原理要比较熟悉了,这样做起来也比较顺手。本系列只针对 Gateway 组件进行源码剖析,我在想第一篇如何说会比较好.

2021-03-31 00:50:08 259 2

原创 一文读懂Spring中的AOP机制

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上一篇我们说了注解的底层原理,请戳:一文读懂注解的底层原理这一篇我们来说一下 Spring 中的 AOP 机制,为啥说完注解的原理然后又要说 AOP 机制呢?不妨看一下前面的这一篇,请戳:一文读懂Annotation,这一篇我们实现了如何自定义注解的案例。1、标记日志打印的自定义注解@Target({ElementType.METHOD})@Rete.

2021-03-28 23:02:51 207

原创 一文读懂注解的底层原理

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上一篇我们说了注解、元注解以及自定义注解,请戳:一文读懂Annotation注解的声明如下:{InterfaceModifier} @interface Identifier AnnotationTypeBody接口修饰符 @interface 注解标识符 注解类型的内容其中:注解类型声明中的标识符指定了注解类型的名称。如果注解类型与它的任何.

2021-03-24 00:52:17 308 2

原创 一文读懂Annotation

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、什么是注解根据wikipedia中介绍:In the Java computer programming language, an annotation is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, para.

2021-03-24 00:11:34 182

原创 我的架构梦:(一百)消息中间件之RocketMQ的高可用机制——集群管理高可用

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言在前三篇我们介绍了我的架构梦:(九十七)消息中间件之RocketMQ的高可用机制——消息存储高可用我的架构梦:(九十八)消息中间件之RocketMQ的高可用机制——消息发送高可用我的架构梦:(九十九)消息中间件之RocketMQ的高可用机制——消息消费高可用这一篇我们来说一下集群管理是如何保证高可用的,不仅是最后一篇关于 RocketMQ 的高可用机制.

2021-03-20 21:43:56 1355 6

原创 我的架构梦:(九十九)消息中间件之RocketMQ的高可用机制——消息消费高可用

欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言在前两篇我们介绍了我的架构梦:(九十七)消息中间件之RocketMQ的高可用机制——消息存储高可用我的架构梦:(九十八)消息中间件之RocketMQ的高可用机制——消息发送高可用这一篇我们来说一下消息消费是如何保证高可用的。要想知道消息消费的高可用,那我们得知道消息是怎么消费的吧。我们知道 Consumer 集群中每个 Consumer 都有消费组,那一个.

2021-03-19 01:03:29 2138 14

原创 我的架构梦:(九十八)消息中间件之RocketMQ的高可用机制——消息发送高可用

欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言在上一篇我们介绍了 我的架构梦:(九十七)消息中间件之RocketMQ的高可用机制——消息存储高可用,这一篇我们来说一下消息发送是如何保证高可用的。我们从前面的几篇文章也了解到,RocketMQ 的消息发送机制是通过 NameServer 监听 Broker 集群的心跳,Producer 从 NameServer 中获取 Broker、Topic 以及 Cons.

2021-03-14 18:59:37 164 4

原创 我的架构梦:(九十七)消息中间件之RocketMQ的高可用机制——消息存储高可用

一、前言作为一款消息中间件产品,高可用起着至关重要的作用。那 RocketMQ 是怎么保证高可用机制的呢?老周从四个维度来分析:消息存储高可用、消息发送高可用、消息消费高可用以及消息管理高可用。本文主要侧重讲消息存储高可用,其它三个维度老周也会说一下。话不多说,我们现在就开始 RocketMQ 的高可用机制之旅吧。二、消息存储高可用很多需要持久化的产品,它们的高可用机制一般都是主从复制和读写分离。RocketMQ 消息存储的高可用也不例外。既然这样,那我们就从这两个方向来分析一下。1、主从复制2、

2021-03-13 00:24:58 155 4

原创 我的架构梦:(九十六)消息中间件之RocketMQ的源码环境搭建

一、源码下载从官方仓库 https://github.com/apache/rocketmq clone 或者 download下来。这里老周先来解释下源码目录结构:broker: broker 模块(broke 启动进程)client :消息客户端,包含消息生产者、消息消费者相关类common :公共包dev :开发者信息(非源代码)distribution :部署实例文件夹(非源代码)example: RocketMQ 示例代码filter :消息过滤相关基础类filtersrv

2021-03-10 23:40:58 135 2

原创 我的架构梦:(九十五)消息中间件之RocketMQ的存储机制

一、存储方式业界主流的 MQ 产品像 RabbitMQ、RocketMQ、ActiveMQ、Kafka 都是支持持久化存储的,而 ZeroMQ 不需要支持持久化存储。业务系统也确实需要 MQ 支持持久化存储能力,这样可以增大系统的高可用性。但存储方式和效率来看,我们可以分为文件系统、分布式 KV 存储、关系型数据库三种方式:1、文件系统目前业界较为常用的几款产品(RabbitMQ、RocketMQ、ActiveMQ、Kafka)均采用的是消息刷盘至所部署虚拟机/物理机的文件系统来做持久化(刷盘一般可以

2021-03-07 01:56:17 138 2

原创 零拷贝技术在Java中为何这么牛?

一、概念1、零拷贝根据wikipedia中介绍:“Zero-copy” describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth when transmitting a file over

2021-03-05 02:07:26 354 6

原创 我的架构梦:(九十四)消息中间件之RocketMQ在Linux环境下的搭建

一、安装及启动1、在线下载rocketmq(如果不想使用wget下载,可以直接使用上述提供的软件包)# 下载 wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip2、解压缩unzip rocketmq-all-4.5.1-bin-release.zip -d /opt/# 如果unzip命令找不到,则需要执行下面这条命令,修改yum源,在线下载解压工具,然后再执行unzip

2021-03-03 00:08:08 202

原创 策略模式史上最佳实践,没有之一!!!

​一、背景在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们去某个地方,会根据目标地的距离或者手头经济情况,来选择不同的出行方式(共享单车、公交、滴滴、高铁、飞机等),这些出行方式即是不同的策略。二、使用时机了解完背景我们对策略模式心里有个底了,核心是把不同的策略

2021-02-26 00:04:32 3094 10

原创 亿级用户游戏排行榜设计方案

一、前言不管是手游还是端游,貌似都离不开排行榜,没有排行榜的游戏是没有灵魂的游戏,因为排行榜可以让用户分泌多巴胺,这样日活才会上来,有了用户就有钱赚。产品想方设法的让用户留存,设计各种排行榜:个人段位排名、个人积分或金币排名、全球榜单实时排名。如果用户量少的话,直接用mysql一张表存储着用户跟某个段位或者积分,然后查的时候再从高到低order by排序下。当然用户量很少的话是可以的,但随着用户量猛增,达到千万、亿级的话,这个肯定行不通了。你可能说我加索引、再多的话分库分表总行了吧。思路是没错的,但这不是

2021-02-16 23:59:35 617

原创 我的架构梦:(九十三)消息中间件之基于Kafka实现日志收集

一、前言随着业务的扩展以及集群的扩大,越来越多的业务系统对日志收集面临了很大的挑战。我们急需一种收集日志的工具将散落在各个服务器节点上的日志收集起来,进行统一的查询及管理统计。我们之前的系统就是采用ELK来实现的。鉴于有些小伙伴们对ELK还不是很了解,我这里就先提一些概念,方便大家理解。1、ElasticSearch(简称ES)Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速、实时地存储、搜索和分析大量数据。它通常用作底层引擎/技术,为具有复杂搜索特性和需求的应用程序

2021-02-16 00:16:32 250 5

原创 我的架构梦:(九十二)消息中间件之Kafka集群搭建

一、集群搭建要求1、搭建设计2、架构介绍分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeeper集群。ip地址节点名称10.211.55.3zookeeperCluster310.211.55.4zookeeperCluster410.211.55.5zookeeperCluster510.211.55.7kafkaCluster710.211.55.8kafkaCluster810.211.55.9kaf

2021-02-14 23:35:24 2539 8

原创 我的架构梦:(九十一)消息中间件之Kafka如何保证一致性

一、概念1、水位标记水位或水印(watermark)一词,表示位置信息,即位移(offset)。Kafka源码中使用的名字是高水位,HW(high watermark)。2、副本角色Kafka分区使用多个副本(replica)提供高可用3、LEO和HW每个分区副本对象都有两个重要的属性:LEO和HW。LEO:即日志末端位移(log end offset),记录了该副本日志中下一条消息的位移值。如果 LEO=10,那么表示该副本保存了10条消息,位移值范围是[0, 9]。另外,Leader

2021-02-13 22:50:02 156

原创 我的架构梦:(九十)消息中间件之Kafka如何保证可靠性

一、概念可靠性是系统的一个属性,而不是一个独立的组件,所以讨论kafka的可靠性保证时,应当从系统的整体出发。kafka在数据传递可靠性方面具备很大的灵活性。我们知道,kafka被用在生活中各种场景里。有些场景要求很高的可靠性,而有些则更看重速度和简便性。kafka被设计成高度可配置的,而且它的客户端API可以满足不同程度的可靠性需求。再讲可靠性之前我们来先了解以下几点的概念:创建Topic的时候可以指定 --replication-factor 3 ,表示分区的副本数,不要超过broker的数量。

2021-02-13 00:09:08 146

原创 我的架构梦:(八十九)消息中间件之Kafka如何保证幂等性

一、幂等性保证在消息重发的时候,消费者不会重复处理。即使在消费者收到重复消息的时候,重复处理,也要保证最终结果的一致性。所谓幂等性,数学概念就是: f(f(x)) = f(x) 。f函数表示对消息的处理。比如,银行转账,如果失败,需要重试。不管重试多少次,都要保证最终结果一定是一致的。二、引入幂等性之前Producer向Broker发送消息,然后Broker将消息追加到消息流中后再给Producer返回Ack信号值。实现流程如下:生产中,会出现各种不确定的因素,比如在Producer在发送给B

2021-02-12 17:57:47 361

原创 我的架构梦:(八十八)消息中间件之Kafka基于磁盘存储为啥这么快?

一、前言各位读者朋友们,博主给大家拜年了。因为在写这篇文章的时候正是2021年的除夕夜,刚和家人吃完年夜饭,去睡之前,想着脑海里还有个问题困惑着我。这个问题是什么呢?没错,就是本篇的标题:Kafka基于磁盘存储为啥这么快?Kafka基于磁盘存储,却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几十上百万。小伙伴们是否也有和我一样的困惑?磁盘存储io相对于内存来说不是很慢吗?那Kafka怎么会有如此高的性能呢!!!kafka高性能,是多方面协同的结果,包括宏观架构、分布式partition存储、ISR数

2021-02-12 00:26:30 2377 6

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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