自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka-日志段LogSegment管理操作-源码学习笔记

背景前面一篇文章已经说了日志段和日志的关系,日志通过ConcurrentSkipListMap 保存所有日志段对象,他是线程安全的,健值是可排序的。今天我们来探讨下日志段管理功能。1、增加日志Log 类中定义了添加日志段的方法addSegment.def addSegment(segment: LogSegment): LogSegment = this.segments.put(segment.baseOffset, segment)通过源码可以看出,实质上就是调用ConcurrentSki

2020-11-09 11:32:09 431

原创 kafka Log高水位管理操作-源码学习笔记

高水位管理操作定义:@volatile private var highWatermarkMetadata: LogOffsetMetadata = LogOffsetMetadata(logStartOffset)根据定义可以看出,1、highWatermarkMetadata是可变的,并且通过volatile 保证它线程之间的可见性。2、高水位值的初始值是 Log Start Offset 的值。3、类型是LogOffsetMetadata 。LogOffsetMetadata 类源码:

2020-11-02 22:34:35 562

原创 kafka Log 源码结构和初始化逻辑学习笔记

Log 源码结构Log 文件位于core\src\main\scala\kafka\log\Log.scala 目录下。改文件定义了10个类和对象:LogAppendInfoLogAppendInfo类保存了一组写入消息的各种元数据信息;LogAppendInfo伴生对象定义一些工厂方法,用于创建特定的LogAppendInfo实例。LogLog伴生对象定义一些常量辅助方法。Log 类是Log文件最核心部分。RollParams定义控制日志段是否切分的数据结构,对应的伴生对象也是对应的工

2020-11-02 18:15:38 223

原创 kafka日志段LogSegment-源码学习笔记

kafka日志结构概述kafka 日志在磁盘上的组织结构如下:kafka日志由多个日志段组成,每个日志段会在磁盘上创建一组文件,包括消息日志文件(.log),位移索引文件(.index),时间戳索引文件(.timeindex),以及终止事务文件(.txnindex),该文件只在使用索引的情况下创建。一般情况下,一个kafka主题有很多分区,每个分区对应一个Log对象,在物理磁盘上对应一个子目录,比如你创建了两个分区的主题test-topic,在磁盘上就会创建两个子目录test-topic-0和tes

2020-11-02 13:55:50 351

原创 kafka源码思维导图

kafka源码思维导图kafka源码全景图从功能上讲,Kafka 源码分为四大模块。服务器端源码:实现 Kafka 架构和各类优秀特性的基础。Java 客户端源码:定义了与 Broker 端的交互机制,以及通用的 Broker 端组件支撑代码。Connect 源码:用于实现 Kafka 与外部系统的高性能数据传输。Streams 源码:用于实现实时的流处理功能。kafka服务端源码思维导图服务端源码的思维导图如下:...

2020-10-30 16:57:21 302

原创 elasticsearch分布式集群模型和选主过程

elasticsearch分布式集群模型和选主分布式特性节点主节点候选主节点数据节点协调节点预处理节点配置角色类型及配置原则选主过程分布式特性elasticsearch的集群支持存储的水平扩容,支持PB级数据,他的分布式特性允许部分节点停止服务的同时,整个集群的服务不受影响。默认的集群名字是 elasticsearch, 这个名字可以通过修改yml 配置文件或者是在命令行中通过-E cluster.name = elastic 进行设置。节点节点就是一个Elasticsearch的实例,其本质就是

2020-06-19 17:33:09 294 1

原创 Logback日志框架和SpringBoot整合

Logback日志框架和SpringBoot整合日志框架LogBack介绍Logback 的优点Logback的核心对象logback示例Log4j日志转换为logback在线工具SpringBoot2.x日志讲解和自定义Logback配置日志框架LogBack介绍LogBack是基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用,logback当前分成三个模块:logback-core: 日志组件的核心部分,使用logback组件必须引入的jar.logback-cla

2020-06-14 16:28:59 291

原创 多线程之ThreadLocal在tomcat中运行的并发问题

ThreadLocal在tomcat中运行的并发问题我们知道,ThreadLocal 适用于变量在线程间隔离,而在方法或类间共享的场景。如果用户信息的获取比较昂贵(比如从数据库查询用户信息),那么在 ThreadLocal 中缓存数据是比较合适的做法。使用 Spring Boot 创建一个 Web 应用程序,使用 ThreadLocal 存放一个 Integer 的值,来暂且代表需要在线程中保存的用户信息,这个值初始是 null。在业务逻辑中,我先从 ThreadLocal 获取一次值,然后把外部传入的

2020-05-21 15:54:02 1712

原创 TCP和UDP协议

OSI网络七层模型网络各层的主要功能低三层物理层: 使原始的数据比特流能在物理介质上传输。数据链路层:通过校验、确认和反馈重发等手段,形成稳定的数据链路。(010100010101)网络层: 进行路由选择和流量控制。(IP协议)传输层:提供可靠的端口到端口的数据传输服务(TCP/UDP协议)。高三层会话层: 负责建立、管理和终止进程之间的会话和数据交换。表示层: 负责数据格式...

2019-12-09 00:28:04 576

原创 JAVA线程通信

使用场景要想实现多个线程之间的协作,如:线程执行的先后顺序、获取某个线程执行的结果等等,就需要使用到线程通信,例如:生产者-消费者模型、线程阻塞线程唤醒等场景。JDK提供的线程协调API细分为:suspend()/resume()(已过时)、wait()/notify()、park()/unpark().生产者-消费者模型案例消费者线程商店生产者线程你好!今天有货吗?抱歉,现在没货,再等...

2019-07-14 02:06:55 257

原创 java线程封闭之ThreadLocal

多线程访问共享可变数据时,涉及到线程间数据同步问题。并不是所有数据都用到共享数据,所以线程封闭概念就提出来了。数据都被封闭在各自的线程中,就不需要同步,这种通过将数据封闭在线程中从而避免使用同步的技术称为线程封闭。线程封闭涉及的技术有:ThreadLocal、局部变量。ThreadLocal是一种特殊的变量,他是一个线程级别变量,每个线程有一个ThreadLocal就是每个线程都拥有了自己独...

2019-07-12 01:32:37 612

原创 JWT+RSA无状态鉴权基本原理与使用

JWT+RSA无状态鉴权基本原理与使用1.无状态登录原理1.1 什么是无状态?2 JWT2.1简介2.2数据格式2.3JWT交互流程2.4.非对称加密3 使用3.1使用JWT1.无状态登录原理1.1 什么是无状态?1.1.1有状态服务:即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们...

2019-02-26 16:34:29 7252 7

空空如也

空空如也

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

TA关注的人

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