大型JavaMail网站Mailinator架构(Linux+Tomcat+Java)

11 三月, 2010 (19:29) | J2ee企业顾问, 架构设计 繁体 English    DeliciOus    分享到新浪微博
作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.javabloger.com/article/javamail-web-site-mailinator.html
豆瓣读书 向你推荐有关 J2ee企业顾问架构设计、 类别的图书。

采用Javamail和Java技术构建的Mailinator很有趣是一个免费、不需要进行注册就可以收邮件的平台,称之为“一次性电子邮件服务”。你在一个网站注册时并不想提交你的邮件地址,因为你担心将来会受到垃圾邮件的骚扰,但你此时又必须在这个网站上注册输入你的邮件地址。

此时你可以使用Mailinator来为你服务。但 Mailinator 他不是垃圾邮件制造器。比如:发送邮件到javabloger@Mailinator.com,该邮箱就会自动创建。

访问Mailinator网站 输入你的邮箱就能进入浏览邮件了,注意:Mailinator只是个临时邮箱,作用就是防止垃圾邮件对你的骚扰,一次只能保持10封邮件,不支持附件,单个邮件限120K以内,任何人都可以浏览,不要用来存在重要的邮件。

登陆网址:http://mailinator.com  经过测试对中文支持的非常友好,如图所示:
http://www.javabloger.com/images/article_pic/Mailinator_s.png

查看大图请点击这里

下面我们来看看这个替身英雄

系统平台
    操作系统:Linux
    应用服务:Tomcat
    语言环境:Java

统计资料
    2005年 28068.0万封
    2006年 450740000 封
    2007年将处理,估计为1.29亿封。峰值速度650万封电子邮件/日, 4513/分钟 ,75/秒。
    开始是Mailinator 运行在AMD 2GHz的Athlon处理器,1GB内存 ,普通80G IDE 硬盘 。
    即使是在不断的攻击和垃圾邮件高峰负荷,Mailinator无人值守运行几个月,也很少有邮件丢失。

Mailinator 的架构
     收到邮件保存在磁盘上。
     然后采用Java 去读取磁盘上邮箱中的邮件。
     然后,系统把所有电子邮件加载到内存中。
     但是,一旦内存中达到 20,000电子邮件对机器运行就产生了很大的瓶颈。。。。。。。。。。。

Mailinator 的架构
    采用了 DOM 和 AOP技术,使用XML对数据进行归档整理,运行AOP便于对将来的扁平扩展。
    接收电子邮件后,解析解析邮件,进行DOM后并将其数据存储到内存中。尽量减轻磁盘负载。
    采用了多种过滤手段,每封邮件通过过滤后,并存储在RAM中。
        比如:过多的邮件从一个IP发出进行屏蔽
                超过120k的电子邮件直接过滤,这样可节省内存。
                每个收件箱仅限于10电子邮件。

    电子邮件被写入磁盘时,系统性能已经下降,因此在轮询启动时加载信息,将2个工作交错开来,减少瓶颈。
    系统开启300个线程同时工作,据说一直没有出现问题。
    将近期内收到的邮件压缩在RAM中,需要阅读的时候才进行解压,节省内存空间。

从这一案例我们能看出,Mailinator 系统架构的优化完全是根据自己的业务规则和需求场景来进行。
并不是一味盲目的更换软件,不断添加服务器硬件,Mailinator而是采取了多种策略,让数据更灵活,让数据更靠近CPU。
我(H.E.)相信只有了解具体的需求才能达到最大程度的优化
 
–end–

豆瓣读书  向你推荐有关 J2ee企业顾问 架构设计、 类别的图书。



Creative Commons License
本文由J2ee企业顾问-黄毅创作,并已采用创作共用署名2.5中国大陆版许可证授权。

评论

评论也是有版权的!




2365