2014-7-8


  2014-7-8,今天我正想做一个发送邮件的系统,这个系统中不但要考虑用户体验还要考虑系统的性能。
 系统发送邮件的工程中,用户所在的界面不能出现延迟的情况,为了这个目标我必须将发送邮件的功能做成一个线程来处理。
  也就是说每次发送邮件的时候都会创建一个线程来发送邮件。当系统的并发数量变的非常高的时候每次如果都这样做的话系统在创建和销毁
  线程上的消耗必定会增加到不可控的范围内;而且发送也是需要有cup占用的,在并发数量很大的情况下势必会照成线程的阻塞影响邮件
 发送的效率。因此需要合理解决这个问题。我的想法是:
将邮件做成一个邮件队列,这个消息队列同时会记录邮件加入队列的时间,多线程根据加入队列的时间和当前时间进行比对进行舍弃超时的邮件
 ,当出现超时的邮件时,增加线程数量,线程启动之后是可以重复使用的,这样就避免了大量线程启动和销毁的cup占用。需要设置一个
  线程用于监控系统的负载,在系统负载过高的情况的时候发送邮件到系统管理员邮箱,同时这个线程会发送消息给主线程要求其停止线程的增加
 监控系统负载的线程在前一次发现过载之后发现后一次过载比前一次高的时候发送消息给主线程要求其减少线程的数量
 监控系统负载的线程在发现系统负载正常时发送消息以使得线程数量可以增加
 是否发送邮件给管理员是可以配置的。
 在系统过载后邮件仍然会出现丢失的情况,管理员可以根据需要配置另一台服务器进行邮件发送功能。完成系统的拓展能力。
 具体的代码实现暂时不考虑,因为有一个基础问题在里面,当前我发送邮件使用的126邮箱,如果使用126邮箱而不是使用自己的邮件系统来发送
 邮件时就会首页126邮箱服务器针对当个邮箱账号性能上的制约。 

 关于抽象工厂,我觉得这里的队列是可以用的,在获得线程的时候你不知道获得的是那个线程,你也不用知道获得的是那个线程,这样不影响你的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值