RabbitMQ 消息队列的 Nginx 反向代理

对于 http 协议,大家都知道可以使用 nginx 进行反向代理,那么,对于 RabbitMQ 等有状态的长连接呢?配是能配,但是主要会关心长连接超时的问题。 先来看看配置是怎么配的 $ cat nginx.conf #user nobody; worker_processes 1; #error_log /var/logs/error.log; #error_log /var/logs/error.log notice; ……

阅读全文

UDP 包的边界

首先明确一个问题,如果定义了一个数据结构,大小是,比方说 32 个字节,然后 UDP 客户端连续向服务端发了两个包。现在假设这两个包都已经到达了服务器,那么服务端调用 recvfrom 来接收数据,并且缓冲区开得远大于 64,例如,开了 1024 个字节,那么,服务端的 recvfrom 函数是会一次收到两个数据包呢,还是只能收到一个……

阅读全文

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 那种变态的浏览器,他甚……

阅读全文