File tree Expand file tree Collapse file tree 2 files changed +22
-5
lines changed
Expand file tree Collapse file tree 2 files changed +22
-5
lines changed Original file line number Diff line number Diff line change @@ -245,20 +245,26 @@ Garbage First(G1)收集器:
245245
246246![ ] ( https://raw.githubusercontent.com/CompetitiveLin/ImageHostingService/picgo/imgs/202305111608659.png )
247247
248- Java IO:
249- - 阻塞/非阻塞,如果方法不能立即返回,需要等待,线程会阻塞
250- - 同步/异步,如果能开启新的线程,则叫异步,多线程是实现异步的一种方式。
248+ # Java IO
249+ 1 . BIO:同步阻塞IO,使用方便,但并发处理能力低
250+ 2 . NIO:同步非阻塞IO,适用于连接数目多且连接比较短(轻操作)的架构
251+ 3 . AIO:异步非阻塞IO,适用于连接数目多且连接比较长(重操作)的架构
252+
253+ - 阻塞/非阻塞,是对同一个线程来说。关注的是程序在等待调用结果(消息,返回值)时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
254+ - 同步/异步,针对调用者与被调用者,它们是线程之间的关系。同步操作,调用者需要等待被调用者返回结果,才会进行下一步操作;异步操作,调用者不需要等待被调用者返回调用,即可进行下一步操作,被调用者通常依靠事件、回调等机制来通知调用者结果
255+
256+
251257
252258NIO vs IO:
253- - IO是面向流的 ,NIO是面向缓冲区的
259+ - IO是面向字节流的 ,NIO是面向缓冲区的
254260- IO流是阻塞的,NIO流是不阻塞的
255261- 选择器:Java NIO的选择器允许一个单独的线程来监视多个输入通道
256262
257263IO多路复用(事件驱动):** 一个线程不断轮询多个socket的状态** ,只有当socket真正有读写状态时,借用当前线程或者使用线程池额外启动线程,调用实际的IO读写操作。
258264
259265Java NIO:
260266- 实际上也是一种多路复用的IO。
261- - 三大核心部分:Channel(通道) ,Buffer(缓冲区), Selector(选择器),Channel 负责传输, Buffer 负责存取数据
267+ - 三大核心部分:Channel(通道) ,Buffer(缓冲区), Selector(选择器),Channel 负责传输(类比成铁路) , Buffer 负责存取数据(类比成载着货物的火车)
262268 - Channel是双向的,数据总是从通道读到缓冲区或者从缓冲区中写入通道内。
263269- 额外一个Selector线程,用于监听多个通道(Channel)的事件(比如:连接打开,数据到达),如果由事件发生,则获取事件并对每个事件进行相应的响应处理。
264270
Original file line number Diff line number Diff line change @@ -219,6 +219,17 @@ Kafka:topic 从几十到几百个时候,吞吐量会大幅度下降。原理
219219
220220主写主读,不支持读写分离
221221
222+ ### Producer 负载均衡
223+
224+ 当 key 不存在时,会从当前存活的分区中轮询;当 key 存在时,发送给哈希后的指定分区。
225+
226+ ### Consumer 负载均衡
227+
228+ Kafka 中主题订阅者的基本单位是消费者组,每个分区只能由消费者组中的一个消费者进行消费,多个消费者组之间对于分区的消费互不影响。共有[ 三个分区分配器] ( https://blog.huohaodong.com/blog/how-kafka-design-loadbalance ) :
229+ 1 . RangeAssignor(默认)
230+ 2 . RoundRobinAssignor
231+ 3 . StickyAssignor
232+
222233
223234## RocketMQ 负载策略
224235
You can’t perform that action at this time.
0 commit comments