zhangskd的专栏

鱼跃此时海,花开彼岸天

排序:
默认
按更新时间
按访问量

TCP协议的性能评测工具 — Tcpdive开源啦

Tcpdive是一个专门的TCP协议性能评测工具。 Github地址:https://github.com/fastos/tcpdive 在过去的几年里,随着移动互联网的飞速发展,整个基础网络已经发生了翻天覆地的变化。用户接入网络的方式,除了宽带和光纤之外,还有2G/3G/4G/WiFi,5G...

2016-01-19 21:59:45

阅读数:15626

评论数:17

Nginx的负载均衡 - 一致性哈希 (Consistent Hash)

当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡。 使用一致性哈希的好处在于,增减集群的缓存服务器时,只有少量的缓存会失效,回源量较小。 在nginx+ats / haproxy+squid等CDN架构中,nginx/haproxy所使用的负载均衡算法便是一致性哈希。 我们举个例子来说明...

2015-12-12 23:46:40

阅读数:29722

评论数:3

Nginx的负载均衡 - 最少连接 (least_conn)

我们知道轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同。 这有个前提,就是每个请求所占用的后端时间要差不多,如果有些请求占用的时间很长,会导致其所在的后端 负载较高。在这种场景下,把请求转发给连数较少的后端,能够达到更好的负载均衡效果,这就是least_conn算法。

2015-12-12 23:42:00

阅读数:12250

评论数:0

Nginx的负载均衡 - 保持会话 (ip_hash)

Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd   算法介绍   ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。 所以同一个客户端的请求,都会发往同一台后端,除非该后端不可用了。ip_ha...

2015-12-12 23:39:23

阅读数:17913

评论数:0

Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 下篇

上篇blog讲述了加权轮询算法的原理、以及负载均衡模块中使用的数据结构,接着我们来看看加权轮询算法的具体实现。 如果upstream配置块中没有指定使用哪种负载均衡算法,那么默认使用加权轮询。 也就是说使用加权轮询算法,并不需要特定的指令,因此也不需要实现指令的解析函数。 而实际上,和其它负载均衡...

2015-12-12 23:36:45

阅读数:6233

评论数:0

Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 上篇

当在upstream配置块中没有指定使用的负载均衡算法时,默认使用的是加权轮询。 按照上述配置,Nginx每收到7个客户端的请求,会把其中的5个转发给后端a,把其中的1个转发给后端b, 把其中的1个转发给后端c。 这就是所谓的加权轮询,看起来很简单,但是最早使用的加权轮询算法有个问题,就是7个请求...

2015-12-12 23:33:21

阅读数:26875

评论数:2

Nginx的负载均衡 - 整体架构

Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd   什么是负载均衡   我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务,这就是所谓的集群。 负载均衡服务器,就是用来把经过它的流量,按照某种方法,分配到集群中的各...

2015-12-12 23:30:26

阅读数:18703

评论数:0

TCP的发送系列 — 发送缓存的管理(二)

主要内容:从TCP层面判断发送缓存的申请是否合法,进程因缺少发送缓存而进行睡眠等待、因为有发送缓存可写事件而被唤醒。 内核版本:3.15.2 上一篇blog讲述了单个Socket层面上的发送缓存管理,现在来看下整个TCP层面上的发送缓存管理。

2015-09-06 22:48:14

阅读数:6444

评论数:7

TCP的发送系列 — 发送缓存的管理(一)

主要内容:TCP发送缓存的管理,包括发送缓存的初始化、sock发送缓存的动态调整、sock发送缓存的申请和释放。 内核版本:3.15.2。 TCP对发送缓存的管理是在两个层面上进行的,一个层面是单个socket的发送缓存管理, 另一个层面是整个TCP层的内存管理。先来看下单个socket的发送缓存...

2015-09-06 22:44:50

阅读数:9542

评论数:7

TCP的发送系列 — tcp_sendmsg()的实现(二)

主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   在上篇blog中分析了tcp_sendmsg()这个主要函数的实现,现在来看下之前略过的一些细节, 包括等待连接的建立、tcp_push()的实现、tc...

2015-09-06 22:38:36

阅读数:6280

评论数:4

TCP的发送系列 — tcp_sendmsg()的实现(一)

主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 上一篇blog讲的是send()、sendto()、sendmsg()和sendmmsg()这些发送函数的系统调用和 Socket层实现,现在来看下它们的...

2015-09-06 22:30:13

阅读数:9019

评论数:4

Socket层实现系列 — send()类发送函数的实现

主要内容:socket发送函数的系统调用、Socket层实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 以下是send()、sendto()、sendmsg()和sendmmsg()的发送流程图,这四个函数除了在系统调用层面 上有些差别,在...

2015-09-06 22:23:56

阅读数:12013

评论数:0

TCP连接建立系列 — 客户端接收SYNACK和发送ACK

主要内容:客户端接收SYNACK、发送ACK,完成连接的建立。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   客户端主动建立连接时,发送SYN段后,连接的状态变为SYN_SENT。 此时如果收到SYNACK段,处理函数为tcp_rcv_state...

2015-08-15 22:47:56

阅读数:8091

评论数:5

TCP连接建立系列 — 客户端的端口选取和重用

主要内容:connect()时的端口选取和端口重用。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   端口选取   connect()时本地端口是如何选取的呢?  如果用户已经绑定了端口,就使用绑定的端口。 如果用户没有绑定端口,则让系统自动选取,...

2015-08-15 22:42:07

阅读数:4511

评论数:1

TCP连接建立系列 — 客户端发送SYN段

主要内容:客户端调用connect()时的TCP层实现。 内核版本:3.15.2  我的博客:http://blog.csdn.net/zhangskd   connect的TCP层实现   SOCK_STREAM类socket的TCP层操作函数集实例为tcp_prot,其中客户端使用tcp_v4...

2015-08-15 22:35:23

阅读数:4377

评论数:2

linux下使用异步通知

阻塞式I/O是一直等待直到设备可以访问,非阻塞式I/O是定期轮询设备是否可以访问。 异步通知则是当设备可以访问时才主动通知应用程序,有点像设备的硬中断。   并不是所有的设备都支持异步通知,应用程序通常假设只有套接字和终端才有异步通知的能力。 异步通知存在一个问题,当进程收到SIGIO信号时,它并...

2015-05-23 22:47:36

阅读数:5460

评论数:0

Socket层实现系列 — connect()的实现

主要内容:connect()的Socket层实现、期间进程的睡眠和唤醒。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   应用层   int connect(int sockfd, const struct sockaddr *serv...

2015-05-23 22:29:12

阅读数:9978

评论数:0

Socket层实现系列 — I/O事件及其处理函数

主要内容:Socket I/O事件的定义、I/O处理函数的实现。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   I/O事件定义   sock中定义了几个I/O事件,当协议栈遇到这些事件时,会调用它们的处理函数。 struct sock { ...

2015-05-23 22:25:25

阅读数:6895

评论数:0

Socket层实现系列 — 信号驱动的异步等待

主要内容:Socket的异步通知机制。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   概述   socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。 对于这些事件,socket中分别定义了相应的事件...

2015-05-23 22:24:51

阅读数:4903

评论数:0

Socket层实现系列 — 睡眠驱动的同步等待

主要内容:Socket的几个I/O事件、Socket的同步等待机制。 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd   概述   socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。 对于这些事件,so...

2015-05-23 22:24:35

阅读数:4221

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭