服务器架构与网络编程
文章平均质量分 78
gauss
这个作者很懒,什么都没留下…
展开
-
简单实用的网游服务器架构
原文:http://data.gameres.com/message.asp?TopicID=154865简单实用的网游服务器架构此文并不是聚润堂所在公司当前运营的网游游戏服务器架构,而是在看过了近十个商业网游的架构,在现阶段心目中规划的简单实用的网游服务器架构。网游的本质是人和人之间关系,人越多,关系越多,越能把人留住。开服头三转载 2011-12-04 08:54:59 · 516 阅读 · 0 评论 -
组播技术
1 概述1.1 产生背景传统的IP通信有两种方式:一种是在源主机与目的主机之间点对点的通信,即单播;另一种是在源主机与同一网段中所有其它主机之间点对多点的通信,即广播。如果要将信息发送给多个主机而非所有主机,若采用广播方式实现,不仅会将信息发送给不需要的主机而浪费带宽,也不能实现跨网段发送;若采用单播方式实现,重复的IP包不仅会占用大量带宽,也会增加源主机的负载。所以,传统的单播和广播转载 2015-04-20 01:17:09 · 470 阅读 · 0 评论 -
pthread_key_t和pthread_key_create()详解
pthread_key_t和pthread_key_create()详解下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变转载 2015-04-23 21:20:05 · 444 阅读 · 0 评论 -
TAF server的大致组件结构
转 http://blog.csdn.net/turkeyzhou/article/details/8759530业务与底层网络通信分离Server大部分主要分为两层:网络接收层:负责监听端口,负责收包,编码,解码工作,负责将响应包回传给客户端。业务处理层:负责接收网络接收层完整的包,如果是RPCserver,则需要根据上下文请求(由网络接收层构建)中指定的方法名以及参数调转载 2015-04-14 14:32:02 · 4993 阅读 · 0 评论 -
C++线程锁封装
C++线程锁的封装,主要提供lock,unlock,require等操作,需要注意的是线程重复获取锁的问题,设置了一个count的计数器,该计算器之所以不考虑++,--的原子操作的问题,是因为该计数器本身就在lock与unlock中,所以本身是线程安全的。另外mutable count是将count的变化操作防止在const方法中,保证方法语义。转载 2015-04-16 14:31:09 · 673 阅读 · 0 评论 -
time_wait和close_wait
总结:一端忘记close,将造成另一端大量的close_wait的状态。主动执行close的一端,在量特别大的情况下,对so_linger没有做设置,将造成大量的time_wait状态的连接。TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的转载 2015-04-16 13:48:10 · 372 阅读 · 0 评论 -
Tcpdump实例分析
常用用法 (这里用sudo因为当前帐号无权使用tcpdump,这里仅以一个tcp的例子来说明) :sudo /usr/sbin/tcpdump tcp port 80 and host 172.23.1.69 -ieth1 -n 每一行中间都有这个包所携带的标志:S=SYN,发起连接标志P=PUSH,传送数据标志F=FIN,关转载 2015-04-16 13:49:56 · 418 阅读 · 0 评论 -
惊群现象
转自:http://blog.163.com/leyni@126/blog/static/16223010220122611523786/“据说”惊群问题已经是一个很古老的问题了,并且在大多数系统中已经得到有效解决,但对我来说,仍旧是一个比较新的概念,因此有必要记录一下。什么是惊群 举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但转载 2015-04-15 11:34:01 · 747 阅读 · 0 评论 -
关于HttpServer的time-wait
TIME_WAIT状态根据TCP协议,主动发起关闭的一方,会进入TIME_WAIT状态,持续2*MSL(Max Segment Lifetime),缺省为240秒,在这个post中简洁的介绍了为什么需要这个状态。值得一说的是,对于基于TCP的HTTP协议,关闭TCP连接的是Server端,这样,Server端会进入TIME_WAIT状态,可想而知,对于访问量大的Web Server转载 2015-04-16 13:47:23 · 559 阅读 · 0 评论 -
Pthread_Mutex_t Vs Pthread_Spinlock_t
锁机制(lock) 是多线程编程中最常用的同步机制,用来对多线程间共享的临界区(Critical Section) 进行保护。Pthreads提供了多种锁机制,常见的有:1) Mutex(互斥量):pthread_mutex_***2) Spin lock(自旋锁):pthread_spin_***3) Condition Variable(条件变量):pthread_con_转载 2015-04-16 17:09:25 · 488 阅读 · 0 评论 -
纪一次TCP/IP连接关闭全程
TCP/IP众所周知在连接的时候,需要经历三次握手,而在终止的时候需要经历四次(有某些是以三次实现)握手才能“完美的”终止一次TCP/IP,因为TCP/IP的可靠性导致了一种互不信任的通信模式。故非此周折; TCP/IP三次握手过程。三次握手好理解。下面是TCP/IP关闭的四次握手流程图; 当一方发送close的时候,则向服务器发送一个FIN报文分节。得到服务器的响转载 2015-04-17 01:39:40 · 775 阅读 · 0 评论 -
性能调优攻略
关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性能瓶颈转载 2015-04-16 18:06:59 · 359 阅读 · 0 评论 -
epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __转载 2015-04-17 02:10:58 · 442 阅读 · 0 评论 -
提高 Linux 上 socket 性能(精辟,转载)
加速网络应用程序的 4 种方法M. Tim Jones, 资深软件工程师, eMulexTim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及BSD Sockets Programming from a Multilanguage Perspective 等书的作者转载 2015-06-21 19:42:16 · 424 阅读 · 0 评论 -
TCP/IP 协议栈及 OSI 参考模型详解
OSI参考模型OSI RM:开放系统互连参考模型(open systeminterconnection reference model)OSI参考模型具有以下优点:简化了相关的网络操作;提供设备间的兼容性和标准接口;促进标准化工作;结构上可以分隔;易于实现和维护。 20世纪60年代以来,计算机网转载 2015-10-04 23:28:25 · 798 阅读 · 0 评论 -
TCP/IP 协议栈及 OSI 参考模型详解
OSI参考模型OSI RM:开放系统互连参考模型(open systeminterconnection reference model)OSI参考模型具有以下优点:简化了相关的网络操作;提供设备间的兼容性和标准接口;促进标准化工作;结构上可以分隔;易于实现和维护。 20世纪60年代以来,计算机网络得到了飞速增长。各转载 2015-09-20 09:43:30 · 794 阅读 · 0 评论 -
几种经典的网络服务器架构模型的分析与比较
前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以转载 2015-12-19 21:42:26 · 436 阅读 · 0 评论 -
LB 负载均衡的层次结构
作为后端应用的开发者,我们经常开发、调试、测试完我们的应用并发布到生产环境,用户就可以直接访问到我们的应用了。但对于互联网应用,在你的应用和用户之间还隔着一层低调的或厚或薄的负载均衡层软件,它们不显山不露水默默的发挥着重要的作用,以至于我们经常忽略了它们的存在。因为负载均衡层通常不在一般开发人员的问题域内,而且它们一般都是现成且成熟的解决方案,以至于我们习惯性的忽略和认为乏善可陈。其实不然,本文就转载 2016-04-02 09:45:29 · 617 阅读 · 0 评论 -
thrift0.7.0在ubuntu11.04/11.10和centos6上的安装测试
参照 http://jnb.ociweb.com/jnb/jnbJun2009.html http://wiki.apache.org/thrift/GettingUbuntuPackages 安装 ant和ivy Shell代码 sudo tar xzvf apache-ant-1.8.2-bin.tar.gz -C /usr/local su转载 2015-04-23 13:59:05 · 583 阅读 · 0 评论 -
makefile文件的编写规则及实例 (转)
1.一个简单的makefile例子 假设一个程序有两个文件file1.c,file2.c,每个文件都包含head.h,生成file可执行文件 file:file1.o file2.o 附属行(文件的依存关系) gcc -o file1.o file2.o 命令行file1.o:file1.c head.h转载 2015-01-25 12:35:53 · 1285 阅读 · 0 评论 -
游戏服务器中的数据库异步操作技术和游戏数据的保存机制
原文:http://www.cppblog.com/jaxe/archive/2010/08/30/125258.html 在游戏服务器中,处理玩家登陆需要向数据库查询玩家的账号和密码,玩家上线和下线需要对玩家的角色数据从数据库中读取和保存。可以说,相对于游戏逻辑处理来说,数据库操作是一种相对很慢的操作,即便你通过使用多个线程多个数据库连接来提高数据库操作的处理能力,但是,在高并发高负载转载 2011-12-04 08:53:22 · 494 阅读 · 0 评论 -
select,poll,epoll区别
select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费2.1024上限问转载 2013-01-04 22:09:35 · 242 阅读 · 0 评论 -
epoll简介与示例的整理
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://egeho123.blogbus.com/logs/17682891.html名词解释:man epoll之后,得到如下结果: NAME epoll - I/O event notification facility SYNOPSIS #include转载 2013-05-05 12:14:50 · 385 阅读 · 0 评论 -
LAMP 平台
1.Web应用软件编辑本义项lamp 百科名片 lampLinux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net转载 2013-06-19 22:16:43 · 859 阅读 · 0 评论 -
linux socket常用函数
======== TCP ========TCP_Serversocket() bind()listen() accept()write()read()close() 和shutdown() TCP_Clientsocket() connect() send() 和recv() close() 和shutdown() ======转载 2013-11-21 00:01:29 · 629 阅读 · 0 评论 -
ICE运行时环境备忘一
转:http://summer85.iteye.com/blog/16012321、ICE运行环境的唯一句柄Communicator对象,其用来管理ICE运行环境下所有对象资源,包含但不限于: A、客户端线程池,主要用来进行AMI方法的回调接口调用,防止环形调用产生的死锁 B、服务器端的线程池,主要用来接收和处理客户端的接口调用请求 C、ICE运行环境对应的属性转载 2014-04-25 22:29:15 · 430 阅读 · 0 评论 -
ICE服务架构压力粗略测试数据
性能有关)(windows服务下超过1000个连接以上效率基本差到无法测试的程度) 1、windows服务器只收数据,不返回给客户端数据只做应答的情况: 连接条数/发送数据大小服务器工作线程数目1,平均响应时间服务器工作线程数目8,平均响应时间服务器工作线程数目12,平均响应时间100(转载 2014-04-25 22:38:29 · 985 阅读 · 0 评论 -
ICE运行环境备忘二
1、需要理解ICE运行环境对客户端请求的调用分派语义,即当一个请求到来时,如何查找到对应到servant服务对象进行消息处理 A、在ASM 中查找该标识。如果ASM 有这样一个条目,就把请求分派到对应的servant。 B、如果到来的对象标识的范畴不是空的,就查找针对该范畴注册的servant定位器。如果有这样的servant 定位器,就调用这个定位器的locate,转载 2014-04-25 22:41:46 · 600 阅读 · 0 评论 -
ICE运行时环境备忘三
1、ICE是一个多线程的运行环境,每个communicator通信器中都有一个Leader-Follower的线程池负责处理客户端的服务请求, ICE的线程池有一系列的属性用以来控制线程池的运行,主要包含如下内容: ThreadPoolName.Size = 3 # 线程池初始线程个数3个,注意默认大小1个 ThreadPoolN转载 2014-04-25 22:31:24 · 551 阅读 · 0 评论 -
ICE笔记(08):C++线程与并发
【 colorado 】Ice 提供了一个简单的线程抽象层,用以编写可移植的多线程程序。通过同步原语可以实现不同粒度的并发控制。1、互斥体 IceUtil::Mutex类和IceUtil::StaticMutex提供了简单的非递归互斥机制。两者完全类似,只是StaticMutex可以静态声明,如下所示:static IceUtil::StaticMutex myStatic转载 2014-04-25 23:26:40 · 393 阅读 · 0 评论 -
ICE笔记(08):C++线程与并发
转:http://blog.csdn.net/colorado/article/details/4926389【colorado】Ice 提供了一个简单的线程抽象层,用以编写可移植的多线程程序。通过同步原语可以实现不同粒度的并发控制。1、互斥体IceUtil::Mutex类和IceUtil::StaticMutex提供了简单的非递归互斥机制。两者完全类似,只是Stati转载 2014-07-14 00:51:51 · 378 阅读 · 0 评论 -
ICE的连接机制
1、当使用ICE的proxy进行方法调用时,ICE运行环境会建立一个到服务器的连接。当proxy提供了多个endpoint时 默认的ICE运行环境选择endpoint的行为为random,可以通过ice_endpointSelection设置选择endpoint的方式为order 也可以通过设置属性:Ice.Default.EndpointSelection、name.Endpoi转载 2014-07-11 23:21:08 · 1194 阅读 · 0 评论 -
Ice手册,第39章IceGrid 第5节使用部署
表时间:2008-05-01浏览量:11646评论数:0挑错数:0Internet Communications Engine (Ice) 是现代面向对象的中间件,它支持C++, C#, Java, Python, Ruby, PHP, 和 Visual Basic开发语言。 世界各地已经有许多公司在他们的关键项目上使用Ice。Ice简单易学,并且提供了强大的网络基础设施和为技术应用提供了许多转载 2014-07-14 00:47:42 · 564 阅读 · 0 评论 -
ICE网格计算
IceGrid用于支持分布式网络服务应用,一个IceGrid域由一个注册表(Registry)和任何数目的节点(Node)构成。注册表(Registry)和节点(Node)一起合作管理一些信息以及包含一些应用(Application)的服务进程。每项应用(Application)被指定在特定节点上的服务。这个注册表(Registry)持久记录了这些信息,而节点(Node)负责启动和监测其指定的服务转载 2014-07-14 00:43:47 · 629 阅读 · 0 评论 -
游戏服务器端开发要点
转至:http://jiangwen2011.blog.163.com/blog/static/194801340201181104532377/摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础转载 2014-10-19 16:02:23 · 485 阅读 · 0 评论 -
MMORPG服务器架构
一.摘要1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎5.参考书籍,博客二.关键词网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡 分布式 网关服务器转载 2014-10-19 17:11:14 · 526 阅读 · 0 评论 -
游戏服务器之基于文件数据库和mysql数据库的db服务器设计
设计上:(1)文件数据库是用于处理游戏逻辑业务请求。(2)mysql数据库是用于处理运营后台查询请求。(3)备份业务是用于定时备份文件数据库文件。总体设计图如 http://blog.csdn.net/chenjiayi_yun/article/details/11913207文件数据库业务设计 可查看 http://blog.csdn.net/chenjiay转载 2014-10-19 14:58:48 · 773 阅读 · 0 评论 -
LVS 工作模式以及工作原理
LVS 简介 LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上执行,而client端认为是返回来一个同一个IP【通常把这个IP转载 2016-04-02 10:59:36 · 438 阅读 · 0 评论