关于邮件系统开发,很费解的一件事想问问大家的看法
今天工作遇到一件很郁闷的事,现在想把问题抽象出来征询一下大家的意见。尽量把问题说得明白一点吧:相信大家都用过邮件系统,比如网易的、QQ的、google mail等等。现在的邮件系统的功能丰富多了,但最基本的功能还是发送邮件。假如,设计一个邮件系统有一个这样的限制,就是发出去的邮件假如在一个短时间内(比如说5秒)还没有把整封邮件内容传输到对方的邮件系统(就算那封邮件还在常传输中),那么就把传输过程强制中断,并宣告发送失败,通过这样的方法老保证邮件系统的稳定性。一个更形象的例子,假如,你在www.126.com上用sender@126.com的帐号向receiver@qq.com发一封邮件,整封邮件正文加上附件有1.1MB,假设现在126.com最多只能以200KB/s的速度向qq.com传输数据,而且126.com会限制在传输数据5秒后中断发送。这样你辛辛苦苦写好一封邮件,当点了“发送”按钮后页面提示正在发送,过了5秒后,已经发送了1MB,还剩最后0.1MB正在传输,这时126.com立即弹出错误,说邮件发送超时。就算你重新发送,最后的那0.1MB数据还是会因为超过5秒而无法发出。那么你就可能会想:“我把邮件内容精简一下,压缩成一封900KB的邮件,这样总能在5秒内发到给对方吧。”但是,更糟糕的事情发生了,刚才说126.com最多只能以200KB/s的速度向qq.com,但由于网络因素和使用人数的影响,126.com传输数据的速度可能不稳定,好的时候能够达到200KB/s,不好的时候可能只有20KB/s(可以计算出这时最多只能发送100KB的邮件,就算超出1Byte也会宣告失败)。好运的时候用这个邮件系统时可能发几百KB的邮件都没问题,但倒霉的时候连几十KB的邮件也发不出,也就是你发邮件的之前根本不能知道自己的邮件能否在5秒内发出。想问一下大家,有没有必要做5秒超时这样的限制?如果真的有一个这样的邮件系统,会有人愿意用吗?最开始提到的“保证邮件系统的稳定性”能通过这样的做法来保证吗?