我们正在为电子商务卖家构建一个应用程序,以图形化方式显示来自销售,广告活动和其他指标的数据。我可以将应用程序组件分为三个不同的部分:
一个用户创建具有不同个性化仪表板的应用程序 指标的图表。用户可以对数据应用高级过滤器, 可视化图形上的数据过滤数据。
一组后台作业,将从第三项获取数据 不同平台的第三方API。工作必须安排在 每周,每天,每小时取决于作业类型。的 当我们将其构建为SAAS平台时,数据量将会很高。
某些数据无法通过API获得,因此我们必须运行 一些自动化任务(抓取工具)以手动下载它, 用户(可能正在使用硒)。
我们已经在 Ruby on Rails 中部分构建了第一部分。
我们需要一些建议来制定架构决策以开始开发,并提出以下问题:
微服务架构还是整体式?
我们是否应该使用ActiveJob和一些队列库或一些第三方后台作业处理程序在Rails中构建后台作业系统?后台作业将包括大量的API调用。该架构是多租户的,并且将被多个卖家使用。
如果我们选择使用微服务架构,那么微应用之间的通信媒介应该是什么?:
非常感谢您的宝贵时间。
答案 0 :(得分:2)
整体与微服务:
更好的选择是绝对微服务。使用微服务,您至少可以获得以下好处:
设计需要洞察力和团队合作精神。作为原始解决方案,我建议:
我建议使用RabbitMQ(在某些情况下更适合使用Kafka)。每个服务都订阅消息代理中的几个频道。当收到诸如“插入URL”之类的相关事件时,它会为其自身定义一个新任务并开始处理作业(例如,以该URL爬行网站)。之后,它可以向经纪人发送一个新事件,例如“网站已处理”,这样,其他服务将被告知,而每个人都知道以后该怎么做。
一些提示:
使用类似Docker的容器化。这样做时,您可以使用docker swarm或Kubernetes之类的工具。它们给您带来无价的好处:
使用微服务,您可以在编排和编排模式之间进行选择。使用编舞。
要回答您的问题: