TCP TIME_WAIT 状态

四次挥手

当需要断开一个 TCP 连接时,需要四次挥手,每一次需要发送一报文,同时 TCP 连接会进行状态的变化。在挥手时的最后一个 ACK 发出后,TCP 连接会进入 TIME_WAIT 状态。

TIME_WAIT 状态通常需要等待 2MSL 的时间再变成 CLOSED 状态。而因为这个状态,经常会产生一些奇怪的问题。本文整理了 TIME_WAIT 状态的作用和如何应对大量 TIME_WAIT 的建议。

阅读更多

TCP 的三次握手和四次挥手

TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题。字面上,三次握手是指发送了三个报文段,四次挥手是指发送了四个报文段。但知其然,更要知其所以然。

本文整理了从相关文章的笔记,以备查用。

阅读更多
从源码理解 Kafka 的分区选择策略

从源码理解 Kafka 的分区选择策略

Kafka 中将 Topic 分为 partition,消费者从 partition 中消费消息。消息是怎么确定发住哪个 partition 呢?其实默认有两种分区选择策略:

  1. 消息 key 为空时随机选择
  2. 消息 key 不为空时,对 key 进行 HASH,然后对分区数取模
阅读更多

事务的特性和隔离级别

数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务的使用是数据库管理系统区别文件系统的重要特征之一。

阅读更多