异步服务器框架设计

简介:

缘起

在网络编程中,经常出现如下场景:编写特定逻辑服务器,该逻辑服务器依赖于后端的N种服务器。比如需要获取N种服务数据,或者需要N个步骤。对于这样的应用,同步调用将导致逻辑服务器的性能极低,异步调用是首选。问题:如何抽象通用的异步服务器网络框架,降低编写特定逻辑服务器的工作量?

分析

要抽象这样的异步服务器网络框架,需要处理如下问题:

1)session管理(通讯管理和数据管理);

2)超时处理;

3)异常处理;

4)状态管理(流程抽象)。

为了简化分析,从依赖单个后端服务器的情景开始分析。对于只需一次网络调用的逻辑服务,只需要考虑:session管理、超时处理、异常处理,session数据管理+简单的定时器+超时回调函数 即可满足该需求。这种服务器状态简单: 正常流程:发包、回包、获取请求数据、处理流程、返回用户请求; 异常流程: 超时、获取请求数据、处理流程、返回用户请求。

对于需要N个网络调用的逻辑服务,其每个网络调用也可以简化成上述单次网络调用的流程。问题是如何组织这N个网络调用,如何管理由这N个调用组成的各种状态?

异步服务器框架设计思路

方法一:抽象状态,利用“状态 <=> 回调函数 映射表”实现各种状态和动作间的转换关系。这种方法并不好,原因在于全局状态过多,不利于抽象。

方法二:State模式。封装每一个网络调用成Context(维护每个调用自身的状态),每个Context拥有如下统一动作(接口): 发包函数、回包处理函数、超时处理函数。通过组合Context实现对状态的管理。若N个调用不存在时序关系,则将每个调用Context组成一个更大的Context,该Context代表一个更大的状态。当所有的子Context调用完成后,则该Context完成,无状态转移。若N个调用存在时序关系,则按照调用时序,将各个Context组成一个状态转移链,依次处理各个Context并转移到下一个Context,当最后一个Context完成后,则整个请求完成。

参考

设计模式学习(五):行为型模式

敏捷软件开发              2003


本文转自 zhenjing 博客园博客,原文链接:http://www.cnblogs.com/zhenjing/archive/2012/07/17/asynchronous_server_framework.html   ,如需转载请自行联系原作者


相关文章
|
7月前
|
NoSQL 关系型数据库 数据库
Swift 服务器框架对比
Swift 服务器框架对比
112 0
|
8月前
|
弹性计算 应用服务中间件 PHP
【ECS生长万物之开源】搭建ThinkPHP框架
ThinkPHP是一款免费、开源、快速、简单、面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷Web应用开发和简化企业应用开发而诞生的。本篇教程介绍如何使用云市场镜像快速搭建ThinkPHP框架。
|
2月前
|
前端开发 Java API
构建异步高并发服务器:Netty与Spring Boot的完美结合
构建异步高并发服务器:Netty与Spring Boot的完美结合
|
8月前
|
开发框架 前端开发 Linux
Go语言实战框架,GoFly全栈开发社区的Go快速开发框架简介与阿里服务器部署说明
GoFly中后台框架永久开源可商用。api文档管理并一键生成api接口代码,一键生成 CRUD前后端代码, GoFly快速开发框架是一款基于Go语言的 Gin和 Vue3的Arco Design的快速后台开发框架,基于JWT接口验证和Auth验证的权限管理系统,附件管理系统,天生支持saas架构。可打包部署在阿里云Linux系统上。
407 1
|
5月前
|
监控 前端开发 JavaScript
nodejs循序渐进-高性能游戏服务器框架pomelo之启动流程和组件
nodejs循序渐进-高性能游戏服务器框架pomelo之启动流程和组件
|
5月前
|
缓存 JavaScript 前端开发
nodejs循序渐进-高性能游戏服务器框架pomelo之创建一个游戏聊天服务器
nodejs循序渐进-高性能游戏服务器框架pomelo之创建一个游戏聊天服务器
|
7月前
|
缓存 前端开发 数据库
SAP OData 框架处理 Metadata 元数据请求的实现细节,前后端组件部署在同一台物理服务器试读版
SAP OData 框架处理 Metadata 元数据请求的实现细节,前后端组件部署在同一台物理服务器试读版
45 0
|
8月前
|
前端开发 JavaScript 中间件
Python 异步 ASGI 服务器及框架
Python 异步 ASGI 服务器及框架
|
8月前
|
负载均衡 监控 应用服务中间件
一文读懂Python web框架和web服务器之间的关系
一文读懂Python web框架和web服务器之间的关系
|
25天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客

热门文章

最新文章