对于 http 协议,大家都知道可以使用 nginx 进行反向代理,那么,对于 RabbitMQ 等有状态的长连接呢?配是能配,但是主要会关心长连接超时的问题。
先来看看配置是怎么配的
$ cat nginx.conf
#user nobody;
worker_processes 1;
#error_log /var/logs/error.log;
#error_log /var/logs/error.log notice;
…… 阅读全文
Tag Archives: TCP
UDP 包的边界
首先明确一个问题,如果定义了一个数据结构,大小是,比方说 32 个字节,然后 UDP 客户端连续向服务端发了两个包。现在假设这两个包都已经到达了服务器,那么服务端调用 recvfrom 来接收数据,并且缓冲区开得远大于 64,例如,开了 1024 个字节,那么,服务端的 recvfrom 函数是会一次收到两个数据包呢,还是只能收到一个…… 阅读全文
Linux 多进程监听 socket
首先来看代码
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/wait.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd…… 阅读全文
Linux TCP UDP 混合
基本的思路是这样的:在服务器端,有两个机器,一个对外开启 TCP 监听,然后把监听到的请求内容送到后面的另外一台,或者多台轮询机器上,内网之间使用 UDP,然后等待业务逻辑机器处理完成,这个地方可以做成异步的,然后再返回到用户。
即是这样: client server_front server_back
下面来看代码,首先是 server_fro…… 阅读全文
不同服务器端模型在并发请求下的表现差异
一般来说,服务器的模型有下面几种:
单进程单线程
多进程(一个请求对应一个进程,Apache 之类貌似就是这个)
多线程(一个请求对应一个线程,这个挺少见到的)
select / poll
epoll
它们的差别可以看这个,http://www.cnblogs.com/sharra/…
因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了…… 阅读全文
从点击到呈现 — 详解一次HTTP请求(2)
上回说道服务器启动了监听服务,准备迎接来自客户机的请求。那么,我们以一次典型的浏览请求来解析:
当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,对于 google chrome 那种变态的浏览器,他甚…… 阅读全文