- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 kafka分布式如何保证
众所周知kafka是集群模式,那么kafka是如何保证数据一致性,以及集群间和消费者是如何交互的呢? 首先先来了解几个名称: AR:分区中所有副本统称为AR(Assigned Replicas)。 ISR:所有与leader副本保持一定程度同步风副本(包括leader副本本身)组成ISR(IN-Sync Replicas),ISR集合是AR集合中的一个子集。 replica.lag.time.max.ms这个就是follower副本落后leader副本的时间间隔,默认30秒。只要follower副本每隔
2021-01-27 10:12:56
499
原创 kafka客户端执行流程和源码分析
先看下客户端的整体架构: 转存失败重新上传取消 整个生产者客户端由2个线程协调运行,就是主线程和sender线程。在主线程中由Kafka Producer创建消息,然后通过拦截器、序列化器和分区器的作用后,缓存到消息累加器(也称为消息收集器),Sender负责从消息累加器获取消息并将其发送到Kafka中。 消息累加器主要用来缓存消息以便于sender线程可以批量发送,进而减少网络传输的资源消耗以提升性能。缓存大小是配置的,默认为32MB,如果生产速度过快,被阻塞最多60秒(配置的),就会抛异常。 .
2021-01-26 18:32:54
510
原创 Kafka的具体设计
消息中间件特点 解耦 异步 削峰 消息队列通信模式 1.点对点模式 2.发布订阅模式 kafka 基本概念 从图上可以看到可以分四个部分: Producer:消息生产者,消息入口。 kafka cluster:kafka集群。 broker:broker是kafka实例,每个服务器上可以有一个或者多个broker。 topic:消息的主题,kafka的数据就是保存在topic。每个broker上都可以创建多个topic。 partition:topic的分区,每个topic可以有多个分区,
2020-12-30 15:54:41
130
1
原创 Spring 类型转化
今天有个比较好玩的问题记录下。首先说下问题: 在 Spring Data Redis 官方文档中,可以看到这样一个常规用法。 <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"/> <property na
2020-10-16 18:45:47
212
原创 String hashcode 源码分析
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; } .
2020-07-29 16:32:01
218
原创 Semaphore 源码分析
Semaphore 源码分析 其实Semaphore源码上的注释就说的比较清楚作用是如何的,下面是从源码翻译过来的解释: 计数信号灯。从概念上讲,信号量维护一组许可证。如果需要,acquire方法就是直到获得许可才会继续执行(阻塞)。release()方法会添加一个许可证,或者是释放acquire占据的许可。但是,其实没有实际存在许可证这个实体对象;simaphore只是记录可用的数量并相应地采取行动。 Semaphore通常用于限制线程的数量,而不能访问某些(物理或逻辑)资源。例如,以下是一个使用信号量控
2020-07-29 16:30:21
106
原创 CountDownLatch 源码讲解
CountDownLatch 源码讲解 老规矩,先翻译源码。 CountDownLatch 是一种同步辅助工具,允许一个或多个线程等待其他线程中正在执行的一组操作完成。 CountDownLatch是用给定的count参数初始化实例。 await方法会一直阻塞到当前计数为零,当调用countDown方法会释放所有等待的线程,await方法的任何后续调用都将立即返回。这是一种一次性现象——无法重置计数。如果需要重置计数的版本,请考虑使用CyclicBarrier类(这个类下次讲解)。 CountDownLat
2020-07-29 16:19:45
169
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人