问题聚焦:     核心章节.     服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模型 C/S模型 结构: 特点: 逻辑简单. 工作流程: I/O复用技术:select,同时监听多个客户请求. 优点:适合资源相对集中的场合. 缺点:当访问量过大,可能所有客户都将得到很慢的相应. P2P模型 结构:两种结构 结构b比结构a增加了发现服务器,用于主机之间的互相发现,尽快找到自己需要的资…
本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论~ 技能其实是战斗系统的一个组成部分,战斗基本上都可以由技能触发,技能系统实际上就是一套完整的逻辑,我们用表格来设计,将技能的逻辑用属性字段抽象出来,然后依据属性字段来控制逻辑,策划人员可以通过更改属性字段来配置出不同的逻辑属性. 1. 表格属性字段的设计 为了减少冗余,我们将技能属性字段设计在4个不同的表中: Skill表:技能表的入口表,包…
第八章 高性能服务器编程框架 这一章主要介绍服务器的三个主要模块: I/O处理单元.逻辑单元.存储单元.另外服务器的模型有:C/S模型和P2P模型.虽然服务器模型比较多,但是其核心框架都一样,只是在于逻辑处理方面.如下图简单的介绍一台服务器或服务器机群模型的基本框架: 1.I/O模型 I/O处理单元:I/O处理单元是服务器管理客户连接的模块.主要是等待并受理新的客户连接接收客户数据,将服务器响应数据返回给客户端. 逻辑单元:就是一个个进程或者线程.用于处理客户数据,将结果传递给I/O处理单元或者…
服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接. 服务器运行稳定后,客户端就可以调用connect函数向服务器发起连接了. P2P模型 P2P模型使得每台机器在消耗服务的同时也给别人提供服务,这样资源能够充分.自由的共享. 2.服务器编程框架 包含: I/O处理单元  请求队列   逻辑单元  …
问题聚焦:     除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范.     工欲善其事,必先利其器,这篇主要来探讨服务器程序的一些主要规范. 概览: Linux服务器程序一般以后台程序的形式运行,后台进程又称为守护进程. Linux服务器程序一般以某个专门的非root身份运行. Linux服务器程序通常是可配置的,命令行或者配置文件的形式. Linux服务器程序通常会在启动的时候生成一个PID文件,以记录该后…
很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件理解它的设计与实现原理,阅读开源项目的源代码,都知道源码之前了无秘密.我也承认读源码能够快速提高我们的编程能力和编程思维,我也经常研究很多项目的源代码,有些是工作需要,有些是兴趣.但是我今天想说的都不是这些,我想说的是更高一层的学习方案,就是通过自己的实践实现一个开源软件,也许这个开源软件没有任何人…
问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量. Linux线程概述 线程模型 程序中完成一个独立任务的完整执行序列,即一个可调度的实体. 分为内核线程和用户线程 当进程的一个内核线程获得CPU的使用权时,它就加载并运行一个用户线程,可见,内核线程相当于用户线程运行的"容器". 一个进程可以拥有M个内核线程和N个用户线程, M<…
<Linux高性能服务器编程>:当当网.亚马逊 目录: 第一章:tcp/ip协议族 第二章:ip协议族 第三章:tcp协议详解 第四章:tcp/ip通信案例:访问Internet 第五章:linux网络编程基础API 第六章:高级IO函数 第七章:linux服务器程序规范 第八章:高性能服务器框架 第九章:IO复用 第十章:信号 第十一章:定时器 第十二章:高性能IO框架库libevent 第十三章:多进程编程 第十四章:多线程编程 第十五章:进程池和线程池 第十六章:服务器调制.调试和测试…
问题聚焦:     进程是Linux操作系统环境的基础.     本篇讨论以下几个内容,同时也是面试经常被问到的一些问题:     1 复制进程映像的fork系统调用和替换进程映像的exec系列系统调用     2 僵尸进程     3 进程间通信的方式之一:管道     4 3种System V进程通信方式:信号量,消息队列和共享内存 fork系统调用 定义: #include <sys/types.h> #include <unistd.h> pid_t fork( void…
问题聚焦:     前篇提到了I/O处理单元的四种I/O模型.     本篇详细介绍实现这些I/O模型所用到的相关技术.     核心思想:I/O复用 使用情景: 客户端程序要同时处理多个socket. 客户端程序要同时处理用户输入和网络连接. TCP服务器要同时处理监听socket和连接socket,这是使用最多的场合. 服务器要同时处理TCP请求和UDP请求. 服务器要同时监听多个端口或者处理多种服务. 主要技术: select poll epoll select系统调用 作用:     在…