基于Dubbo:2.6.4, 单一TCP长连接+Protobuf (响应时间和吞吐量更优), 短连接的HTTP+JSON序列化
无论是微服务、SOA、还是RPC架构,都是 分布式服务架构 ,都需要实现 服务之间的互相通信 ,通常把这种通信统称为 RPC通信
字段 | 长度(字节) | 备注 |
---|---|---|
魔数 | 4 | 协议的标识 ,类似于字节码的魔数,通常为固定数字 |
版本号 | 1 | |
序列化算法 | 1 | Protobuf / Thrift |
指令 | 1 | 类似于HTTP中的增删改查 |
数据长度 | 4 | |
数据 | N |
三次握手
四次挥手
配置项 | 备注 |
---|---|
fs.file-max = 194448 / ulimit | Linux默认 单个进程 可以打开的文件数量上限为1024,Socket也是文件 |
net.ipv4.tcp_keepalive_time | 与Netty的 SO_KEEPALIVE 配置项的作用一致 |
net.ipv4.tcp_max_syn_backlog | SYN队列的长度 ,加大队列长度,可以容纳更多 等待连接 的网络连接数 |
net.ipv4.ip_local_port_range | 客户端连接服务器时,需要动态分配源端口号,该配置项表示 向外连接的端口范围 |
net.ipv4.tcp_max_tw_buckets |
1. 当一个连接关闭时,TCP会通过 四次挥手
来完成一次关闭连接操作,在请求量比较大的情况下,消费端会有大量 TIME_WAIT
状态的连接 2. 该参数可以限制TIME_WAIT状态的连接数量,如果TIME_WAIT的连接数量超过该值,TIME_WAIT将会立即被清除掉并打印警告信息 |
net.ipv4.tcp_tw_reuse |
1. 客户端每次连接服务器时,都会获得一个 新的源端口
以实现 连接的唯一性
,在TIME_WAIT状态的连接数量过大的情况下,会增加端口号的占用时间 2. 由于处于TIME_WAIT状态的连接属于 关闭 连接,所以新创建的连接可以 复用 该端口号 |