实施案例 公司首页>实施案例>河北移动手机邮件负载均衡方案
河北移动手机邮件负载均衡方案
    设计目标

    邮件系统在当今社会,作为一种基础通讯平台,已经不单纯是简单收发邮件,而是成为互联网各种应用的核心,承载越来越重要的应用。中国人口众多,上网人数逐年剧增,使用邮件也日益频繁。邮件系统从建成的那一天起,就面临升级的压力。如何设计一个结构良好的大容量邮件系统,对于系统稳定性、可靠性,对于日后的升级维护有着至关重要的作用。

    春笛公司作为一个在邮件领域默默耕耘的公司,以小用户量的企业邮件系统立身,最终希望打造一个坚固的、高度可扩展的、容易管理维护的大容量分布式邮件系统。在设计时,我们主要考虑如下方面:

    1.底层坚固、高度稳定

    为保证系统的稳定可靠,需要在硬件、操作系统、核心MTA、应用层在内的每一个环节都稳定可靠才行。硬件通常选取知名品牌服务器,稳定性、可靠性都有保障,差别不大。

    操作系统选择Linux或者FreeBSD,针对邮件系统的特点,内核需要特殊调整:如打开文件数(open files)、stack size、max user processes等。除了操作系统核心外,系统只加载必须的软件,屏蔽一切不不要的服务端口。

    在操作系统之上,处理smtp、pop3请求的MTA的稳定性、效率也至关重要。当今世界上使用比较多的是qmail和postfix,都有分布世界各地的大批用户。相比较而言,qmail有着更好的模块化设计、更好的安全性,更高的投递效率、更可靠的队列设计。Postfix优势在于和sendmail有着很好的兼容性,部署容易,集成程度比较高,也是一个非常不错的MTA软件。

    应用层我们选取Apache+tomcat。Apache久负盛名、久经考验,tomcat背后有SUN支持,最重要的是tomcat5支持应用层负载均衡(Load Balance)。另外,java作为一种面向对象的编程语言,最能体现软件工程思想,有一系列的UML设计工具、集成开发环境、应用服务器可以选择。很多学校也开设JAVA课程,以后JAVA会像c语言那样普及,变成程序员必备的技能之一。邮件系统应用层会根据用户的反馈增加信的增值服务品种,如果基于java开发,很容找到相关人才。这样缩短开发周期、节省开发成本、降低维护难度。Google很多服务是基于java开发的。当然,java也有执行效率低的缺点,但随着硬件速度的提升,单只程序运行速度的劣势很容易被良好的设计模式优势取代。

    2.容易管理、维护

    系统结构复杂之后,必然会带来管理维护上的麻烦。我们的设计思想是希望通过统一的一个管理控制界面,让系统管理员对每台服务器的运行状况、负载情况、流量了如指掌;同时通过一个管控界面,可以远程控制服务器启动、关闭,对服务进程远程启动、停止,对流量调配。当出现异常时,系统自动通过短信通知到管理人员的手机上。

    3.增加设备简单、有效

    系统扩展性是衡量系统设计好坏的一个重要指标。好的系统能够通过简单添置硬件、软件做少许配置即可满足需要。我们设计的是让用户数量的增长和邮件服务器数量呈线性关系。由于PC服务器的硬件成本比较低,以一台高性能PC服务器3万元人民币计算,如果作为SMTP服务器可以支撑15万用户,作为POP服务器可以支撑30万用户,作为存储服务器,可以支撑3万用户。平均每用户为0.2元、0.1元、1元。

    在保证系统稳定可靠的同时,能够最大地降低成本。降低成本有2个途径,一是最大限度利用硬件,二是避免使用高端的存储备份设备、负载均衡设备、四层交换机等。

    4.具有多级权限管理,支持个人用户、企业用户、运营商等

    大容量邮件系统,不仅仅是个人用户,还有企业用户。不同用户群体的需求是不同的。针对不同用户群,提供不同的服务套餐,无疑是市场营销重要手段。而这,需要有技术上做保障才行。金笛邮件应用层采用java技术,无疑是体现用户需求的最佳技术手段。

    作为运营商,要有丰富权限管理体系,使邮件系统的每一个管理环节严紧、严密。

    5.高度模块化,模块之间最小耦合

    模块化程度的高低,可以体现的系统的成熟度。充分利用开源宝库中的免费资源,将优秀的开源项目经过改良、优化,会搭建出优秀的系统。不赞成完全从底层开发。

    模块之间通过标准接口通讯,耦合程度尽可能小,这样,即使出问题也不会影响全局。最重要的是,系统扩展性大大增强。如可以随时将病毒扫描过滤模块升级,或者将垃圾邮件过滤模块升级,其它模块无需做任何改动。

    6.提供与其它系统直接的接口:如计费平台、短信彩信平台、防毒网关等

    作为邮件运营,计费模块很重要。良好的设计可以为灵活的计费提供原始数据。根据这些计费数据,可以制定灵活的促销手段。

    随着彩信的普及,邮件系统与彩信会逐渐融合。其它的扩展平台,如防病毒网关、反垃圾网关、反黄网关都可以灵活对接。

    7.应用层二次开发、部署简单方便

    邮件系统的生命力来自客户的需求,只有不断满足客户需求,推陈出新,与时俱进,才会不断有新的用户加入。根据用户需求进行二次开发,这是必不可少的。二次开发必须简单,方便。金笛邮件通过统一的二次开发接口Jindi-Mailet实现服务端应用的扩展。

    邮件系统架构上的演化和优劣比较

    大容量邮件系统按照存储方式不同,大致可以分为2类:

    1.统一存储

    邮件队列和邮件数据集中放在存储设备上。前端smtp服务器多台,POP服务器多台,随机选择一台smtp服务器或者POP服务器(这个过程一般采用DNS轮询方式完成)。选定某台服务器后,与该服务器建立连接,通过认证系统确认用户身份后,发送或者接收邮件数据。因为是统一存储,数据都是放在磁盘阵列上,通过NFS方式挂在每台服务器上。不论是通过哪台功能服务器,都可以完成邮件收发。

    用户对Webmail的请求和smtp/pop3类似,也是通过多台机器随机选取实现负载分布。

    2.分布式存储

    邮件数据分布在每一台服务器上,每台服务器都提供完整的邮件服务:smtp/pop3/imap/webmail/数据库。用户请求过来之后,首先查询目录服务器,验证用户身份,然后找到对应的服务器,建立连接,收取或者发送邮件。

    这种方式最大的优点是用户数量和邮件服务器数量可以保持线性增长。每台服务器支持10万邮箱,当一台服务器用户已达这个数字时,启用另外一台。可以通过管理程序在不同服务器直接迁移用户。动态管理服务器。

    从早期UNIX几十用户的简单邮件系统,到现在几百万、上千万邮件系统,中间经历很多变化。不妨把这些梳理一下,比较邮件系统各种技术的优劣。

下载附件