- 浏览: 51526 次
- 性别:
- 来自: 北京
最新评论
-
chinaagan:
可以考虑两个进程,互相监控
如何编写一个可靠的linux守护进程
文章列表
linux服务端程序都需要提供7 * 24不间断的服务,如何保证工作进程一直不退出或者不被kill掉,常见的方法就是启动一个守护进程来检测工作进程的状态,如果发现工作进程退出,就再fork一个出来。一般的实现见下面一段代码:
// 守护进程(父进程)
int status;
for ( ; ; ) {
if ( 0 == ( pid = fork()) ) {
// 工作进程(子进程)
run();
}
waitpid(-1, &status, 0);
if (WIFEXITED(stat ...
信号就是通知某个进程发了某个事件,也称为软件中断。信号提供了一种处理异步事件的方法。信号通常是异步发生的,进程预先不知道信号准确发生的时刻。后端程序(daemon)往往需要提供7*24不间断的服务,因此,编程daemon程序时对信号的正确处理尤为重要。下面和大家分享编写daemon程序时信号处理的注意事项,内容都来自Internet,只是进行了整理和总结。关于信号的基础知识请参考APUE。
常见的信号
SIGHUP1和终端的连接断开,发送该信号给控制进程。通常用此信号来通知daemon重新读取配置文件(因为daemon不会有控制终端,通常不会收到该信号)。
S ...
@淘宝千石
简介
This library provides fully asynchronous versions of most POSIX functions dealing with I/O. Unlike most asynchronous libraries, this not only includes read and write, but also open, stat, unlink and similar functions, as well as less rarely ones such as mknod, futime or readlink. It als ...
如何实现一个海量用户的实时排名系统?或许可以用mysql搞一个纠结的方案;但要是选择了redis,那绝对是既简单又优雅。Redis的zset本身就是一种支持排序的集合,而zset的实现,则使用了skip list数据结构。Skip list是一种多层次的有序链表,通过随机地选择层数来实现插入、查找和删除都是O(logn)的时间复杂度(和平衡树同样的效率,但实现比平衡树简单很多)。关于skip list的具体介绍可以参见William Pugh的论文:Skip Lists: A Probabilistic Alternative to Balanced Trees 。下面我们来分析一下redi ...
Redis被称为key/value应用中的瑞士军刀,除了其丰富的数据结构支持,更重要的是高效的内存使用,分析源码可以发现作者使用每一个byte都精打细算。在hashtable实现中,Redis引入了zipmap数据结构,保证在hashtable刚创建以及元素较少时,用更少的内存来存储,同时对查询的效率也不会受太大的影响。下面就以源码和例子结合的方式来分析一下zipmap的内存布局。
先来看一下zipmap提供的和存储相关的3个API:
zipmapNew:创建一个zipmap字符串。zipmap创建时只有2个字节,后面会随着set和delete操作动态扩展和收缩。
zipmapSet: ...
设计和开发可以掌控客户端的分布式服务端程序是件幸事,可以把很多事情交给客户端来做,而且可以做的很优雅。角色决定命运,在互联网架构中,web server必须冲锋在前,注定要在多浏览器版本以及协议兼容性方面呕心沥血 ...
Beanstalk protocol
View more documents from qianshi
之前在微博上调查过大家正在使用的分布式内存队列系统,反馈有Memcacheq,Fqueue, RabbitMQ , Beanstalkd以及linkedin的kafka。RabbitMQ使用比较广泛,Beanstalkd是后起之秀。Beanstalkd之于RabbitMQ,就好比Nginx之于Apache,Varnish之于Squid。后面在项目中使用Beanstalkd的过程中,更发现其简单、轻量级、高性能、易使用等特点,以及优先级、多队列、持久化、分布式容错、超时控制等特性。下面就简单介绍一下Beanstalkd,不足之处请大家指正。
----------------------- ...
SSL session resumption的原理是在服务端缓存所有的session,客户端之后在每次和服务端握手时通过Session ID完成session resumption。这种机制对服务端有如下挑战:
1.
如果是在本机缓存session,必须保证同一个客户端的请求要落 ...
很多人熟悉HTTPS,却不知道SSL。HTTPS正是通过SSL和HTTP的组合来提供加密通讯以及对网络服务器身份的鉴别。SSL全称为 Secure Socket Layer,是一种在两台机器之间提供安全通道的协议。它具有保护传输数据以及识别通信机器的功能。客户与服务器之间的数据是经过加密的。SSL 假定其下层的数据包发送机制是可靠的。写入网络的数据将依顺序发送给另一端的程序,不会出现丢包或重传情况。依赖于可靠传输协议发送数据的特点使得SSL 只能在TCP 上工作,不能在UDP 或直接在IP 上运行。SSL 开始就是为Web 设计的,所以SSL可以很好地服务HTTP。SSL在协议栈中的位置如图 ...
Traffic Server设计的思想是将一个大系统划分为若干个小的子系统,每个子系统负责专门的任务或应用。比如,Event子系统负责提供任务调度服务,Net子系统负责提供网络服务。每个子系统抽象为一个Processor,如图1所示。这种高内 ...
多线程和异步事件处理是设计高并发和高性能服务器程序的主要技术,但很少有应用把两种技术组合在一起使用,原因是二者的组合会增加系统的复杂度,并使代码难以理解。多线程程序可以充分利用现代处理器多核的处理能 ...
翻译了Traffic server管理员指南,Apache收录链接如下:http://trafficserver.apache.org/docs/v2/admin/ts_admin_chinese.pdf
作为反向代理缓存,Traffic Server为源服务器服务请求。Traffic Server被配置成对客户端而言是正常的源服务器的方式。
理解反向代理缓存
通过前向代理缓存,Traffic Server为客户端处理发往远距离源服务器的web请求。反向代理缓存(又称服务器加速或虚拟主机托管)和前向代理不同,因为Traffic Server作为源服务器的代理缓存并存储内容。Traffic Server被配置为用户直接连接的源服务器(典型的用法是将源服务器的主机名解析到Traffic Server)。
反向代理解决方案
有多种方式使用Traffic Server作为一个反向代理。下面是一 ...
Traffic Server响应来自客户端、源服务器以及通过配置选项和文件指定的缓存指示。
客户端指示
默认情况下,Traffic Server不缓存含有如下请求头部的对象:
Cache-Control: no-store头部
Cache-Control: no-cache头部
配置Traffic Server忽略Cache-Control: no-cache头部,见Configuring Traffic Server to Ignore Client no-cache Headers。
Cookie: 头部(文本对象)
默认情况下,Traffic Server缓存 ...