ACE 服务和配置设计维度

服务器提供给客户端的一组功能称为服务。在网上能够获取到常见的服务包括:

  • Web内容解索服务。
  • Castanet、Citrix这样的软件发布服务。
  • 电子邮件已经网络新闻的传输服务
  • 远程机器上的文件访问服务
  • 网络时间的同步,也就是NTP服务
  • 支付处理 服务
  • RealPlayer或者QuickTime之类的音频/视频流服务

在诸如编译时、静态连接时、安装时或者是运行时这样的各种不同的时间节点上,都可以将组成网络应用的服务配置在一起而创建网络应用。

对于网络应用所使用的通信协议和机制以及并发性架构的领域分析。

对其他处理关键的网络应用属性的设计空间进行分析。这些属性包括服务的时续时间和服务结构,如何识别网络化服务,以及它们绑定在一起形成完整应用的时间。这些设计空间对任何网络应用都很重要,对ACE的Service Configurator框架尤其重要。然而,如果你已经对这些设计空间很熟知,你可以跳到第三章开始学习ACE的各种框架。

2.1 服务和服务器设计维度

在设计网络化应用时,区分服务(Service)和服务器(Server)之间的不同十分重要:

  • Service: 是提供给客户的某种能力。
  • Server: 是用来提供服务的机制。

关于服务和服务器的歌中歌设计决策很容易发生混淆,但却应该分别加以考虑。
本节覆盖了一下服务和服务器设计维度:

  • 短持续时间服务 VS 长持续时间服务
  • 内部服务 VS 外部服务
  • 有状态服务 VS 无状态服务
  • 分层式/模块化服务 VS 整体式服务
  • 单服务服务器 VS 多服务服务器
  • 一次性服务器 VS 持续式服务器

2.1.1 短持续时间服务 VS 长持续时间服务

网络服务器所提供的服务可被分类为持续时间短和持续时间长的。这些时间长度反应了服务持有系统资源的时间长短。在这一设计维度中,主要的权衡涉及:“当系统资源可在别处更好地被利用时仍然将其占据” VS “在需要某服务时对其进行重启的开销”。在网络化应用中,这一维度与协议选择紧密相关,因为不同协议的设置需求可能会显著地不同。

  • 短持续时间服务
    在执行时间短,且常常是固定的;通常一次处理一个请求。短持续时间服务的例子包括:当前时间计算、解析IP地址和Ethernet号,以及从网络文件系统的缓存中获取磁盘块;为了使花费在连接设置上的时间降至最低,短持续时间服务常常使用无连接的协议(UDP/IP)来实现。

  • 长持续时间的服务
    在运行时间更长,且常常是变长的;在其生命期中可以处理许多请求。长持续时间服务的例子包括通过FTP进行的大型软件传输,从使用HTTP的Web服务器上下载MP3文件,从使用RTSP的服务器上下载音频和视频流, 通过telnet远程访问主机资源,以及在网络上进行远程文件系统备份。运行时间更长的服务在协议选择方面的灵活性更大。例如:为了提高效率和可靠性,这些服务常常通过面向连接的协议(TCP/IP) 或者面向会话(session-oriented)的协议(RTSP或者SCTP)来实现。

日志服务===>从单个的日志记录的角度来看,我们的服务器日志daemon就像是短持续时间服务。每个日志记录的最大长度都被限制为4K字节,尽管在实践中大多数日志记录都要小的多。花费在处理一条日志记录上的时间相对很短。但是,因为客户可以传送许多日志记录,譬如:可以持续的发送日志记录。所以我们可以这样来对其性能进行优化:对客户日志daemon进行设计,让它们与它们的对端服务器日志deamon建立连接;随后为后续的日志请求复用这些连接。为每个日志请求设置并断开Socket连接既浪费资源,又耗费时间,特别是在频繁发送小请求的情况下。因此,我们把我们的客户服务器日志deamon建模为长持续时间服务。

2.1.2 内部服务 VS 外部服务

服务可被分类为内部的或外部的。在这一维度中的主要权衡要素是服务初始化时间、服务间的隔离,以及简单性。

  • 内部服务

  • 外部服务

2.1.3 有状态服务 VS 无状态服务

服务可被分类为有状态的和无

你可能感兴趣的:(ACE,c++,架构)