我正致力于关键任务应用程序。 该应用程序使用第三方服务从纽约证券交易所,纳斯达克等不同的股票市场获取股票市场数据。 客户可以来到该应用程序并添加他们的投资组合(他们拥有哪家公司的股票)。 然后设置警报。例如。当AAPL价格在纳斯达克上涨至$ xxx以上时通知我。当纽约证券交易所的MSFT价格低于$ zzz时。
我是一个从第三方服务获取市场数据的cron工作,用户每隔1分钟添加一次(AAPL,GOOG,MSFT等)代码。 获取数据后,我获取用户创建的所有警报,然后通过电子邮件,短信,Pushover,Twitter,Facebook消息等发送通知。同时将该通知添加到应用程序的数据库,以便用户可以看到它在他们登录时在应用程序中。
现在由于这是时间密集型应用程序,因此无法获取数据可能会导致重大损失,因为客户正在为时间关键数据付费。
目前,我已将所有通知发送部分推送到Queue。工作人员(在我的服务器上)发送通知。 还有其他更好的方法可以将尽可能多的工作委托给第三方服务器吗? 您是否建议使用Iron.io worker,以便它也可以发送通知。 也可能从市场上获取数据。
谢谢!
答案 0 :(得分:1)
从结构上讲,有很多方法,但听起来好像你做出了正确的选择。使用queue to decouple通知过程中的生产者是有道理的。这样可以实现更合适的SOA架构,您可以独立地更改/更新/发展应用程序的各个部分,而无需担心紧密耦合的代码。
那就是说,你的问题主要是向第三方卸货。有第三方可以从代码中抽象出通知部分。我对它们并不是很熟悉,但有很多选择:PubNub,Pusher,Twilio,SendGrid,Mailgun,AWS SNS等。
我为Iron.io工作。我们有许多客户正在完成您正在努力实现的目标:创建成为小型服务的工作人员,并通过推送事件,计划任务或按需调用它们。这使您免于必须处理排队,路由,调度和工作/后台服务器容量。
我们很乐意帮助您从一开始就设计好东西,只需与support@iron.io联系。