UNIX艺术

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

很多系统都需要服务端的开发,在很多时候首先会考虑基于Linux或者Unix的后台服务器系统。作为将要运行中服务器软件之上的应用系统,希望服务器的扩展性越多越好,业务逻辑扩充越容易越好。是否可以考虑设计一个可扩展的服务器开发平台呢?最好是支持基于Web的可视化组件式开发,并且能够自动将软件部署到多个分布式的物理服务器中。

在扩展性方面,对于并行处理量小的应用,可以把通信和业务处理集中到一台服务器中,称之为Compat的模式,对于并发量有一定需求的,可以把通信服务与业务处理分开,形成分布式的处理机制。也可能目前只需要做一台协议转换器,也可能只处理业务逻辑不管通信。这样的架构既能满足业务发展的弹性需要,也能够满足不同应用的处理需要。

下面是整体设计思路:

整体结构示意图如下:

包括通信处理(Communication Processor,CP)、协议转换器(Protocol Translator,PT)和业务处理(Business Processor,BP)三部分功能。当所有功能安装到一台服务器上,成为COMPAT模式,成为主机模式(Host Type)。当前支持CP和PT在一台服务器,BP在另一台服务器的模式。每一台物理独立的服务器均有服务管理器程序(Service Management),负责服务的启动、停止、配置等工作。

Host Type目前支持如下:

Host Type

说明

COMPAT

SM+CIU+PTU+ BHU

FRONTEND

SM+CIU+PTU

NET

SM+CIU

TRANSLATOR

SM+PTU

BUSINESS

SM+BHU

TBUSINESS

SM+PTU+BHU

 

CIU和PTU之间,PTU和BHU之间通过适配器选择通信,适配器类型支持4种:函数调用(Function Call)、进程间通信队列(IPC Queue)、TCP(TCP连接)。

数据接口类型

说明

函数调用

FUNCTION,调用者执行本部件内的处理函数,函数返回值给调用者。

进程间通信队列

IPCQ,本部件监视输入队列,当有数据时,执行处理函数,并将结果发送到下一个部件,然后等待下一个部件返回,将结果处理后,写入输出队列。与下一个部件的通信方式,根据本部件的适配器配置选择。

TCP

TCP,本部件监听TCP套接字,当有数据时,执行处理函数,并将结果发送到下一个部件,然后等待下一个部件返回,将结果处理后,写入输出队列。与下一个部件的通信方式,根据本部件的适配器配置选择。

 

对于一个服务器系统来讲,主要分为5段处理逻辑:

接收请求数据:通信处理器的接收功能,数据来源可能是通过网络、消息队列得到,目前只支持这3种可能的输入数据。这一阶段要求接收数据快,不会阻塞后续的请求,因此,收到数据后,通常会采用启动新的线程或者子进程的方式处理请求。这一阶段的输入是PDU(Protocol Data Unit),输出是交给子进程或者线程处理PDU的解码工作,可能的接口是函数调用、网络、消息队列。

解码器:数据来源可能是通过函数调用、网络、消息队列得到,目前只支持这4种可能的输入数据。收到数据后直接进行解码处理,将PDU转为SDU(Service Data Unit),然后将SDU 交给后续的业务逻辑处理,可能的接口是函数调用、网络、消息队列。

业务逻辑:数据来源可能是通过函数调用、网络、消息队列得到,目前只支持这4种可能的输入数据。对于收到的SDU数据进行业务逻辑处理,返回结果以SDU的形式返回,根据输入的数据源类型,进行对应的返回方式。

编码器:数据来源可能是通过函数调用、网络、消息队列得到,目前只支持这4种可能的输入数据。收到数据后直接进行编码处理,将SDU转为PDU,然后将PDU 交给通信处理器,根据输入的数据源类型,进行对应的返回方式。

发送应答数据:通信处理器的发送功能,数据来源可能是通过函数调用、网络、消息队列得到,目前只支持这4种可能的输入数据。将收到的PDU根据输入的数据源类型,进行对应的返回处理。

 

综上所述,对于一个服务器系统,主要的部件包括通信处理器(ComProcessor,简称CP)、编解码处理器(ProtocolTranslator,简称PT)和业务逻辑处理器(BusinessProcessor,简称BP),共性包括:

1)        输入设备:函数调用、网络(TCP)、消息队列

2)        输入设备参数:针对4中不同的输入设备,定义其必须的工作参数

3)        输出设备:函数调用、网络(TCP)、消息队列

4)        输出设备参数:针对4中不同的输出设备,定义其必须的工作参数

5)        控制:确定输入方式和输出方式的接口指示器,是否多线程支持分发。

 

这3个主要部件不同的个性是,每个部件的处理器工作内容不一样:

CIU:根据输入方式,监听数据,启动子进程或者线程进行处理,在子进程或者线程中等待读取处理结果,然后将结果根据输出方式,发送出去。本处理器逻辑与具体业务无关。共2个输入,2个输出。

PTU:根据输入方式,监听数据,根据一定的规则(hardcode或者根据协议配置信息,根据配置项TRANSLATOR_TYPE选择处理),将PDU转为SDU,然后将SDU发送给BP处理,等待读取到应答后,将SDU转为PDU,将结果返回给CP处理。本处理器逻辑与具体业务有关。共2个输入,2个输出。

BHU:根据输入方式,监听数据,读取到SDU后,进行业务逻辑处理,将处理结果保存为SDU方式,返回给PT处理。本处理器逻辑与具体业务有关。共1个输入,一个输出。

体系结构图如下:

 

上述三个部件CIU、PTU和BHP在运行时,其接口指示器根据安装不同,值也不同,参考下表:

说明:

 

 

 

CIU

PTU

BHU

Host Type

Direction

Lower

Upper

Lower

Upper

Lower

Upper

COMPAT

SM+CIU+PTU+ BHU

In

TCP

ICPQ

ICPQ

ICPQ/Func

ICPQ/Func

NA

Out

TCP

ICPQ

ICPQ

ICPQ/Func

ICPQ/Func

NA

FRONTEND

SM+CIU+PTU

In

TCP

ICPQ

ICPQ

TCP

NA

NA

Out

TCP

ICPQ

ICPQ

TCP

NA

NA

NET

SM+CIU

In

TCP

TCP

NA

NA

NA

NA

Out

TCP

TCP

NA

NA

NA

NA

TRANSLATOR

SM+PTU

In

NA

NA

TCP

TCP

NA

NA

Out

NA

NA

TCP

TCP

NA

NA

BUSINESS

SM+BHU

In

NA

NA

NA

NA

TCP

NA

Out

NA

NA

NA

NA

TCP

NA

TBUSINESS

SM+PTU+BHU

In

NA

NA

TCP

ICPQ/Func

ICPQ/Func

NA

Out

NA

NA

TCP

ICPQ/Func

ICPQ/Func

NA

服务器的配置管理功能的结构如下:

posted on 2013-02-14 09:23  jinhuawang76  阅读(528)  评论(0编辑  收藏  举报