redis sharding有哪些做法

实现基础都是通过哈希函数将健名转化为一个数字,然后取mod运算,转化成一个比如0-4的数字,映射到第几台redis服务器。 客户端实现数据分片,多数redis客户端都有这个功能,缺点是客户端需要实时知道集群节点的信息。如果增加新节点,客户端也要调整。 服务端实现,对业务透明。使用redis-cluster 自动...

mysql B+树

采用 B+ 树的原因是 B 类的数每层节点数目多,层数少,可以减少磁盘 IO 次数,查询数据的时候,最坏情况 IO 次数等于树的高度。但是 B 树在提高了磁盘 IO 性能的同时,并没有解决元素遍历效率低下的问题。正是为了解决这个问题,B+ 树通过遍历叶子节点就可以实现整棵树的遍历,并且在数据库中范围查询是非常频繁...

redis 负载均衡

采用 KeepAlived + Redis + Haproxy 的方式部署 先创建 redis cluster 集群,这样可以让数据通过槽将数据存储到不同的实例上,可以满足大量数据存储的需求。 部署 KeepAlived 实现主从热备,秒级切换。通过 VRRP 协议实现,相当于把服务器当做路由器,连接VIP地址。...

tcp ip 流量控制和拥塞控制

流量控制:滑动窗口协议,保证了无差错和有序,也实现了流量控制,主要方式就是接收方返回了 ACK 中包含自己的接收窗口大小,控制发送方的数据发送。 拥塞控制:作用于网络,防止过多数据注入到网络中,出现网络负载过大的情况。常用的方法是 慢开始、拥塞避免 快重传、快恢复 慢开始慢开始算法的思路就是,不要一开始就发送...

session和cookie的区别

因为 HTTP 协议是无状态的,所以需要借助 session 和 cookies 来记录用户状态和跟踪用户会话。session 是存储在服务器,服务器用于标识每一个会话,一般是 session_idcookies 是存储在客户端的数据。都是用来跟踪浏览器用户身份的方式。都有有效期。session 一般要借助 co...

socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。这次通信一定失败吗,如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达?

问:socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。这次通信一定失败吗,如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达? 不一定会失败,因为第8次丢失可能会重发。 如果在传输层,报文的收到的顺序可能不...

linux 10000行日志只查看1000-2000行

head -n [行数a] # 显示开始a行 tail -n [行数a] # 显示最后a行 tail -n +[行数a] # 从a行以后开始显示 前 2000 行cat file head -n 2000 1000-2000 行从 1000 行开始显示 2000 行cat file tail -n +1000...

tcp如果最后一个包的ack丢失

server 会重新发送 SYN+ACK,如果重试后仍然没有收到 ACK ,那么关闭 socketclient 在收到SYN+ACK的时候,连接状态已经是已连接了,如果此时客户端向服务端发数据,server 端将以 RST 包响应,客户端感知到连接错误。

tcp的包是否都是等长度的

是,由最大链路层帧长度来设置(MTU)

一次完整的HTTP请求所经历的7个步骤

建立 TCP 连接HTTP 协议是建立在 TCP 协议上,所以第一步需要建立 TCP 连接。 Web浏览器向 Web 服务器发送请求命令发出请求命令,比如:GET/index.php HTTP/1.1 Web 浏览器发送请求头信息发送请求命令之后,还要发送请求头信息,之后再发送一个空白行标识结束发送。 Web 服...