电子邮件解析和处理architechture(Email parsing and processin

2019-09-17 04:21发布

确定即时通讯做处理上的每一个电子邮件沉重的过程。 可以说,在即时消息,他将自动回复说,他收到的电子邮件使人工智能的系统,但即时通讯仍然不知道从哪里开始。

的继承人什么IM思考

建筑1

问题 :

  1. 假设我们有1000封电子邮件/秒如何做一个邮件服务器,进出口或者邮件发送,davecot等工作完全?

  2. 可以parseandsavetomysql.py处理1000封电子邮件中,虽然管道时间吗? 这是如何工作的呢? BTW目前其工作正常,但我需要知道这一点。

  3. 是我的逻辑正确大约是工人吗? 或一个排队系统? 我试图看到resque和朋友,但我仍然只是不明白我们如何能够锁定一个会议让这个这个问题说:“嘿即时处理该文件不上email1.rawemail携手其他”我们如何能做到这一点正确的或者更简单的方法?

建筑2

问题?

  1. 书面
  2. 一个流行/ STMP服务器怎样才能收到1000封电子邮件/秒?
  3. 我们可以通过IMAP和POP的来信? becouse我们只是处理为POP3时,以选择对性能的正确方法? 还有,即时通讯目前使用PHP的一个imap_open

添加在

  1. 有没有能够解决同样的问题我一个很好的链接或博客文章?
  2. 请给我的项目,应用程序或解决我的问题的第三方链接?
  3. 如果有什么想法,请不要把它们写下来。

感谢你的帮忙,亚当·拉马丹

编辑我目前的架构

Answer 1:

像很多的“大画面”的架构问题,最好的解决方案是真正的其中之一...这要看情况。 你可以控制部署环境? 这是...你可以使用任何电子邮件服务器,你想,或者是你限制使用一个已经安装和托管? 你可以在同一台计算机的SMTP服务上运行代码? 这些问题,还有很多其他的应该考虑拿出一个(近)最佳架构。

鉴于这种情况,我会做一些假设,并提出了一些想法,我认为是值得探讨...

你应该寻找到一个高性能的邮件系统。 具体来说,看一看的RabbitMQ 。 RabbitMQ的是可靠的,高效的,基于异步传入事件工作量的分配是,他们专门在他们(在我看来,非常好)教程讨论的模式。

有了这样的邮件服务器,你必须接收传入电子邮件的一个过程。 最好这样做是因为SMTP过程的一部分,或至少非常接近它 - 尤其是与你所提到的工作负荷。 如果你没有其他选择,那么你如何使用cron来收集通过POP或IMAP邮件的想法都会有工作,现在。

然后,电子邮件收集过程会推送消息到RabbitMQ的队列。 (也许不是字面上的电子邮件本身,虽然这是可能的,但我想更喜欢到电子邮件有效地存储引用)。 然后运行订阅了一个名为消息队列多个工作进程。 然后RabbitMQ的(或任何短信服务,你作出决定)将在一个循环的方式分配这些消息给个人用户。 如果已加载,工作进程可以NACK信息,或发送自己的控制流信息返回给服务。 具有非常高的工作量(再次,就像你提出的),我会强烈建议某种管理过程中,保持对分布式系统的整体健康标签。 管理人员会收集运行时间统计(VERY为未来的发展规划,优化,以及整个系统的重构有用),并具有旋转和关闭新的工作进程的能力。 在你得到非常高的工作量,假设你的工作进程是稳定的,可以住很长一段时间没有记忆碎片等,然后就使用消息服务器来分配工作就足够了。

对于它的价值,我已经编写电子邮件处理器的一些经验(特别是XMAIL -一个,如果你刚开始你的项目,我建议,并已超过其早期阶段,大量的控制)。 另外,我目前使用的RabbitMQ搭建一个重大的科学计算网格中的多代理结果缓存系统。

反正...祝你的项目!



文章来源: Email parsing and processing architechture