消息映射的服务器的设计与实现

简介:
服务器程序的设计有很多种方式,有多进程,多线程以及多进程/多线程混合方式,这些无论哪一种都是侦听->服 务的一种方式,主要强调以何种方式为客户提供服务,但是如果客户的需求种类非常多,不同需求之间的差异非常大的时候,另一个问题就浮上了水面,就是如何组 织这些所谓的不同的服务程序,采用回调函数的方式应该是第一个被想到的,回调函数很灵活,服务器的管理逻辑不用关注具体服务的处理逻辑,一切交给回调函数 来完成,唯一需要做的就是注册回调函数,接下来一个完美的设计就需要考虑如何设计服务器的管理流程。 
我们把客户端的需求称作命令,将服务器端对应该命令的处理函数称作命令处理函数,用户不同的命令就应该对应不同的命令处理函数,那么如何设计数据结构呢? 很显然的,我们应该让命令处理函数也就是回调函数和这个命令绑定在一起,除了这些需要绑定之外,由于命令是从远端传过来的,仿照网络协议的设计方式,同样 需要一个协议来识别合法命令,最起码格式要正确,因此还需要将命令码的格式,长度等信息和命令以及回调函数绑定在一起,到此为止,随便一个合格开发人员都 能想到的就是数据封装,就是将上面这些封装成一个结构或者一个类,还是用结构吧,因为我们只需要封装数据而不需要封装操作,于是就有了下面的结构体: 
struct DATAPROCESSDES 

{


 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273647

相关文章
|
存储 Unix 数据挖掘
【北亚服务器数据恢复】LUN映射出错导致文件系统一致性出错的数据恢复案例
服务器数据恢复环境: san环境下的存储上一组由6块硬盘组建的RAID6,划分为若干LUN,MAP到跑不同业务的服务器上,服务器上层是SOLARIS操作系统+UFS文件系统。 服务器故障: 业务需求需要增加一台服务器跑新增的应用,工作人员在原服务器在线的状态下将其中一个lun映射到一台新服务器上。实际上这个刚映射过去的卷已经map到了solaris生产系统上的某个lun上了。新服务器对这个映射过来的卷进行初始化,原来的solaris系统上的磁盘报错,重启服务器后这个卷已经无法挂载了。 联系原厂工程师寻求帮助,原厂工程师检测后执行了fsck操作,完成fsck操作后文件系统挂载成功,查看数据时发
|
12月前
|
Unix 应用服务中间件 索引
服务器数据恢复—LUN映射出错导致文件系统共享冲突的数据恢复案例
SUN光纤存储系统中有一组由6个硬盘组建的RAID6,划分为若干LUN,MAP到跑不同业务的服务器上,这些服务器上运行的是SOLARIS操作系统。 服务器不存在物理故障。由于公司业务变化,需要增加一台服务器跑新的应用。服务器管理员在原服务器在线的状态下,将其中一个lun映射到一台新服务器上。实际上,这个刚映射过去的卷已经map到了solaris生产系统上的某个lun上了。映射到新服务器后,服务器对这个卷进行初始化的操作,原solaris系统上的磁盘报错,重启服务器后这个卷已经无法挂载。 服务器管理员寻求sun原厂工程师的帮助。sun工程师检测后执行了fsck操作。执行完成后文件系统挂载成功。查
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储映射的卷挂载不上的数据恢复案例
服务器存储数据恢复环境: 某品牌光纤存储上共有16块FC硬盘。存储上的卷映射到Linux操作系统上。Linux操作系统上运行Oracle数据库。 服务器存储故障&检测: 存储上2块硬盘故障灯亮起,存储映射到linux操作系统上的卷挂载不上,业务中断。
|
存储 Unix 数据挖掘
服务器数据恢复—SAN LUN映射出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN光纤网络环境,存储由一组6块硬盘组建的RAID6阵列构成,划分为若干LUN,MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析: 因为业务需要,用户在该光纤存储环境中新增一台SUN SOLARIS操作系统服务器。将存储中的某个LUN映射到新增的服务器上,但是映射的这个卷之前已经MAP到SOLARIS生产系统上的某个LUN上了。因为未及时察觉这个问题,新增服务器已经对该LUN进行部分初始化操作。 在SOLARIS操作系统层面磁盘报错,重启后卷无法挂载。联系SUN工程师检测后,执行了fsck操作。操作完成后虽然文件系统可以挂上,但是发现大量
|
存储 Oracle 关系型数据库
服务器数据恢复—存储硬盘故障导致映射到服务器上的卷挂载不上的数据恢复案例
一台存储上有一组由16块FC硬盘组建了一组raid。存储前面板上的对应10号和13号硬盘的故障灯亮起,存储映射到redhat linux操作系统服务器上的卷挂载不上,业务中断。
|
域名解析 网络协议 应用服务中间件
阿里云DNS常见问题之域名在代理服务器上不能访问只能通过IP映射如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
存储 网络协议 Shell
KVstore :键值映射存储服务器
KVstore :键值映射存储服务器
558 0
|
弹性计算 网络协议 开发工具
通过ECS云服务器实现FRP内网穿透映射SD线上使用
家里windows本地部署stable diffusion,想在其他地方远程使用,但花生壳之类的工具收费。因此决定使用FRP工具实现内网穿透实现SD线上使用。 前提:有域名或者ECS服务器(本文使用阿里云ECS服务器) tips:FRP是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
1760 0
|
网络安全 开发工具
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
|
XML Java 数据库
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写