- 博客(13)
- 资源 (12)
- 收藏
- 关注
翻译 千万级并发实现的秘密:内核不是解决方案,而是问题所在!
我们现在已经搞定了 C10K并发连接问题 ,升级一下,如何支持千万级的并发连接?你可能说,这不可能。你说错了,现在的系统可以支持千万级的并发连接,只不过所使用的那些激进的技术,并不为人所熟悉。 要了解这是如何做到的,我们得求助于Errata Security的CEO Robert Graham,看一下他在Shmoocon 2013 的绝对奇思妙想的演讲,题目是C10M Defen
2013-11-21 13:45:55 4530 2
翻译 高性能服务器架构
本文将与你分享我多年来在服务器开发方面的一些经验。对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严格意义上的服务器。使用“高性能请求处理程序”是一个很糟糕的标题,为了叙述起来简单,下面将简称为“服务器”。 本文不会涉及到多任务应用程序,在单个程序里同时处理多个任务现在已经很常见。比如你的浏览器可能就在做一些并
2013-11-21 13:41:09 10302
翻译 C10K问题
是时候让 Web 服务器同时处理一万客户端了,你不觉得吗?毕竟,现在的 Web 是一个大地盘了。 并且,计算机也是一样的大。 你可以花 $1200 左右购买一台 1000MHz,2Gb RAM 和一块 1000Mbit/s 以太网卡的机器。我们来看看——在 20000 客户端(是 50KHz,100Kb 和 50Kb/s/客户端)时,它不采取任何更多的马力而是采用 4Kb 的硬盘和为2万客
2013-11-17 23:46:35 3345
转载 服务器设计系列:高性能服务器本质论
一 服务器分类 从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器 (1) CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。典型的如转发服务器/代理服务器/协议转换类服务器/分布式总线服务器等。 (2) IO密集型:该类服务器存在对cache/db/硬盘等的同步访问,或者对fcgi/其他服务器等的同步访问。简单说有同步访问点
2013-11-17 23:45:53 2473 1
转载 服务器设计系列:架构综述
一、系统框架概述 网络上的服务器,无论是嵌入式的网络设备,还是pc上服务器,整体结构以及主要思想都大体相同:根据业务模型确定主要数据结构,根据数据结构确定线程模型,在各个业务线程内根据围绕主要数据结构进行的操作确定状态机模型,低层使用网络层收发数据完成和其它网元的通讯。线程交互模型简单描述如下图:图1 线程交互模型 二、网络层 相对而言,网络层的实现相对呆板、模式
2013-11-17 23:43:47 5416
转载 服务器设计系列:日志模块
log模块是一个小模块,却是每个系统必备的模块。优秀的系统一定会有优秀的log信息,也可以说全面到位的log信息在一定程度上决定了一个系统的健壮性。在linux上,log模块是跟踪程序运行,验证业务逻辑正确的唯一方法。 一、功能 一个优秀的log系统应该包含以下功能: (1)支持打印到屏幕、文件、socket、syslog (2)支持分级别打印 (3)支持分模块打印
2013-11-13 22:31:18 4660
转载 服务器设计系列:定时器
一、 基础知识 1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeval,struct timespec,struct tm。 (1)time_t是一个长整型,一般用来表示用1970年以来的秒数。 (2)struct timeval有两个成员,一个是秒,一个是微妙。struct timeval { long tv_sec;
2013-11-13 22:30:52 5421 1
转载 服务器设计系列:网络模型
全文针对linux环境。tcp/udp两种server种,tcp相对较复杂也相对比较常用。本文就从tcp server开始讲起。先从基本说起,看一个单线程的网络模型,处理流程如下: socket-->bind-->listen-->[accept-->read-->write-->close]-->close []中代码循环运行,[]外的是对监听socket的处理,[]内的是对
2013-11-13 22:29:54 4005
转载 服务器设计系列:内存管理
服务器设计人员在一段时间的摸索后,都会发现:服务器性能的关键在于内存。从收包到解析,到消息内存的申请,到session结构内存的申请都要小心处理,尽量减少内存数据copy,减少内存动态申请,减少内存检索。为达到这个目的,不同的地方有不同的方法,比如常见的包解析,使用缓冲区偏移以及长度来标识包内字段信息;内存使用量固定的系统,系统启动就申请好所有需要的内存,初始化好,等待使用的时候直接使用;基于li
2013-11-09 11:10:52 4306
转载 服务器设计系列:状态机
一、状态机描述 状态机理论最初的发展在数字电路设计领域。在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为Mealy型和Moore型状态机;根据输出是否与输入信号同步,状态机可以划分为异步和同步状态机。而在软件设计领域,状态机设计的理论俨然已经自成一体。Moore型状态机的输出只和当前状态有关,和输入无关,如果在软件设计领域设计出这种类型的状态机,则该状态机接受的事件都是无内蕴
2013-11-09 11:09:08 4830
转载 服务器设计系列:线程
废话不多说,详细介绍使用线程的优点好处请参考baidu、google。 一、线程使用场景 使用线程的方式大致有两种: (1)流水线方式。根据业务特点,将一个流程的处理分割成多个线程,形成流水线的处理方式。产生的结果:延长单一流程的处理时间,提高系统整体的吞吐能力。 (2)线程池方式。针对处理时间比较长且没有内蕴状态的线程,使用线程池方式分流消息,加快对线程消
2013-11-09 11:03:03 1903
转载 老码农:关于需求分析的几点体会
在我前面写的一篇博文《如何写出让自己满意的代码》中,有读者在评论中提到了用户需求不确定导致在总体设计阶段总是无的放矢的问题。需求分析当然是非常重要的,甚至在某些情况下比总体设计还更重要。那么,如何理解需求分析呢?Google一下关键字“需求分析”,网上已经有很多相关的文章了,有不少已经写得像教科书一样全面准确,还提供了一些最佳实践的分类方法。我这篇就从个人经验方面谈一点自己的体会好了。首先
2013-11-06 10:48:36 1801
转载 老码农:如何写出让自己满意的代码
最近出于学习目的写一个管理系统,越到后边,越觉得自己前边的代码写得烂。前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!”我在回复里刚写了几句,就意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博文。首先要说明的是,我写这篇博客并不代表本人觉得自己的代码写得有多好。事实上我很清楚自己的水平,作为一个做应用系统的程序员,
2013-11-06 10:47:10 1684
Effective C++中文版(第三版)
2009-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人