搭建一个后台服务器:服务端(异步,大并发)

上篇的阻塞模式下服务器的并发只有几K,而真正的server 像nginx, apache, yumeiz 轻轻松松处 理几万个并发完全不在话下,因此大并发的场合下是不能用阻塞的。

1W的并发是一个分隔点,如果单进程模型下能达到 的话,说明至少在服务器这块你已经很厉害了。

服务器开发就像一门气功,能不能搞出大并发,容错性处理得怎么样,就是你有没有内功,内功有 多深。

异步模式是专门为大并发而生,linux下一般用 epoll 来管理事件,下面就开始我们的异步大并发 服务器实战吧。

跟阻塞开发一样,先来看看设计过程:

1.创建事件模型。

2.创建监听连接并监听。

3.将监听连接加入事件模型。

4.当有事件时,判断事件类型。

5.若事件为监听连接,则产生客户连接同时加入事件模型,对客户连接接收发送。

6.若事件为客户连接,处理相应IO请求。

为了让大家一概全貌,我用一个函数实现的( 一个函数写一个2W并发的服务器,你试过么),可读 性可能会差点,但是对付这道面试题是绰绰有余了。

实际开发过程如下:

先定义一个事件结构,用于对客户连接进行缓存

[cpp] view plaincopyprint?01.struct my_event_s  02.{  03.    int fd;  

04.    char recv[64];  05.    char send[64];  06.  07.    int rc_pos;  

08.    int sd_pos;  09.};  struct my_event_s{	int fd;	

char recv[64];	char send[64];

int rc_pos;
int sd_pos;
};

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索并发
, 服务器
, 阻塞
, 事件
, 模型
, 监听
, ios 面试题
, 服务器并发
, 并发服务器
, linux 后台开发
, ios面试题
, 一个
, 并发模型
并发连接
,以便于您获取更多的相关知识。

时间: 2025-01-20 19:43:57

搭建一个后台服务器:服务端(异步,大并发)的相关文章

搭建一个后台服务器:服务端(阻塞)

为什么 要在标题后面加个"阻塞"呢,因为系统为了增大并发,减小等待(阻塞),建立了另一种 事件模式,后文将介绍,这里只介绍阻塞的模型. 阻塞服务器要干的事大致可以分为以下几步 : 1.创建服务端监听连接 2.产生用户连接 3.接收用户请求 4.发送返回给 用户 敲码过程如下: 设置监听地址与端口: addr_server.sin_family = AF_INET; addr_server.sin_port = htons( port ); addr_server.sin_addr.s_

搭建一个后台服务器:客户端

上篇规定的协议请求部分: request: username/password, 约定username与password  各占32个字节(联同末位0) 可以将客户端的逻辑设计成: 1.将 username,password  封装进buffer 2.连接服务端 3.发送buffer 4.接收二 进制的系统当前时间 5.显示时间 代码如下: 服务端地址设置部分: addr_server.sin_family = AF_INET; addr_server.sin_port = htons( por

搭建一个后台服务器:服务端代码(异步,大并发)

01.#include <stdio.h>02.#include <time.h>03.#include <fcntl.h>04.#include <stdlib.h>05.#include <errno.h>06.#include <string.h>07.08.#ifndef WIN32 09.#include <unistd.h>10.#include <sys/epoll.h>11.#include &

搭建一个后台服务器:引子

最近去了几家公司面试,有一些大公司(比如企鹅)的考核内容真心弱智,考的都是些算法,尼玛 ,拿一个刚毕业的学生来做说不定也可以过的,看来本来就不是在招搞服务器的,举个例子,企鹅多个 部门都曾出的一道题:如何知道集合A,B中的相关性. 意思就是哪些元素在A,B之中都有,哪些 元素在A,B中不都出现. 其实解法很简单,学过算法的完全可以做到 .我们知道集合具有互异 性,就是集合中的元素只能出现一次,可以建一个map< key, value >,是标准库的还是自建一 个红黑树都无所谓, 将A,B集合中

Moving to Docker(二)搭建一个私有registry服务

本文讲的是Moving to Docker(二)搭建一个私有registry服务,[编者的话]本文是<Moving to Docker>系列的第二篇,这个系列的文章讲述了创业公司如何把基础服务迁移到Docker上,以及迁移过程中的经验教训.本文主要介绍了如何安装.测试和使用私有registry服务,其中也包含了从DigitalOcean选VPS和注册Amazon S3服务. 这是迁移到Docker系列的第二篇,整个系列都是介绍我们公司是如何把基础设施从PaaS迁移到Docker的. 第一篇:介

服务器-服务端与安卓客户端实时数据传输该怎么弄啊?!

问题描述 服务端与安卓客户端实时数据传输该怎么弄啊?! 要做一个示波器,服务端不断给客户端发送数据,客户端就将其实时展示出来.要基于TCP协议的. 要用什么技术啊?Socket?Tomcat?求大神!着急啊! 解决方案 自己做用Alarm+Service+Receiver 第三方可以用推送的api实时推数据

nginx-window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等!

问题描述 window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等! 需要搭建一个web app测试服务器,要求能处理高并发.最好可以配置一个域名服务测试一下. 解决方案 参考:http://www.cnblogs.com/hxxy2003/archive/2012/09/20/2695254.htmlhttp://blog.csdn.net/dhx20022889/article/details/30219471 解决方案二: 不过Windows 7是客户端操作系统,

3分钟用Docker优雅搭建一个Minecraft服务器

作者:祝剑锋,毕业于西安电子科技大学,通信工程学院硕士,2015年8月加入网易蜂巢项目组,参与蜂巢核心功能的设计与开发工作.喜欢思考,热衷于写代码,开发一些实用的小工具.   网易蜂巢团队:为企业提供专业容器云平台,深度整合IaaS.PaaS及容器技术,提供弹性计算.DevOps工具链.微服务基础设施等服务,帮助企业解决IT.架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台.     1 写在前面  作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时

3分钟用Docker搭建一个Minecraft服务器_docker

1 写在前面的话 作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时间之后便欲罢不能.Minecraft(以下简称MC)作为一款沙盒类游戏,具有极高的自由度,想玩什么完全取决于你.你可以进行传统的荒野求生,打怪升级,可以建造各种风格的建筑,可以成为红石达人,实现各种自动化等等.这是一款最典型的"别人的游戏",有大神在游戏里造了一个32位的计算机你能信?别人的世界,哦不,是我的世界就先介绍到这里. 言归正传,前段时间用网易蜂巢的容器搭了一个Minecr