科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道IronPort AsyncOS 操作系统

IronPort AsyncOS 操作系统

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

IronPort系统公司的AsyncOS是一个从头全新打造的软件架构,专门用以基于处理并发通讯的瓶颈以及基于文件的邮件队列的限制。

作者:佚名 来源:51CTO.com  2008年9月26日

关键字: Web安全 操作系统 IronPort AsyncOS

  • 评论
  • 分享微博
  • 分享邮件

  支撑邮件网关设备的幕后技术

  高度可扩展的电子邮件传输基础设施架构 随着电子邮件在日常商业活动以及消费者之间的广泛使用,企业机构已经看到,电子邮件是一种非常有效的与客户和合作伙伴进行信息交流的通讯手段。销售和市场部门每天接收和发送的邮件数量在不断增长,而客户服务和运营职能部门同样也非常依赖于电子邮件来确认交易以及与客户进行沟通。这种对外邮件通讯需求的急速增长已经让现有的邮件传输基础设施不堪重负,时刻处于崩溃的边缘。

  IT管理员们在试图解决这个问题时常常会遇到性能和管理上的问题。目前的一些解决方案要求配备非常复杂的软件和硬件,系统配置起来极为繁琐且容易出错,同时无法避免地需要部署多台服务器,因此管理员在将来必然需要面对一系列后续的管理问题。在处理因特网邮件网关所特有的扩展性问题时,现有技术的不足之处便暴露出来,其中最主要的有两点:基于并发通讯的瓶颈以及基于文件的邮件队列的限制。

  IronPort AsyncOS操作系统

  传统的操作系统是被设计用于处理各式各样的任务的,因此必须要求做到通用性。因特网邮件网关则与其他的应用不同,它有自己特殊的需求,而通用操作系统并不能很好地满足这些需求。IronPort系统公司通过开发一个软硬件集成的设备并统一控制操作系统、应用和硬件,为用户提供了一个能够完成通用操作系统所无法完成的任务的解决方案。

  IronPort系统公司的AsyncOS是一个从头全新打造的软件架构,专门用以基于处理并发通讯的瓶颈以及基于文件的邮件队列的限制。本份白皮书将讨论AsyncOS的两个重要组件,即一个用于处理系统资源分配的高度并发的线程模型,以及AsyncFS这个特别针对邮件队列进行优化的异步文件系统。

  基于并发连接的瓶颈

  通常,服务端软件的输入输出(I/O)瓶颈在于磁盘子系统、数据库或是到本地服务器的连接。但随着因特网上大数据量通讯需求的出现,原有的这些瓶颈与到远程服务器或客户端的大量连接所造成的瓶颈相比就要退居其次了。

  做为一台部署给企业的市场部门使用的邮件网关,为了将大量的邮件成功地发送客户,就无法避免地要与成百上千台远程邮件网关进行通讯。而这些远程网关中有些可能是连接在高速的因特网骨干上(如aol.com),有些可能是运行在T1或T3链路上(如cisco.com),但也可能是运行在DSL链路甚至是modom链路上(如家庭或小型企业)。更糟的情况是,当有大量邮件需要发送并且已经打开了多个到远程网关的连接后,却发现这些邮件都是无法成功传递的邮件,结果就是所有这些邮件都被退回本地,造成大量的资源浪费。

  如果企业邮件网关是逐一连接远程邮件网关的话,那么整体的邮件传输吞吐能力将会受制于网络连接和处理速度最慢的那台远程网关。在向网络容量较小的远程网关发送邮件时,即使发送端可能有高达100M的因特网连接,但传输时的速度也可能会被限制在28.8kbps甚至更低,这时就遇到了所谓的I/O瓶颈。唯一能够解决这个I/O瓶颈的方法就是通过启动多个并发连接,如果同一时间能够启动数千条并发连接,那么就算对方的单条连接速率只有28.8kbps,整体上看邮件的发送速度也不会被拖慢。不幸的是,每个到远程网关的连接都需要操作系统创建一个独立的线程或进程,然而传统的软件平台在设计时并没有以拥有一个高度并发线程的能力为设计目标,在因特网通讯出现之前,除了那些特别用于操作程控电话交换系统的计算机之外,要求具有高度并发线程能力的应用是十分罕见的(如果有的话)。

  AsyncOS操作系统的高度并发的线程模型可以智能地进行系统资源的分配,成功克服了因特网通讯的瓶颈。由于邮件网关的I/O瓶颈的根源在于线程或进程的并发能力,因此IronPort AsyncOS技术引入了一个全新的线程模型,以及一个全新的任务调度模型。无堆栈线程(Stackless Thread)技术能够同时支持数以万计的因特网连接,而I/O驱动式的调度技术则优化了每个连接的服务调度。

  在传统的操作系统平台上,每个线程都会被分配一个固定的专用内存栈。由于要想很好地处理堆栈溢出错误是非常困难的,另外堆栈溢出很容易构成安全漏洞,所以一般来说操作系统总是会尽量分配较多的系统资源给堆栈,这样在创建大量的线程时将内存很快就会被消耗完。举个例子,如果有1000个线程,每个线程占用1M的内存栈空间,那么总共将用去1G的内存。AsyncOS的无堆栈线程技术的独特之处在于它只会在必要的时候才去分配内存空间,而不需要专用的栈空间。这种高效率的内存使用策略不但可以使系统所支持的并发线程数量倍增,而且可以留出更多的内存空间用于文件系统数据的缓存,同时还消除了可能出现安全漏洞的风险以及堆栈溢出所造成的系统崩溃。

  AsyncOS I/O驱动式的调度机制也采用了类似的技术,只有在必要的时候才会去分配系统资源。在传统的系统平台上,一个多任务优先级抢占式操作系统会把系统的控制权按时间片(称做当量)分配给每个任务,比如百分之一秒。调度器会轮流遍历每个任务,确保每个任务都能分配到一个有权利使用CPU的预先确定好的时间片,而不会出现任务被“饿死”的情况。但是这种传统操作系统的任务调度机制在处理因特网邮件的传输问题时效率是非常低下的,而通常这种低效率的根源并不在于CPU的处理能力。每次中央处理器在切换到另一个任务时都要进行非常消耗资源的上下文的交换操作(context switch)。对于象邮件传输这种高度并发的应用,频繁的上下文交换会对系统的性能造成极大的影响。

  I/O驱动式的调度机制会根据TCP连接的读写可用性来进行任务的调度,从而大大降低了上下文交换对性能所造成的影响。当一个TCP连接可以被读写时,I/O驱动式的调度机制会立即为相关的任务分配系统资源,直至该TCP连接无法继续进行I/O操作为止。在这种方式下,AsyncOS只会把系统资源分配给那些能够立即使用这些资源的任务,而不再是盲目地遍历所有的任务。这种先进的技术使得AsyncOS的吞吐能力要比基于传统操作系统的邮件应用大上10倍有余。此外,由于线程的切换总是发生在I/O读写操作完成之后,因此线程绝对不会在I/O操作的过程中被挂起,每个线程的内存管理也就简化了,整个系统的效率得到了进一步的提高。

  基于文件的邮件队列的瓶颈

  传统的电子邮件应用还会遇到第二个架构上的瓶颈,即每封邮件都需要创建一个独立的唯一的文档以供读写及删除。当每小时需要接收和处理成千上万封邮件的时候,与管理这些文件相关的系统负担会迅速增长并直接影响到性能。有一些邮件应用试图通过使用很深的目录树来解决这个问题,但效果却非常有限。当邮件队列变得很大,需要管理的文件数量迅速增加时,性能便会急剧下降,甚至造成整个系统的停顿。

  而且,传统的文件系统都经过了优化以支持低时延的随机数据访问,并且在系统出现故障时能迅速恢复整体的数据访问。为了实现这一点,这些文件系统需要把文件的inodes(指向文件每个数据块的指针图)存储到磁盘上。因此,对任何一个文件的修改都要经过多次的硬盘访问以更新文件数据,同时还需要多次的磁盘访问以更新文件的inodes。

  解决方案:ASYNCFS,异步文件系统

  AsyncFS是一个革命性的文件系统架构,它拥有专门针对异步邮件传送而优化的独特的数据结构。首先,每封邮件并不存储在单独的文件中,而是分批存储,这极大地减少了基本磁盘读写操作的次数。其次,每个负责管理邮件传输顺序的队列数据结构做为一个映射邮件在磁盘上的位置的inode可以很高效地进行倍增。而且,这些“inode队列”是存储在内存中而不是硬盘上,这进一步减少了磁盘读写操作的次数。异步文件系统当仁不让地成为适用于因特网邮件传输和处理的最佳文件系统:拥有极高的读写性能,而且性能不受邮件队列大小的影响。

  异步文件系统在实现高性能的同时并没有以牺牲安全性为代价。当系统出现故障时,内存中的inode队列会消失,但当系统恢复正常时,AsyncFS会从硬盘读取邮件数据并同时在内存中重建inode队列,然后恢复邮件的正常传输。传统文件系统所具有的快速随机数据访问的能力并不适用于因特网邮件传输,而且在AsyncFS中也消除了这部分相关的系统负担。AsyncFS提供的是具有突破性的性能,同时在系统出现故障时还能够保证数据的完整性。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章