摘要:
JDK NIO的bug,例如epoll bug,它会导致Selector空轮询,最终导致CPU 100%。 Selector BUG出现的原因 若Selector的轮询结果为空,也没有wakeup或新消息处理,则发生空轮询,CPU使用率100% 这个bug的描述内容为,在NIO的selector中, 阅读全文
摘要:
建立socket连接的过程 1:client发syn请求给server 2:server收到后把请求放在syn queue中,这个半连接队列的最大值是系统参数tcp_max_syn_backlog定义的 3:存放在半连接队列后发送syn+ack给client 4:client收到后再发送syn+ac 阅读全文
摘要:
Tcp是一个流的协议,一个完整的包可能会被Tcp拆成多个包进行发送,也可能把一个小的包封装成一个大的数据包发送,这就是所谓的粘包和拆包问题 粘包、拆包出现的原因: 在流传输中出现,UDP不会出现粘包,因为它有消息边界 1、要发送的数据大于TCP发送缓冲区剩余空间,需要被拆包 2、待发送的数据大于MS 阅读全文
摘要:
一、 对ThreadLocal的理解 ThreadLocal,很多叫做线程本地变量,也有叫线程本地存储,可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。 这样一个数据库连接管理类,多线程会存在线程安全问题:第一,这里面的2个方法没有进行 阅读全文
摘要:
一、为何需要replication kafka0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的partition数据都不可被消费,这与kafka数据持久性及Delivery担保设计目标相悖,同时producer都不能再将数据保存于这些partition中。 阅读全文
摘要:
1、写入方式 producer采用push模式将消息发布到broker,每条消息都被append到patition中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障kafka吞吐率) 2、消息路由 producer发送消息到broker时,会根据分区算法选择将其存储到哪一个Partition, 阅读全文
摘要:
一、kafka的架构 1、Broker kafka集群包含一个或者多个服务器,这种服务器就叫做Broker 2、Topic 每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic(逻辑上的概念,物理上不同的Topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或者多个bro 阅读全文
摘要:
情况一:java.lang.OutOfMemoryError: Java heap space 原因:java堆内存不足,可能是真的不足,也可能是程序中有死循环 方案:1、调整JVM参数-Xms2048m -Xmx2048m 2、定位死循环代码 情况二:java.lang.OutOfMemoryEr 阅读全文
摘要:
1、简介 AbstractQueuedSynchronizer队列同步器,用来实现锁或者其他同步组件的基础框架 AbstractQueuedSynchronizer使用int类型的volatile变量维护同步状态 一般使用AQS的主要方式是继承,子类通过实现它提供的抽象方法来管理同步状态,主要管理的 阅读全文
摘要:
1、使用LockSupport的part/unpark实现 运行结果: before parkbefore unparkBlocker info ParkAndUnparkDemoafter parkBlocker info nullafter unpark说明:本程序先执行park,然后在执行un 阅读全文